ステップ7


Code Injection: (PW=013370)

コードインジェクションは、ターゲットプロセスに任意のコードを埋め込んで実行させるテクニックです。
このチュートリアルでは、通常'hit me'ボタンをクリックするたびに体力が1ずつ減少していくところを、2ずつ上昇するようなコードを埋め込むことが目的となっています。

アドレスを絞りこんだら''Find out what writes to this address''機能を利用して、そのアドレスに書き込んでいる命令を見つけましょう。
値を1ずつ減らしているコードが見つかるので、''Show disassembler''ボタンでメモリビューに移動します。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step7_1.PNG)

その命令を選択した状態で''Auto Assembler''ウインドウを開きます。
(ショートカットキーCtrl+Aを利用するか、ToolsタブからAuto Assemblerを選択します。)
Templateタブをクリックして、''Code injection''を選択します。(ショートカットキーCtrl+Iでも可能)
オートアセンブラのインジェクションフレームワークが生成され、任意のコードを埋め込む準備が整いました。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (step7_2.PNG)

Allocは、コードケーブのためのメモリ領域を割り当てるコマンドです。
テンプレートでは2048バイトの領域を確保することになります。

"Place your code here"の下部に体力を2ずつ上昇するようなコードを書きます。
今回はADD命令を利用して2加算していくようにしましょう。
また、original code:にある1ずつ減少する処理は必要ないのでコメントアウトしておきましょう。

alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
 //place your code here
 add [ebx+00000460],2

originalcode:
 // dec [ebx+00000460]

exit:
 jmp returnhere

Tutorial-i386.exe+240E9:
 jmp newmem
 nop
returnhere:

Auto AssemblerのExecuteボタンでインジェクションを実行して下さい。
Hit meボタンをクリックすると、体力が2上昇し、次のステップ8へと進めるようになります。
最終更新:2014年07月10日 12:05