Ldr.w r2, [r0, r8, lsl #2] 这种r2参数如何分析??


ni 一下,走到00ab54d6 mov r0, r10后,可以看到r2的值,但不知道是什么东西。。。。求大神指点


这个场景很典型,所以书的第二版里反复讲到了这种场景的处理情况。这里先剧透一下,对于这里的

ldr r0, [sp, #0xb0]

,你的下一步应该是找到一个

str rX, [sp, #0xb0]

。具体方法是在#0xb0上按“x”查看其交叉引用,

str rX, [sp, #0xb0]

应该是其中之一

多谢狗神指点!

不过我尝试了以下方法都搜索不任何内容。。。

选中#0xb0,按"X"键,无内容。
选中[sp,#0xb0] ,按"X",无内容.
选中sp,#0xb0,按"X",无内容。。

如下图

哦,我发现了一个问题,Hopper没有显示var而IDA显示了:

我说的这种方法仅适用于var_20,不适用于数值。这个问题我回头跟Hopper的作者发个邮件说一下,看看能不能解决

嗯!谢谢!!我装个虚拟机 弄个IDA试试

为啥要装虚拟机?IDA支持各种平台啊

狗神,我下载了个demo版的 mac IDA.
我选中var_38然后按"X"键,并没有出现str rx,[sp,#xxxx]的指令,如下图


还有函数名怎么都是sub呀?是没有分析完的原因吗?等分析了就可以看到真正的函名了?

如果是这样的话,那就说明某一个地方出现了

str rx, [sp', #xxxx]

类似的指令,注意,sp变化了,所以你要从

ldr r0, [sp, #0xb0]

开始倒推,找到每一个形如

str rx, [sp', #xxxx]

的指令,然后看sp +0xb0与sp’ + 0xxxxx是否相等,如果相等,这里就是写入的地方。这个场景会在第2版第十章出现,你可以先在自己的例子里走一遍看看,如果不懂,再看书