在使用 IDA Pro 反汇编一个 x86 dll 后,我发现了这段代码(我在 pusdo-c 代码中添加的注释。我希望它们是正确的):
test ebx, ebx ; if (ebx == false)
jz short loc_6385A34B ; Jump to 0x6385a34b
mov eax, [ebx+84h] ; eax = *(ebx+0x84)
mov ecx, [esi+84h] ; ecx = *(esi+0x84)
mov al, [eax+30h] ; al = *(*(ebx+0x84)+0x30)
xor al, [ecx+30h] ; al = al XOR *(*(esi+0x84)+0x30)
jnz loc_6385A453
让我更容易理解:
mov eax, b3h
xor eax, d6h
jnz ...
在异或指令之后条件跳转指令如何工作?