我假定对18222E214的调用永远不会执行,对吗?
sub rsp, 28h
mov byte ptr [rsp+27h], 0
mov al, [rsp+27h]
test al, 1
jz short loc_182C60C26
call loc_18222E214
这是我正在分析的一个模糊库。
更新
稍后在流指令中只对多个
mov dword ptr [rsp+20h], 7D9EAD41h
mov eax, [rsp+20h]
mov dword ptr [rsp+20h], 4071AA37h
mov eax, [rsp+20h]
nop //
mov dword ptr [rsp+20h], 0D6C6C2CDh
mov eax, [rsp+20h]
// so on and so forth
感觉就像垃圾堆。
1条答案
按热度按时间6ljaweal1#
不应该是这样的。您正在将值0加载到al寄存器中。
test al,1
设置符号、零和奇偶校验标志,就像执行了and
指令一样。如果您在al包含0时执行and al,1
,则会设置零标志。在您得示例中,
test
指令将设置零标志,因此将执行短跳转,而不执行jz
后面得call
指令.更新
既然你编辑了你的问题,说它看起来像是分支被占用,那么很可能有什么你没有抓住。可能性:
mov al, [rsp+27h]
指令之后的某个指令。[rsp+27h]
之后,但在您加载al
之前,将一些值移动到[rsp+27h]
中。loc_18222E214
。没有更多信息,无法解决您的问题。