【发布时间】:2015-05-16 23:40:32
【问题描述】:
我正在对 OllyDbg 中的应用程序进行一些内联修改,并注意到一些奇怪的行为。
这些是我写的指令,直接从调试器复制过来的:
2005FE35 4C DEC ESP
2005FE36 77 21 JA SHORT 2005FE59 ; 23 byte difference
为了清楚起见,我只修改了操作码(4C 77 21);其他一切都由 OllyDbg 自动解释,这就是我的困惑。这些指令应该减少 ESP 寄存器,然后执行 21 个十六进制字节的条件跳转。但是,地址 0x2005FE59 和 0x2005FE36 之间的区别不是 21,而是 23!
玩弄 21 个十六进制字节值,我观察到看似不稳定的结果。
2005FE36 77 20 JA SHORT 2005FE58 ; 22 byte difference
2005FE36 77 19 JA SHORT 2005FE51 ; 1B byte difference
2005FE36 77 17 JA SHORT 2005FE4F ; 19 byte difference
我指示向前跳转的十六进制字节数与地址偏移不匹配;它似乎总是在 2 点关闭。
这是怎么回事?
【问题讨论】:
标签: assembly x86 reverse-engineering machine-code ollydbg