欺骗单步步过调试
DTDebug 调试工具快捷键
快捷键 | 作用 | 注释 |
---|---|---|
F7 | 单步步入 | 设置EFLAGS的TF位为1 调试CALL指令进入CALL内部 |
F8 | 单步步过 | 在指令下一行设置断点 |
F2 | 插入断点 | 修改当前内存的地址的值为 0xCC INT 3 |
call 0x005021D0
jmp 0x00502041
mov eax,1
mov ecx,2
mov edx,3
retn
一步一步运行至ret
然后进入jmp指令行
F7调试
EFL标志寄存器中有个TF位;如果TF置1,当前CPU就会进入单步执行模式。
F7就是设置EFL的TF位。
EFL F7调试中TF为的值
直接把call ···· ret 看做一行,直接跳转到jmp指令行
F8调试
反调试F8 就是破坏CALL指令的正常运行逻辑。
JMP PUSH POP
CALL 修改下一步执行地址EIP,CALL指令下一行指令地址入栈,ESP+4,当前堆栈保存下一行指令地址。
破坏ESP保存的地址,达到F8跟踪失败,F7还是可以正常追踪的。
以当前经验破坏F8调试,就是多个CALL指令嵌套,随机在一个CALL中使用修改正常的地址,其他都是用来消耗反调试人的耐心,以达到反调试的目的。
网友评论