.text
win32プロセスのセグメントダンプを作成するアプリケーションがあります。次に、コードを基本ブロックに分割します。基本ブロックは、常に次々に実行される一連の命令です(ジャンプは常にそのような基本ブロックの最後の命令です)。次に例を示します。
Basic block 1
mov ecx, dword ptr [ecx]
test ecx, ecx
je 00401013h
Basic block 2
mov eax, dword ptr [ecx]
call dword ptr [eax+08h]
Basic block 3
test eax, eax
je 0040100Ah
Basic block 4
mov edx, dword ptr [eax]
push 00000001h
mov ecx, eax
call dword ptr [edx]
Basic block 5
ret 000008h
ここで、そのような基本ブロックを関数にグループ化したいと思います。たとえば、どの基本ブロックが関数を形成するかを言います。アルゴリズムは何ですか?1つの関数内に多くのret
命令がある可能性があることを覚えておく必要があります。機能を検出する方法はfast_call
?