unidbg调用so生成抖音xgorgon Android逆向 原创

冬晨夕阳 2月前 2716


目前很多 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和Swift

unidbg环境配置

unidbg下载链接: https://github.com/zhkl0228/unidbg

IntelliJ IDEA可用于编辑unidbg源

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

在这里插入图片描述

选择Maven

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述


加载libcms.so

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

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

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

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

在这里插入图片描述

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

在这里插入图片描述


JniDispatch128.java文件内容如下:

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


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


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

在这里插入图片描述


more articles

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

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


最新回复 (62)
  • Final 6小时前
    0 63
    嘿嘿,学习时间又到了
  • vistart 4天前
    0 62
    1
  • 0 61
    学习了
  • zzzzqxp 5天前
    0 60
    666
  • imcczy 6天前
    0 59
    谢谢分享
  • yuexi 7天前
    0 58
    1
  • qaingge 7天前
    0 57
    哈哈哈
  • jasonxgw 8天前
    0 56
    666
  • 哈哈 8天前
    0 55
    6
  • fu9852531 10天前
    0 54
    666
  • strive 10天前
    0 53
    666
  • bad 10天前
    0 52
    666
  • mmking 20天前
    0 51
    6666
  • freeman 20天前
    0 50
    6666
  • lang 20天前
    0 49
    666
  • ejiaogl 24天前
    0 48
    想看看有没有iOS的调用例子
  • scrapy_he 25天前
    0 47
    666666
  • 0 46
    已经还原unidbg 调用的xg04算法-
  • 0 45
    666
  • qwerty 27天前
    0 44
    6666
  • haonit 28天前
    0 43
    6啊
  • 何老弟 28天前
    0 42
    6666
  • tangxu 1月前
    0 41
    1111
  • 0 40
    666666666666666666666666666666666
  • boris 1月前
    0 39
    666
  • 0 38
    666
  • 0 37
    666
  • maluya 1月前
    0 36
    谢谢大佬
  • lol_olo 1月前
    0 35
    学习学习
  • 0 34
    6666
  • 0 33
    6666666666
  • xydyy1 1月前
    0 32
    666
  • zx 1月前
    0 31
    学习来了
  • 0 30
    66666
  • feng504x 1月前
    0 29
    666
  • zenghuan 1月前
    0 28
    这个就很666666666
  • a10078 1月前
    0 27
    66666
  • 0 26
    学习
  • 789十 1月前
    0 25
    666
  • franics 1月前
    0 24
    666学习了
  • wbk 1月前
    0 23
    看看
  • 七仔 1月前
    0 22
    前来学习
  • 1月前
    0 21
    谢谢大佬分享
  • a10078 1月前
    0 20
    谢谢大佬分享
  • 0 19
    11111javascript:history.back();
  • qwj520 1月前
    0 18
    调用非静态方法时,会报错
  • LBin 2月前
    0 17
    666
  • 0 16
    66666
  • 0 15
    666
  • damen 2月前
    0 14
    see see
  • ran 2月前
    0 13
    大佬
  • 0 12
    111
  • ralphh 2月前
    0 11
    感谢!
  • Aimer 2月前
    0 10
    666
  • 0 9
    go
  • 0 8
    看看
  • franky 2月前
    0 7
    666
  • qwj520 2月前
    0 6
    666支持
  • thunder 2月前
    0 5
    66
  • wang1234 2月前
    0 4
    学习
  • nanxun 2月前
    0 3
    看看
  • 月色 2月前
    0 2
    666学习了
返回