我遇到了使用IDA在Windows中调试64位二进制文件的问题。通常情况下,在推送之后,RSP值应该被扣除8.但偶尔,从IDA我看到RSP只扣除了2,然后是8,用于下一次推送。
涉及的代码是
push rax
push rbx
push rsi
push rdi
我对x64环境很陌生,因此有人可以解释这种行为吗?
答案 0 :(得分:5)
你可能会被十六进制混淆。按8计数
0 8 10 18 20 28 30
你是否正在考虑并思考10 - 8 == 2
?因为它是0x10 - 0x8 == 0x8
。