前言
电子取证当中,已经有越来越多的取证人开始使用Frida帮助完成取证,但是我看了一下现在的文章,还没有人用unidbg完成过取证,所以在这里用unidbg写一篇取证文章,但是unidbg的使用门槛要比Frida高很多,但是多一个手段,取证的成功率就会大很多。
前言
这里我们来看一下为啥说要比Frida难度要大。
这里先用白龙哥给的起手架,把这个框架给搭建起来。
这里用的取证样本是之前的文章分析的,所以关于java层和so层的前期分析就不写了
电子取证
达达,公众号:Th0r安全针对某APP常用地址取证解密
这里直接运行一下,发现jni_onload的时候就开始报错了。
这里开始直接补上,这里不是一般的直接一把梭补对象,因为后面还会遇到这个问题,所以这里就先不提为啥不直接补对象。
这里就前面jni_onload的环境补成功了
接下来开始调用解密函数,这里面的密文是在之前文章的地方导入,这里也不写了,可以看之前的文章。
开始补新的环境
这里就直接给它一个对象
继续补环境
因为是布尔,所以返回true
继续
这里都还是常规的继续补环境
继续补环境
这里就开始我们之前所说的,为啥不直接一把梭的地方了,这里面的方法查自于白龙哥的星球
我们先到那个地方下断点
可以看到是这个类的时候,出现了问题
查看上下文,可以发现是找不到jmethodid,也就是找不到方法
在当前类找不到方法,所以我们需要去父类查找,打开jadx
可以看到,是继承自AbstractSensorsDataAPI,所以需要给它这个父类
修改一下,这也是Application那个地方提到的
问题解决,继续补下一个环境
直接回空
可以看到这里面就成功跑出我们想要的东西了
总结
用unidbg进行取证的时候,可以看到比frida的难度使用高,但是它也有自己的优点,可以直接运行,不依赖环境。对于算法模拟的时候,也是比较快捷的,不过一开始补环境的时候,确实需要花时间。多一个手段,多一份取证的希望。
原文始发于微信公众号(Th0r安全):利用unidbg进行一次电子取证