android注入so,有代码有命令

android下注入so的研究相对比较少,大名鼎鼎的LBE使用的就是ptrace注入so,至于后面的API hook我目前还没有开始分析。网上有不少大牛对LBE的逆向。

其实android下的so注入与linux的思路类似,我们所有的操作都是在Native C层实现的。它也是先ptrace目标进程,搜索符号表,在这里搜索符号表也并非完全是搜索内存,而是由一个计算公式,在下文大牛的代码里有。然后采用了植入shellcode的方法加载so。

代码地址http://download.csdn.net/download/ljhzbljhzb/3680780

编译方法http://www.yurushao.net/?p=756,补充一点,在android.mk文件中还需要添加语句LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

据我对一位大牛的请教得知,该代码在dlopen后会调用dlclose,如果你觉得注入so失败,那么要考虑修改shellcode,这个是arm的汇编。我是修改的跳转指令,在dlsym后不进行dlclose。还有并不是所有的so文件都可以注入成功。具体原因还在进一步分析中。

9.9修改:主意被注入的so必须使用绝对路径,或者基于被注入进程的相对路径,建议使用绝对路径。还有并不是所有ndk-build的so都可以注入,这可能碰到这种情况,说明你的so有问题,建议使用codesourcery编译so

你可能感兴趣的:(c,android,linux,api,汇编,hook)