首页
社区
课程
招聘
[求助]逆向so的时候符号偏移问题
发表于: 2014-6-9 14:14 5738

[求助]逆向so的时候符号偏移问题

2014-6-9 14:14
5738
对armeabi的so进行分析的时候:
使用readelf读出来的符号偏移-> 0000213d    24 FUNC    GLOBAL DEFAULT    7 getpackagename
使用objdump反汇编出来的对应符号的代码段-> 0000213c <getpackagename>:  213c:  b508        push  {r3, lr}

这时我们可以看到虽然是相同的符号,但是两个工具读出来的偏移并不一样,readelf中看到是0x213d,而objdump中看到是0x213c。

而之后又针对x86的so进行分析,看到却是正常的,如下:
readelf的-> 00001280    47 FUNC    GLOBAL DEFAULT    7 getpackagename
objdump的-> 00001280 <getpackagename>: 1280:  53                     push   %ebx

不知道为什么会出现这个情况,但是据推测可能跟arm的指令集有关,有木有人研究过这个的来一起讨论下~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 29
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
可以看看 工具是否支持arm  arm对齐方式  和大小端模式 这些符号便宜应该都是工具根据头部查找 计算的吧 我的猜测
2014-6-9 15:53
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我用的是ndk里面自带的readelf和objdump,出来的结果就是这个样子。我自己也写了一个简单的工具解析,得到的也是上面的结果。而且手动分析二进制,发现符号偏移也跟代码首字节对不上号。。
2014-6-9 16:08
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
4
地址最后一位是0还是1用来标识是arm还是thumb指令
实际执行的都是&FFFFFFFE后的地址
显示不一样是两个工具的处理不一样
2014-6-9 17:25
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE='火翼[CCG];1291721']地址最后一位是0还是1用来标识是arm还是thumb指令
实际执行的都是&FFFFFFFE后的地址
显示不一样是两个工具的处理不一样[/QUOTE]
原来如此,也就是说系统在进行函数调用的时候自动帮忙做了这个&FFFFFFFE的操作啊,哪里有相关的资料么?
2014-6-9 18:27
0
雪    币: 277
活跃值: (3358)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
[QUOTE='火翼[CCG];1291721']地址最后一位是0还是1用来标识是arm还是thumb指令
实际执行的都是&FFFFFFFE后的地址
显示不一样是两个工具的处理不一样[/QUOTE]

就是arm与thumb区别,减去1就好
2014-6-9 18:54
0
游客
登录 | 注册 方可回帖
返回
//