ARM 伪指令LDR.W的作用.

robin_ren 2012-12-20 10:49:47
新人提问,不怕笑话,请高手指点
IDA反编译的代码里有些像这样的指令如
.text:00022338 LDR R4, =(dword_5E674 - 0x22344)
...
.text:00022340 ADD R4, PC
...
.text:00022414 LDR R3, =0xFFFFFED0
...
.text:00022456 LDR.W R11, [R4,R3]
...
.text:00022428 BLX R11

首先第一个LDR给R4加载的是什么值啊,最终R11的函数地址是什么?
最好能给详细解释下,谢谢了

注arm平台,标记dword_5E674的地址就是0x5E674
环境ida6.1+android 3.2

...全文
1725 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
scfor123 2012-12-22
  • 打赏
  • 举报
回复
第一个R4的值是0X3C330,最后R11里存的是地址0X10005E540下的值。
robin_ren 2012-12-22
  • 打赏
  • 举报
回复
引用 1 楼 scfor123 的回复:
第一个R4的值是0X3C330,最后R11里存的是地址0X10005E540下的值。
多谢啦,我终于看明白了 纠正一下,arm在寄存器pc指向当前指令+8,所以最终结果是0x5e548 详情如下: .text:00022338 LDR R4, =(dword_5E674 - 0x22344) //R4=0x5E674 - 0x22344 =0x3c330 .text:00022340 ADD R4, PC //R4=R4+PC=0x3c330+(0x22340+8)=0x5E678 .text:00022414 LDR R3, =0xFFFFFED0 //R3=-0x130; .text:00022456 LDR.W R11, [R4,R3] //R11=*(R4+R3)=*(0x5E678-0x130)=*(0x5E548) .text:00022428 BLX R11 //call function ptr 其实IDA支持自动转换的,鼠标点第一句快捷键Q,就会自动变成 LDR R4, =0x3C330 这回涨姿势了...

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧