私は.text
win32プロセスのセグメントダンプを作成するアプリケーションを持っています。次に、コードを基本ブロックに分割します。基本ブロックは、常に次々と実行される命令のセットです(ジャンプは常にそのような基本ブロックの最後の命令です)。ここでは例を示します:逆アセンブルされたCコードを関数に分割する方法は?
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
の機能を検出するには?