百度加固逆向分析

最近一直在研究百度壳,发现网上这方面的资料非常少。所以我把自己做的发出来跟大家分享,共同学习进步。

下面开始:

一、init_array

我们发现init_array中存在多个函数地址,JNI_Onload为加密状态

动态调试在init_array上下断跟着进入一个大循环。发现他在此处对so进行了抹头操作。

之后遇到反调试崩溃退出。后来发现反调试检测了以下字段:

android_server

gdbserver

gdb

TracePid:

/proc/self/task/%s/status

isDebuggerConnected等。。

二、bypass

编写了一个loader程序调用该so中的JNI_Onload函数bypass壳代码和反调试。

此时R0为dlsym返回的JNI_Onload地址.我们跳转过去,按C将字节码转成代码,发现此时JNI_Onload已经解密。

这时候我们将so从内存中dump出来。将原来的so头部和section修复回去。代码的解密已经完成。

3、字符串解密

这时候我们发现so的字符串还是加密状态,每个字符串对应一个解密函数。

经过分析发现。解密算法是一样的,只是异或的偏移地址不一样。

分析完解密算法后,写了个ida py解密脚本。由于初次写ida脚本。借鉴了一些网上的代码。写的很糟糕。

运行之后可以看到字符串已解密成功。

之后就可以继续分析so对dex的保护过程,我目前还未分析完成。大家有兴趣的可以一起分析。

不管你是安卓逆向的初学者还是有一定基础的人,我们都需要时刻的进步,不停地去学习,大家可以加QQ群:321255184

或者直接点击链接:https://jq.qq.com/?_wv=1027&k=5VTVnLe 群里有不同层次但都热爱这项技术的人,还有教学老师可以问问题,可以互相学习、交流 提升自己的技能知识哦。

本文转载 侵权立删

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容