昨天在逆向某App
的时候,发现有个加密工具类中的native
方法是用C语言
编写的,隐藏在so
文件中。某大佬推荐逆向工具unidbg
,能在pc
端直接调用so
文件中的函数,最终成功解决了问题。
逆向工具之unidbg目录
一、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
)
①、解压压缩包
②、打开IDEA
,导入解压的项目
浏览到刚刚解压好的文件夹
后面一路无脑next
即可。。。
第一次导入此项目会自动下载一些jar
包,和网速、maven
服务器有关,耐心等待吧。
3、测试unidbg
项目中的src/test/java/com/xxxx/frameworks/core/encrypt
路径中有一个TTEncrypt
测试用例,直接执行其中的main
方法。
控制台打印相关调用信息,说明项目导入成功。