欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]自定义linker跑android_server

[原创]自定义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

这样子就跑起来了。

上传的附件 图片 1.png
图片 2.png
自定义linker.zip

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功