当你习惯了python的便捷,在逆向安卓是碰到so库的加密分析时,除了使用ida进行函数分析之外,so库的调用也成了一个问题,尤其是遇到只有arm架构的so时,明显感觉到头疼
so库调用方式尝试
1.重新编写一个app进行so库的调用 (不推荐)
痛点:
- 前期开发费时费力,
- 开发完毕后只能运行在真机或者模拟器,
- 如果要执行定时任务相较python或者javaweb而言效率和性能相差太大
2.使用javaweb的形式进行调用(局限性太大,若熟悉树莓派可优选)
优势:
- 调试方便
- 可拉进服务器直接定时执行
痛点:
- 如果使用windows的服务器那么只支持x86的so库, linux的服务器同样不支持arm的so库,即便使用docker也无法运行arm的容器, 除非服务器系统是arm架构, 目前现存的arm系统除了android之外估计都在树莓派了
3.使用python调用so库(若熟悉树莓派可优选)
痛点:
- 和上面的问题一样, 不支持arm的so库
4.使用 python第三方库 AndroidNativeEmu 调用so(观望)
简介: AndroidNativeEmu是基于Unicron实现的一个指令解析器, 让您能够使用python跨平台模拟安卓虚拟机环境
使用资料参考:
痛点:
- 该库目前只支持简单的函数调用,很多功能还未实现,期待后期的发展
5. 使用unidbg
(推荐)
优势:
- 虚拟jvm环境,支持arm32和arm64的so库
- 弥补了上面javaweb的不足
痛点:
- 该库的原理是从so中寻找函数,面对动态加载的so比较麻烦, 不如原生System.loadXXX加载方便
总结
有条件折腾的话还是选择树莓派吧
小记
- 最近在ubuntu x86 32位的系统上启动springboot调用so库,出现以下问题:
1 | /tmp/lib/jniLibs/libkey.so: libstdc++.so: cannot open shared object file: No such file or directory |
由于自身能力有限,对C语言不熟,暂时搁置, 来日再处理
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站