X



チート初心者スレpart2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001ネトゲ廃人@名無し
垢版 |
2016/04/26(火) 18:05:45.74ID:???
ミジンコ同士勉強していこうぜ

●定番解析ソフト
・デバッガ OllyDbg
http://www.ollydbg.de/
・プロセスメモリエディタ兼デバッガ スペシャルねこまんま57号
http://www.vector.co.jp/soft/win95/hardware/se254476.html
・プロセスメモリエディタ兼デバッガ+加速器 うさみみハリケーン
http://www.vector.co.jp/soft/win95/prog/se375830.html
●バイナリエディタ
・Stirling
http://www.vector.co.jp/soft/win95/util/se079072.html
・Binary Editor BZ ※4GBまで編集可
http://www.zob.ne.jp/~c.mos/soft/bz.html
●解析参考サイト
・Digital Travesia ※OllyDbg日本語化パッチあり
http://hp.vector.co.jp/authors/VA028184/

前スレhttp://schiphol.2ch.net/test/read.cgi/mmosaloon/1210219737/
ツールのクレクレ、売ります系はスルーで
0635ネトゲ廃人@名無し
垢版 |
2020/04/01(水) 12:25:07.06ID:???
>>633
うん、ありがとう
でその(ベースアドレス、オフセット、ポインタ)効率的な見つけ方を教えてほしいのだが…
もしくはそのやり方が乗ったウェブサイトとか(英語可)
0636ネトゲ廃人@名無し
垢版 |
2020/04/01(水) 20:15:50.04ID:7dyx+Fyo
0637ネトゲ廃人@名無し
垢版 |
2020/04/01(水) 20:15:56.67ID:7dyx+Fyo
0638ネトゲ廃人@名無し
垢版 |
2020/04/02(木) 06:27:21.65ID:???
>>631の2つめの動画とやってることは同じ
3つのポインターマップを使ってスキャンする場合は下記の手順

1.弾丸のアドレスを見つける
2.このアドレスのポインターマップを作る(マップ1)
3.「Find out what writes to this address」で弾丸のアドレスに書き込んでいる命令を見つける
  ポインターを絞り込むために何回かゲームを再起動する必要がある
  再起動するたびに弾丸のアドレスを見つけるのは面倒なので、
  書き込んでいる命令にAOB Injectionでスクリプトを組んで自動で弾丸のアドレスを検出できるようにする
4.ゲームを再起動する
5.再度、弾丸のアドレスのポインターマップを作る(マップ2)
6.ゲームを再起動する
7.弾丸のアドレスのポインターマップを作る(マップ3)
8.3つめの弾丸のアドレスに対してマップ1とマップ2とマップ3を使ってポインタースキャンをする(ここのやり方が少しややこしい)
9.8のポインタースキャンの結果をオフセットが少ない順にソートして上から順に再起動しても使えるかテストする

手順3は省いても出来るけど、手順5と7の前に弾丸のアドレスを手動で見つけなければならない

参考になる動画
https://www.youtube.com/watch?v=nQ2F2iW80Fk
0639ネトゲ廃人@名無し
垢版 |
2020/04/02(木) 06:36:26.27ID:???
1つ間違いがあった
手順3は書き込んでいる命令にスクリプトを組むのではなく、
弾丸のアドレスに常時アクセスしている命令に組む
そうすればスクリプトをオンにした瞬間に弾丸のアドレスを検出できる
書き込んでいる命令に組んだ場合は、銃を撃たないと検出できないのでひと手間増えることになる
0642ネトゲ廃人@名無し
垢版 |
2020/04/03(金) 00:56:06.10ID:tHqoZkIq
空遠
0643ネトゲ廃人@名無し
垢版 |
2020/04/03(金) 00:56:08.35ID:tHqoZkIq
空遠
0644ネトゲ廃人@名無し
垢版 |
2020/04/05(日) 00:34:38.44ID:???
Find out what accesses this addressでoffset調べて、
Generate PointermapでpointerMap1とpointerMap2作ってセーブして、
Compare results with other saved pointermap(s)2つのポインターマップを比較しつつPointers must end with specific offsetsで調べたオフセットを入力したが
まだ3000超~4000くらいの結果までしか絞れない
ここからゲーム内で死んだでリスタートしたり、ゲーム自体をrestartしても不変のbase addressとpointerを見つけるにはどうしたら良いんだろう
何か足りないのかな
0645ネトゲ廃人@名無し
垢版 |
2020/04/05(日) 08:10:12.19ID:???
オフセットの少ない順にソートすればいい
最大オフセット値を7でスキャンした場合、1番右がOffset 6になってるのでそこをクリックする
https://dotup.org/uploda/dotup.org2104559.png
複数のポインターマップを使ってポインタースキャンをすれば、ある程度安定的なポインターに絞り込まれてるはずので、あとはソートして上から順にテストするだけ。
0647ネトゲ廃人@名無し
垢版 |
2020/04/06(月) 11:51:20.92ID:???
GetProcAddressのlpProcName引数を1にすることって可能なの?
push 1
push handle
call GetProcAddress

的なアセンブリコードがあるんだけど
0663ネトゲ廃人@名無し
垢版 |
2020/04/11(土) 17:34:44.13ID:???
Valorant独自のパックシステムでパックされてるな。 あとやっぱりVMPでコードが保護されてる。俺は確認してないけど、タイマーによるデバッグのチェックもはいってるらしい。
そしてPUBGと同じようにポインタが暗号化されてる。他も誰かやってたら情報提供求む
0665ネトゲ廃人@名無し
垢版 |
2020/04/12(日) 12:25:54.05ID:???
ポインタの暗号化って見たことないんだけどxorで暗号化復号化されてるって感じか?
0666ネトゲ廃人@名無し
垢版 |
2020/04/12(日) 12:34:41.75ID:???
考えてみればxor暗号までせずともset時にポインタを1減らしてget時に1加算するというコードにしておくだけでも自動ポインタスキャンは防げるな
0669ネトゲ廃人@名無し
垢版 |
2020/04/13(月) 05:46:07.12ID:???
ポインタ暗号化されたところで簡単に復号できるから意味ないんだよなぁ...
0671ネトゲ廃人@名無し
垢版 |
2020/04/13(月) 14:53:59.32ID:???
>>669
手動ならそうだけどポインタスキャンを防げるだけでも一応意味はあるな
ただポインタを暗号化するって普通のコンパイラじゃそんな事出来ないだろうから相当手間かかってるな
0675ネトゲ廃人@名無し
垢版 |
2020/04/16(木) 10:22:33.19ID:???
>>672
暗号化するだけならまだしも復号化コードを挟まなきゃいけない訳だからコンパイル後にいじるのって限りなく不可能に近くないか?
0676ネトゲ廃人@名無し
垢版 |
2020/04/20(月) 18:23:31.11ID:???
VALORANTはいけそうなのか?
Riotのセキュリティチームって元チーターだから厳しそうだな
ハッカーフォーラムやDiscordなんかにもチーター装って潜入してくるみたいだし
0677ネトゲ廃人@名無し
垢版 |
2020/04/21(火) 18:02:10.72ID:???
ハッカーフォーラム潜ったところで、もうチート対策の限界にきてると思うから個別の対策はできても根本的な対策はできなさそう。
まあでもValorantはサーバー側でVisibleチェックして見えてなかったら座標データ送らないようにするらしいからこれでどこまで防げるのか興味ある
0714ネトゲ廃人@名無し
垢版 |
2020/05/08(金) 16:42:37.57ID:???
『Fortnite Battle Royale』起訴されたチーターがEpic Gamesと和解、14歳チーターの母親にも言及 | Game*Spark - 国内・海外ゲーム情報サイト  
https://www.gamespark.jp/article/2017/12/06/77200.html
今後同社の著作物を作成、執筆、開発、広告、宣伝、配布するなどの著作権侵害や再度のチート行為を禁ずる恒久的な差止命令を出し、違反した場合には罰金として5,000ドル(50万円)の支払いを要求しています。
0717ネトゲ廃人@名無し
垢版 |
2020/05/11(月) 04:46:30.59ID:GNvXha6J
NoxやブルースタックスとCEの環境だと「アクセスしている命令」や「書き込んでる命令」を検知出来ないのは仕様だと分かったのですが、エミュレータの問題でしょうか?
他に使えるエミュレータを探していますがありませんか…?
0718ネトゲ廃人@名無し
垢版 |
2020/05/16(土) 15:59:28.19ID:???
オフラインゲーム(RPGやアクションゲーム)などで数値の書き換えを行っても、すぐに元の数値に戻されるものはどのように書き換えを行えばいいのでしょうか。
静的アドレスを探してポインタを作るといいのでしょうか
0719ネトゲ廃人@名無し
垢版 |
2020/05/17(日) 09:03:14.94ID:???
すぐ戻される値は、そこにメモリライトブレークポイントを設置して
戻される値の元をたどる、そのうちに計算で使用する実際のパラメータが見つかるはず
0720ネトゲ廃人@名無し
垢版 |
2020/05/17(日) 09:24:22.75ID:???
実体じゃないってケースなら>>719が言うように更に探す必要があるけど、そこが実体であるならアセンブラを改変するしかない
mov [その数値へのアドレス], eaxみたいなループが走ってるからすぐに元の数値に戻されちゃう訳なのでnopで埋めるなり条件付きジャンプを挟むなりすればいい
0721ネトゲ廃人@名無し
垢版 |
2020/05/17(日) 13:38:16.71ID:???
>>719
メモリライトブレークポイントというのはcheatengineでも設置することができますか?
検索してもメモリライトブレークポイントというのがヒットしなかったのでもう少し調べてみます

>>720
実体かどうかわからないのですが、今見ているアドレスでは静的アドレスが検出されません
mov [その数値へのアドレス], eaxを探してみます

cheatengineで数値の書き換えと簡単なポインタの作成しかできないので
お二方の言っている作業が難しいのであれば知識的に無理かもしれません
0722ネトゲ廃人@名無し
垢版 |
2020/05/17(日) 16:23:16.27ID:???
指定したメモリが書き換えられたらブレークするというもの
どこで書き換えているのか調べたい時に使う
0723ネトゲ廃人@名無し
垢版 |
2020/05/18(月) 09:04:09.86ID:???
メモリライトブレークポイントはCheatEngineでは
Break on Write
Find out what writes this address
0724ネトゲ廃人@名無し
垢版 |
2020/05/19(火) 11:30:38.32ID:???
>>722>>723
ありがとうございます。

どうも実体じゃなく、その画面にいる時のみCTに反映されているのでメモリブレークで探してみます
0725ネトゲ廃人@名無し
垢版 |
2020/05/20(水) 14:57:41.19ID:???
Cheat Engineについて回答お願いします。
Bulletstorm: Full Clip Editionで日本語のまま残虐表現を有効にしたいのですが、まずは残虐表現のオン・オフの設定が可能な英語設定でアドレス抽出
0が残虐オフ、1が残虐オンという事がわかって、オフセットを設定するのにアドレスを監視させてポインタを検出できたはいいものの
そのポインタ(2D6A48E0)でアドレス検索をしても一つもヒットしません
これが出来たとして残虐表現有効のまま日本語設定でプレイできるかわかりませんが、通常の方法ではオフセットを割り出すのは不可能なのでしょうか?

以下監視結果
RAX=00000000
RBX=2D6A48E0
RCX=823B4800
RDX=00000069
RSI=00000008
RDI=00000008
RBP=823B4800
RSP=006DEE20
RIP=1405A0EB3

Probable base pointer =2D6A48E0

Label1
1405A0EAC - mov byte ptr [rbx+08],01
1405A0EB0 - mov [rbx+0C],eax
1405A0EB3 - mov eax,00000001
1405A0EB8 - jmp 1405A0E67
0726ネトゲ廃人@名無し
垢版 |
2020/05/20(水) 18:21:46.32ID:???
>>725
1405A0EAC - mov byte ptr [rbx+08],01
のrbxがどこから持ってきたかアセンブラを更に遡ってみては?
手っ取り早い方法なら2D6A48E0-300 ~ 2D6A48E0って感じの範囲検索をして出てきたもののアクセス監視するとか
0727ネトゲ廃人@名無し
垢版 |
2020/05/20(水) 22:17:59.89ID:???
>>726
Cheat Engineというよりアセンブリ作業自体今回初めてやるのでRBXの出所を探るのに参考になるサイトを探しているのですが
日本語サイトは初歩の部分までしか載ってない所しか見つからないし、英語サイトは目的となる事を書いてあるのか判断するのに時間がかかる
https://fearlessrevolution.com/threads/11173/にあるBulletstormのチートテーブルの中を見てもスクリプトで組まれてて理解不能な状態です
0728ネトゲ廃人@名無し
垢版 |
2020/05/21(木) 15:54:17.97ID:???
Bulletstormはunreal engineだからUIとかスクリプトで書かれていると思う
ブレークで止まるのは、例えば値をセットするルーチンとかなので
1405A0EB0は、他の値をセットする時にもブレークするはず
こういうのは大本たどるのが大変
0729728
垢版 |
2020/05/21(木) 18:57:48.05ID:???
Bulletstorm安かったから、仕事放置で解析してみた。

ゴアフラグを突き止めるまでは725の方法でおこなう。
該当フラグを弄ってみたが結果が反映されないので
対象アドレスに、Break on accessをセットする。

設定画面を抜けたりすると

StormGame-Win64-Shipping.exe+A78CF7 - mov ecx,[rax+0C] ここ
StormGame-Win64-Shipping.exe+A78CFA - mov eax,00000001 { 1 }
StormGame-Win64-Shipping.exe+A78CFF - mov [r13+00],ecx

がブレークする。
アセンブラを読むと、フラグをr13のアドレスに格納しているので
r13が示すアドレスにフラグを格納するので、ここにBreak on accessをセットする。

Runで処理をすすめる。

StormGame-Win64-Shipping.exe+DA4E4E - cmp [rsp+68],edi ここ
StormGame-Win64-Shipping.exe+DA4E52 - setne dil 
StormGame-Win64-Shipping.exe+DA4E56 - mov [StormGame-Win64-Shipping.exe+17B7790],edi { [00000001] }

がブレークする
StormGame-Win64-Shipping.exe+DA4E56の命令は、固定アドレスを示しているので
ゴアフラグの実体の可能性が高い。
0730ネトゲ廃人@名無し
垢版 |
2020/05/21(木) 19:02:00.07ID:???
このままトレースを続けると

StormGame-Win64-Shipping.exe+DA4E9A - ret

の時点でRAXは1、StormGame-Win64-Shipping.exe+17B7790の値は1のようだ。
とりあえず、ここがゴア条件だと予想しておく。

アセンブラ画面を上に戻していくと、この関数は以下から始まっている。

StormGame-Win64-Shipping.exe+DA4D70 - push rdi

言語を日本語にしてゲーム再起動。

StormGame-Win64-Shipping.exe+DA4D70にブレークポイント設置。

キャンペーンを開始するとレベル開始直前でブレークする。

ステップ実行しながら
StormGame-Win64-Shipping.exe+17B7790に1、関数を抜けるときにEAXが1に
なるように実験してみると、日本語モードでもゴア表現が有効になった。

実験結果をコードに反映するとこんな感じか?

StormGame-Win64-Shipping.exe+DA4D90 - xor ebx,ebx
StormGame-Win64-Shipping.exe+DA4D92 - inc ebx
StormGame-Win64-Shipping.exe+DA4D94 - mov [StormGame-Win64-Shipping.exe+17B7790],ebx { [00000000] }
StormGame-Win64-Shipping.exe+DA4D9A - xor eax,eax
StormGame-Win64-Shipping.exe+DA4D9C - jmp StormGame-Win64-Shipping.exe+DA4E86 ココも変えたので注意
0731ネトゲ廃人@名無し
垢版 |
2020/05/30(土) 20:55:14.32ID:???
>>730
横から失礼します
どうやって解析能力を身に着けたのでしょうか?
右も左も分からない状態なので参考にしたいです
0732730
垢版 |
2020/05/31(日) 10:58:10.22ID:???
人の真似から初めて解析に慣れるのが良いかと思います。。
Bulletstormの例でも、スレみて真似するだけでも得る物があるハズ
たぶん、???な部分も出るのでソコを自分で調べるなりしてみるのが
勉強になったりします。
今は、この様な話題が出来る場はほぼ無いです。
ここでもマシな部類なので、私が解る範囲でコメント出来るときはしています。
0733ネトゲ廃人@名無し
垢版 |
2020/06/01(月) 09:58:34.97ID:???
解析能力はなんだかんだでプログラミング能力に比例して伸びていく
なぜならプログラミングが出来るとアセンブラを見れば大体「ここはあの関数かな」と推察出来るようになる
とは言えPythonとかRubyとかJsみたいな動的型付け言語だとこの話は当てはまりづらくて、
最低でもJavaやC#のような静的言語、C/C++なら完璧に解析力とプログラミング力はリンクする
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況