我刚刚在IDA Pro中打开了一个文件,我发现了一些看起来完全没用的代码。但是,我认为它可能有一些用处。 sub eax,0
不是从eax中减去0吗?
代码:
hinstDLL= dword ptr 4
fdwReason= dword ptr 8
lpReserved= dword ptr 0Ch
mov eax, [esp+fdwReason]
sub eax, 0
jz short loc_10001038
答案 0 :(得分:13)
sub
指令设置标记(OF
,SF
,ZF
,AF
,PF
和CF
,根据{{3}}) - mov
指令没有。仅当设置了零标志(jz
)时,ZF
才会跳转,因此如果您想根据eax
中的值跳转,则必须正确设置该标志。
答案 1 :(得分:6)
如果结果为零,sub
指令将设置零标志。在这种情况下,这意味着如果eax为零,则将设置零标志。
因此,这三条指令会检查[esp+fdwReason]
是否为零,并在这种情况下跳转到loc_10001038
。