首页
社区
课程
招聘
[旧帖] [求助]汇编指令求解 0.00雪花
发表于: 2013-7-19 16:38 1439

[旧帖] [求助]汇编指令求解 0.00雪花

2013-7-19 16:38
1439
在论坛看到了一个文章:http://bbs.pediy.com/showthread.php?p=1200121
(arm入门)反汇编分析一个arm函数调用的生死因果

反汇编分析-------------------------------------------------------------
sub:
1.    84a0:  4808        ldr  r0, [pc, #32]  ; (84c4 <printf@plt+0x6c>)
2.    84a2:  2100        movs  r1, #0
3.    84a4:  b510        push  {r4, lr}
4.    84a6:  4c08        ldr  r4, [pc, #32]  ; (84c8 <printf@plt+0x70>)
5.    84a8:  4478        add  r0, pc
6.    84aa:  447c        add  r4, pc
7.    84ac:  f7ff efc8   blx  8440 <dlopen@plt>
8.    84b0:  b138        cbz  r0, 84c2 <printf@plt+0x6a>
9.    84b2:  4906        ldr  r1, [pc, #24]  ; (84cc <printf@plt+0x74>)
10.   84b4:  4479        add  r1, pc
11.   84b6:  f7ff efca   blx  844c <dlsym@plt>
12.   84ba:  4905        ldr  r1, [pc, #20]  ; (84d0 <printf@plt+0x78>)
13.   84bc:  5863        ldr  r3, [r4, r1]
14.   84be:  6018        str  r0, [r3, #0]
15.   84c0:  4780        blx  r0
16.   84c2:  bd10        pop  {r4, pc}

看到下面的解释:
/   为6.做准备
//   必须对齐到(0,4,8,c),所以0x84ca变成0x84c8
4.   r4 = [0x84a6+4+32] = [0x84ca] = [0x84c8] = 0xc26

这里有三个问题:
1 为什么 [0x84a6+4+32]会有+4呢?我发现主要有操作pc的就要+4,是因为要pc自动往后么?
2 所以0x84ca变成0x84c8,为什么不是0x84cc,我理解的是栈都是从高地址到低地址的原因,所以地址要往下,对么?
3 [0x84c8] 怎么变成0xc26,跟帖主说的thumb指令集有啥关系么?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//