首页
社区
课程
招聘
[求助]arm指令BL指令对应的机器码问题????
2014-10-23 15:28 10776

[求助]arm指令BL指令对应的机器码问题????

2014-10-23 15:28
10776
在论坛里面找到大神说的方法
(目的地址-源地址)/4-2
按照这个办法,为什么下面的不行呢,下面是我ida中的
_text:000E8070 1F F0 F4 FD                 BL              sub_107C5C

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
打赏
分享
最新回复 (6)
雪    币: 138
活跃值: (460)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Nermor 1 2014-10-23 16:24
2
0
(目的地址-源地址 -8)/4
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2014-10-23 17:43
3
0
SrcAddr + (x << 2 + 8) = DstAddr

x = ((DstAddr - SrcAddr) - 8) >> 2
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SnowNight 2014-10-23 17:56
4
0
你好啊,安装你的这个方法(107C5C-E8070-8)/4=0x7EFB 怎么不一样啊
雪    币: 335
活跃值: (253)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
peterchen 2014-10-24 15:34
5
0
看一下我以前实验:
计算B/BL偏移
目标地址-(当前地址+8) >>2

.text:00637C80 E5 34 42 EB       BL      __mulsf3
.text:016C501C                   EXPORT __mulsf3

016C501C-(00637C80+8) >>2
00637C80+8=637C88
016C501C-637C88=108D394
108D394 >>2 = 0x4234E5
高低对换:
E5 34 42 -->对换之后偏移
EB ->BL
雪    币: 335
活跃值: (253)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
peterchen 2014-10-24 15:36
6
0
关于ARM的B,BL跳转指令:
假设跳转指令处的地址是A,跳转目标处的地址是B.
B,BL指令保存的是偏移地址,这个地址的计算方法是:
1.B-(A+8).A+8是因为ARM的流水线使得指令执行到A处时,PC实际的值是A+8.
2.第一步得到的值是4的倍数,因为ARM的指令是4对齐的,即最低两位为00.于是将这个值右移两位.
3.得到最终偏移

执行时:
1.取出偏移
2.左移两位
3.加入PC,这时PC的值刚好为目标处的地址值,即目标地址指令进入取指,流水线前两级被清空
http://www.decell.org/article.asp?id=2
雪    币: 51
活跃值: (668)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
金奔腾 2016-8-17 09:05
7
0
遇到同样的问题,看看
游客
登录 | 注册 方可回帖
返回