我正在尝试附加调试一个具有“反调试”功能的程序。当逐步通过时,它似乎逐步通过了最终只是循环的 call 和 jmp 命令的迷宫。循环仅在逐行执行并且我试图理解它时发生。
不知道是不是加了混淆,为什么会出现这样的行?
014D658C 0FCA BSWAP EDX
014D658E 0FCA BSWAP EDX
如果我理解正确,BSWAP 只会反转位,但连续两次应该保持 EDX 寄存器不变。我还注意到其他奇怪的事情,比如比较寄存器,然后似乎对结果没有做任何事情(之后没有跳转调用或 setcc 或类似的东西)
014D657C 66:81FF 8408 CMP DI,884
014D6581 30D8 XOR AL,BL
014D6583 8D96 1A30A4DD LEA EDX,DWORD PTR DS:[ESI+DDA4301A]