その時々

その時々で違うんです。特に決まっていないんです。

リバースエンジニアリング 第5章に突入

リバースエンジニアリングも第5章に突入したわけですが、
第5章からImmunity Debuggerを使うことなりました。

早速、手強いです。

まずは、インストール。
http://debugger.immunityinc.com/
からDownloadしてインストールするだけです。
結構簡単。
ですが、そのままですと、
「Assembleというメソッドはない」とエラーが出る訳です。
リバースエンジニアリング読書記録

さて困りました。

とりあえずPythonインタプリタでimport immlibをすると、
debuggerがないって言われるので、これはもう無理やりパスを通せとのことなのかと。

というわけで
C:\Python27に
path.pth
というファイルを作り

C:\Program Files\Immunity Inc\Immunity Debugger
C:\Program Files\Immunity Inc\Immunity Debugger\Libs

こういう内容にしたんです。

これでimmlibもdebuggerもインポート出来たんですね。
ところが、どうも
AssembleというオブジェクトはDebuggerには、ないんですよ。

assembleならあると、、、

Immunity Debuggerのバージョンが変って、いろいろと変ったのかな。

というわけで、動作するようにサンプルコードを修正しました。

findinstruction.py

from immlib import *

def main(args):

    imm = Debugger()
    search_code = " ".join(args)
    search_bytes = imm.assemble( search_code )
    search_results = imm.search( search_bytes )
    
    for hit in search_results:

        # このアドレスが属するメモリページを求め
        # それが実行可能であることを確認
        code_page = imm.getMemoryPageByAddress( hit )
        access = code_page.getAccess( human = True )


        if "execute" in access.lower():
            imm.log( "[*] Found: %s ( 0x%08x)" % ( search_code, hit ))
    return "[*] Finished searching for instructions, check the Log window."

このファイルをImmunity DebuggerをインストールしたフォルダのPyCommandフォルダに入れます。

あとは、
Immunity Debuggerを起動し、[File]-[Open]からnotepad.exeとか適当に開いて、
コマンドバーに!findinstruction jmp esp
と打って実行!

見事出来ました。