ステップ8

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step8.PNG)

Multilevel pointers: (PW=525927)

このステップでは、マルチレベルのポインタの扱い方について説明します。
ステップ6では、単にレベル1のポインタで最初に見つかったアドレスがそのままベースアドレスになっていましたが、ステップ8では、レベル4のポインタを扱います。
これは体力値のアドレスを指すポインタを指すポインタを指すポインタを指すポインタを指すポインタであることを表します。

基本的にはステップ6と同じように進めていきます。
値にアクセスするアドレスを見つけて、そのアドレスからベースポインタとオフセットを辿って行きます。

まず、体力値を参照するポインタとそのオフセットを探します。
'Find out what accesses this address'で'Change Value'ボタンを押した時にアクセスする命令を調べると次のようになります。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step8_1.PNG)

どちらの命令も近くにベースアドレスらしきものが見当たらないのでメモリスキャンでポインタの参照元を辿っていきます。
mov [esi+18],eax とあるので、ここでベースポインタはESIレジスタに格納されていてオフセットは+18hであることが分かります。
このオフセット値は後で利用するので記憶しておきましょう。

00424ABB - B8 A00F0000 - mov eax,00000FA0
00424AC0 - E8 2B7DFEFF - call Tutorial-i386.exe+C7F0
00424AC5 - 89 46 18 - mov [esi+18],eax <<
00424AC8 - 8D 45 D4 - lea eax,[ebp-2C]
00424ACB - E8 90EFFDFF - call Tutorial-i386.exe+3A60

EAX=0000011C
EBX=000A5790
ECX=00000000
EDX=0000011C
ESI=00115A70
EDI=00000001
ESP=0169F49C
EBP=0169F4D4
EIP=00424AC8
ESIレジスタの内容を読むとこの例では、ESI=00115A70なので00115A70hを検索します。
このとき、検索する値が16進数になっているのでHexのチェックボックスにチェックを入れて検索して下さい。
※チュートリアルのたびにポインタの値は変わることに注意して下さい
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step8_2.PNG)

見つかったアドレスに対して上記の操作を繰り返します。
スキャンした際に2つ以上のアドレスが見つかってしまった場合には、'Change Value'ボタンを押した時にアクセスがあるかどうかでどちらが正しいアドレスであるかを判断しましょう。

最終的にはベースアドレスが見つかりますが、これはたいてい静的アドレスになっています。
なお、静的アドレスの場合は検索結果のリストで緑色に表示されます。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step8_3.PNG)

チートテーブルでマルチポインタを参照します。
'Add Address Manually'から'Pointer'にチェックをいれて、'Add Offset'でオフセットを追加します。
あとは記録しておいたオフセットから順にポインタを参照していきます。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step8_4.PNG)

'Change Pointer'ボタンをクリックするとポインタと体力値が変更されるので、これを5000に固定して'Change Pointer'ボタンをクリックすれば、ステップ9に進めるようになります。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step8_5.PNG)
最終更新:2014年07月10日 12:10