app安全之安卓native层安全分析(一):frida 与unidbg

本文详细介绍了如何从抓包开始,通过分析APP的dex文件,利用jadx和frida定位到加密参数的计算逻辑。在遇到动态注册的so方法时,借助ida和yang神的hook脚本找到函数地址。最后,通过unidbg搭建模拟环境,调用目标方法生成加密参数,展示了unidbg在黑盒调用和动态分析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这个专题是根据白龙,龙哥的unidbg博客的案例,进行从0开始到安全分析的流程,核心部分会借鉴龙哥的unidbg,通过借鉴大佬的思路,完整的分析某个so层的加密参数

各位朋友也可以直接读龙哥的博客,我只是用我的角度进一步加工一下

原文地址:SO入门实战教程一:OASIS_so学习路线_白龙~的博客-优快云博客

分析

首先拿到这个app,安装啥的就不多说了。

进入到注册界面:

点击获取验证码,然后这边抓包工具抓到的包:

然后,这里面的【sign】就是今天的重点了。

用神秘的工具脱壳完之后,有如下的dex:

把这些dex,全部选中,拖进jadx 

快速定位

接下来开始找sign所在的位置,先看看抓包工具这边的参数,根据这些键名,一顿搜,总能找到一些

先搜下【sign】,虽然搜出来的结果不多,但是感觉有很多干扰项

 进最后那个,到这里,

这些参数看着很像,用frida hook,得知,发现并没有走到这里

搜【ua】

进到这里,发现很可疑,好多参数都对上了

啥都不说,先用objection hook下,然后app端点击【重新发送】看看:

可以,这不直接就定位逻辑了

但是我们要找【sign】,所以还得再看看,jadx查看发现,这个方法反编译效果不太好,问题不大,记住这个dex名,然后用GDA 打开这个dex,这就挺好,基本都反编译出来了

反正看着确实可疑,但是这三个方法,还不确定到底是是哪个方法里有【sign】部分,所以这里直接hook 它这个a,b,c三个方法,然后app点下重新获取

ok,发现最后的方法里基于有我们要的sign,这边再来下,用抓包工具对比下,谨慎一点,别搞半天没搞对位置:

重新hook下,然后抓包工具打开看看

对上了,ok,就是这里了【g.a.c.g.c.a】

在jadx里,反编译失败:

问题不大,用GDA看:

这不就越来越接近了吗,嘻嘻,点进去:

hook下这个c方法看看,ok,对上了

 接着一顿分析后再进入这里

 ok,进到了native层,那么核心的逻辑就在这里了。

像这种,常规的方法怎么解决呢?

  • 如果你是为了拿数据,赶工期的话,那你可以直接主动调用这个方法
  • 如果你是为了纯算还原的话,那就把这个so文件拖进ida一顿分析了
  • 那么假如,这个方法的纯算很复杂,而你又不想主动调用,感觉很low的话,那你就可以尝试用unidbg了

unidbg,就是本系列文章的重点了。

unidbg简介

什么是unidbg

unidbg 是一个基于 unicorn 的安全分析工具,可以实现黑盒调用安卓和 iOS 中的 so 文件

unidbg是凯神写的一个开源的java项目

使用场景

因为现在的大多数 app 把核心的加密算法放到了 so 文件中(比如本例的app),你要想破解签名算法,必须能够破解 so 文件。但C++ 的安全分析远比 Java 的安全分析要难得多,有各种混淆啊,ollvm啥的,所以好多时候是没法纯算还原破解的

那么你是否有过一个想法,能不能把安卓的环境模拟出来,但是又脱离了安卓真机的环境,就可以直接使用so里的方法呢?

unidbg 就是这样一个工具,它模拟好了好几种虚拟环境,他不需要直接运行 app,也无需安全分析so 文件,而是直接找到对应的 JNI 接口,然后用 unicorn 引擎(也不止这一个引擎)直接执行这个 so 文件,所以效率也比较高。

配置unidbg

1.首先,用git 把这个项目clone 下来:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值