看雪论坛
发新帖
1

[原创]自定义linker跑android_server

lcweik 2015-11-26 20:01 8451
自定义linker
如大家如知,ida 6.6版的android_server在android5.0下运行时,会报错PIE,

这个是什么意思呢?
在android 2.x及4.0或更远古时代,系统在执行一个elf文件时,这个elf文件是固定加载到某个内存位置的。而后来llvm的出现,使得编译出来的elf文件,可以加载到内存中的任意位置,这种就叫pie。至5.0后,android系统就限死了,必须只能加载pie的文件,也就是说,使用gcc编译的固定基址的elf文件就再也不能执行了,而不幸android_server就是使用gcc编译的固定基址的elf文件。所以大家就用不了android_server去调试android5.0了,这也是art的加固技术,至今仍为神秘的一个重要原因。
想调试android 5.0,可是没有正版6.8怎么办,难道说叼丝就不能学art了吗?
不行,叼丝不认命。我发现了,一种自定义linker去执行非pie文件的方法。

Linker是什么?
Linker就是/system/lib/linker,它是进程启动时第一个加载的模块,它负责管理elf可执行文件以及各个so文件的加载执行,还参与了调试的一些东西。通俗地说,它是一个elf文件的解释器。它可以加载elf可执行文件及so动态库。

在android 5.0下,不能执行android_server是因为android5.0自带的linker不支持加载非pie的elf文件,但如果自己实现一个可以加载pie的linker,不就可以解决这个问题了吗?对的,就是酱紫,补上自己的自定义linker在附件.

使用自定义linker加载android_server ,
步骤如下:
将b 与android_server拷到5.0设备的/data/local目录下
在/data/local下执行./b android_server

这样子就跑起来了。

同样,群号282215163
上传的附件:
最新回复 (14)
mingxuan三千 2015-11-26 20:44
2
楼主今天生猛呀 连续放招
wangzehua 2015-11-26 22:19
3
感谢楼主,好好学习下
1
dalerkd 2015-11-26 22:55
4
不得不顶,感谢分享
owenbsli 2015-11-27 12:00
5
牛逼,楼主
qenglish 2015-12-1 21:02
6
oday。。。呵呵。。这个。屌丝,,。。。。丝=毛   ,很黄很暴力呀。看雪大哥不禁止一下
chago 2015-12-8 16:08
7
感谢分享干货!攒个
wuwanga 2016-3-18 16:17
8
感谢楼主,学习了
kxxiapeng 2016-5-11 17:09
9
怎么写的呀?源码能发我一份吗?pie这东西台讨厌了,进程重启了地址都变了。
2957102586@qq.com , 不胜感激!
pregnant 2016-5-12 07:56
10
真是牛逼哄哄啊
1
大王叫我挖坟 2016-5-20 22:18
11
好给力啊,群主好人多谢分享
hhhaiai 2016-11-9 21:23
12
不错。谢谢分享。。
cjkillyes 2016-11-9 22:04
13
期待楼主把源码发一下
Loopher 2016-11-9 22:14
14
lz这么6
ID蝴蝶 2017-3-18 19:21
15
谢谢楼主。
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.011, SQL: 8 / 京ICP备10040895号-17