返回
从IDA分析Anti-jap记录中发现的关键问题
闲谈
2024-01-05 03:28:12
在利用IDA Pro分析Anti-jap时,记录下一些关键问题,以便在进行反向工程时参考。
伪代码生成
IDA Pro的输出窗口默认显示为汇编代码,如下所示:
sub_401000:
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
cmp eax, edx
jl short loc_401013
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
cmp eax, edx
jl short loc_401013
jmp short loc_401013
loc_401013:
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
cmp eax, edx
jle short loc_401026
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
cmp eax, edx
jle short loc_401026
jmp short loc_401026
loc_401026:
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
cmp eax, edx
jge short loc_401039
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
cmp eax, edx
jge short loc_401039
jmp short loc_401039
loc_401039:
retn
要生成伪代码,请按F5。IDA Pro将自动将汇编代码转换为更易读的伪代码,如下所示:
int __cdecl sub_401000(int arg_4, int arg_8)
{
int v2; // eax@3
int v3; // eax@7
int v4; // eax@11
int v5; // eax@15
if ( arg_4 < arg_8 )
{
v2 = arg_4;
if ( arg_4 < arg_8 )
{
v3 = arg_4;
if ( arg_4 < arg_8 )
{
v4 = arg_4;
if ( arg_4 < arg_8 )
{
v5 = arg_4;
if ( arg_4 < arg_8 )
return arg_4;
}
}
}
}
return arg_4;
}
寄存器分配
IDA Pro会自动分配寄存器给变量。在以下汇编代码中,eax寄存器被分配给变量arg_4:
mov eax, [ebp+arg_4]
内存管理
IDA Pro会跟踪内存引用。在以下汇编代码中,IDA Pro识别出[ebp+arg_4]引用了内存中的一个地址:
mov eax, [ebp+arg_4]
函数分析
IDA Pro可以分析函数并确定其调用图。在以下示例中,IDA Pro确定sub_401000函数调用了sub_401010函数:
call sub_401010
通过记录这些关键问题,可以在利用IDA Pro分析Anti-jap时节省大量时间和精力。