昨天在逆向某App的时候,发现有个加密工具类中的native方法是用C语言编写的,隐藏在so文件中。某大佬推荐逆向工具unidbg,能在pc端直接调用so文件中的函数,最终成功解决了问题。
逆向工具之unidbg目录
一、`unidbg`引入
二、`unidbg`概述
三、`unidbg`使用姿势
1、下载`unidbg`项目
2、导入到IDEA中
①、解压压缩包
②、打开`IDEA`,导入解压的项目
3、测试`unidbg`
4、运行自己的`so`文件
①、编写`EncryptUtilsJni`类
②、参数说明
③、执行结果
四、分析`so`文件的`IDA`工具
五、总结
一、unidbg引入
逆向某App,反编译dex得到Java代码,但是有两个加密工具类中的方法放到so文件中。
方法的实现用的C语言编写的,放在了so文件中。在Java中,动态加载so文件,使用native方法的形式隐藏了方法的方法体。难道伟大的逆向工程就此放弃?这显然不符合我们技术人的性格,肯定要想方设法弄出来。
二、unidbg概述
unidbg 是一个基于 unicorn 的逆向工具,可以直接调用Android和iOS中的 so 文件。项目的GitHub地址为https://github.com/zhkl0228/unidbg
我使用unidbg,直接调用libbaseEncryptLib.so、libencryptLib.so中的方法,这样就不用想破脑袋去逆向so文件了。
备注: \color{red}备注:备注:so文件是unix系统中的动态连接库,属于二进制文件,作用相当于windows系统中的.dll文件。在Android中也可调用动态库文件(*.so),一般会将加密算法、密码等重要的方法、信息使用C语言编写,然后编译成so文件,增强了软件的安全性。
三、unidbg使用姿势
1、下载unidbg项目
下载地址:https://github.com/zhkl0228/unidbg
2、导入到IDEA中
unidbg项目用Java编写,并且上面下载的是一个标准的maven项目。我这里演示导入到IDEA中,如果你熟悉其它的IDE,也可以自己去弄。(顺带一提,如果你之前没接触过Java语言,要确保电脑安装好JDK、maven)
<