冬晨夕阳 发表于 2020-8-15 11:14:07

unidbg调用so生成抖音xgorgon



目前很多 App 的加密签名算法都在so文件中,强行逆向so的话可能会消耗大量时间和资源。

之前用 xposed 采用 hook 的方法从程序计算签名,但是需要模拟器或者真机运行这个应用,使用效率不高。
也用过 jtype 启动JVM,然后通过 native 对so文件进行调用,因为每次都需要启动JVM,所以效率也不高。

unidbg 他不需要运行 app,也无需逆向 so 文件,通过在 app 中找到对应的 JNI 接口,然后用 unicorn 引擎直接调用 so 文件,所以效率相对要高不少。



unidbg特点[*]模拟JNI调用API,可以调用JNI_OnLoad[*]支持JavaVM,JNIEnv[*]模拟系统调用[*]支持ARM32和ARM64[*]内联钩子(Inline Hook)[*]Android import hook[*]iOS 的一些hook工具 fishhook and substrate and whale hook[*]支持简单的控制台调试器,gdb存根,实验性IDA android调试器服务器,指令跟踪,内存读/写跟踪[*]支持iOS objc和Swiftunidbg环境配置
unidbg下载链接: https://github.com/zhkl0228/unidbg

IntelliJ IDEA可用于编辑unidbg源

下载完成之后示导入到 IDEA 中,当然你需要准备好java环境(jdk、maven)

https://img-blog.csdnimg.cn/20200807114855327.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70

选择Maven

https://img-blog.csdnimg.cn/20200807115254216.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70

等待加载完成之后,运行src/…/encrypt 中的TTEncrypt测试用例

https://img-blog.csdnimg.cn/20200807115738293.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70

如果控制台打印相关调用信息,说明已经导入成功。

https://img-blog.csdnimg.cn/20200807115839472.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70



加载libcms.so
看过这篇文章的应该已经知道生成xg函数的位置,所以不具体说了。《抖音xgorgon(0401)》

下面准备调用libcms.so文件中的 leviathan 函数

首先在 src/test/resources 目录下新建文件夹dylib,放入libcms.so文件

libcms.so 下载地址: https://download.csdn.net/download/weixin_43582101/12713664

https://img-blog.csdnimg.cn/20200807125043157.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70




然后我在 /unidbg/unidbg-android/src/test/java/com/sun/jna/ 目录下新建了 JniDispatch128.java文件

https://img-blog.csdnimg.cn/20200814202522646.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70#





JniDispatch128.java文件内容如下:

后面会修改更新该java文件内容,这里不是版主没有修改权限 = =,所以贴上链接 。



https://blog.csdn.net/weixin_43582101/article/details/108012579






“com/ss/sys/ces/a”需要调用函数所在的Java类完整路径,比如 a/b/c/d 等等,注意需要用/代替.“leviathan(II[B)[B”需要调用的函数名,名字是smali语法,可通过jadx等工具查看“vm.loadLibrary(new File)”so文件的路径,需要自行修改,最好为绝对路径



运行main方法即可查看生成出来的xgorgon了

https://img-blog.csdnimg.cn/20200814200254566.png#pic_center



more articles
更多douyin技术文章,可查看专栏:

https://blog.csdn.net/weixin_43582101/category_9529769.html



月色 发表于 2020-8-15 14:09:58

666学习了

nanxun 发表于 2020-8-17 10:48:18

看看

wang1234 发表于 2020-8-17 10:54:50

学习

thunder 发表于 2020-8-17 10:58:31

66

qwj520 发表于 2020-8-17 11:36:17

666支持

franky 发表于 2020-8-17 11:59:24

666

咕咕鸡 发表于 2020-8-17 16:03:05

看看

night_leton_bbs 发表于 2020-8-17 17:23:15

go

Aimer 发表于 2020-8-18 16:11:56

666
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: unidbg调用so生成抖音xgorgon