rbp
的状态作为堆栈帧的偏移量的跟踪,大概是因为其他间接。 (我们将rsp
复制到rax
复制到rbp
,而不仅仅是从rsp
复制到rbp
)我希望上面的示例看起来像这样: />
但是,正如人们期望的那样,如果将
3Fh
的类型更改为堆栈偏移量,则会得到以下信息:mov rax, rsp ; Set rax at the start of the function
...
lea rbp, [rax-5Fh] ; Shortly afterward, set rbp as the frame pointer at a nonstandard offset
...
mov [rbp+3Fh], rcx ; Reference all stack offsets from rbp for the rest of the function
...
显然是不正确的。我有两个问题:
是否可以生成所需的输出?
如果没有,通常如何处理?
解决方案我知道:
我可以为堆栈框架创建一个结构并指定偏移量增量(有时还针对负偏移量进行调整)。缺点是我必须为我分析的每个堆栈框架创建一个结构,并且也没有交叉引用。
我只能在堆栈框架中使用不正确的偏移量。这将为我提供交叉引用,但我希望在触摸存储返回地址的偏移量
r
时,事情会中断。也相关:我正在使用IDA Pro 6.2。 br />
#1 楼
Alt+P
将显示Edit function
屏幕。确保选中
BP based frame
,然后在标有0x5F
的框中输入值Frame pointer delta
。评论
做到了,谢谢!正数0x5F是正确的增量。
–user1354557
14-10-23在15:41
评论
您可以分享/链接到二进制样本的任何机会,想亲自检查一下:)