-
-
[原创]自定义linker跑android_server
-
发表于:
2015-11-26 20:01
20778
-
[原创]自定义linker跑android_server
自定义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
[课程]FART 脱壳王!加量不加价!FART作者讲授!