so层分析工具
Binary Ninja
image.png
- 这个工具真用不习惯,还是建议用ida
参看资料
https://blog.csdn.net/A_fanyifan/article/details/139727512
https://blog.csdn.net/weixin_51111267/article/details/131733067
目标app
6buR54yr5oqV6K+JMy4wLjDniYjmnKw=
过抓包检测
- flutter 有ssl证书校验,常规方式无法抓到包,通过frida 把它内置的ssl校验hook掉
-
使用反编译工具打开libflutter.so文件,搜索ssl_server、ssl_client
image.png - 根据代码引用、在sub_6dbd94中进行调用,将次hook掉即可
function hook_ssl() {
Java.perform(function () {
var base = Module.findBaseAddress("libflutter.so");
var ssl_crypto_x509_session_verify_cert_chain = base.add(0x6dbd94);
console.log("找到函数偏移地址:",ssl_crypto_x509_session_verify_cert_chain)
Interceptor.attach(ssl_crypto_x509_session_verify_cert_chain, {
onEnter: function(args) {
console.log("hook 开始!")
},
onLeave: function(retval) {
console.log("返回值: " + retval);
retval.replace(0x1);
console.log("解除ssl验证成功\n---------------------");
}
});
}
)};
setTimeout(hook_ssl,1690) // 设置延时找对hook时机(太快函数还没加载出来,太慢app已经发起请求了)
image.png
dump出dart文件分析
- reflutter 工具. https://github.com/Impact-I/reFlutter
- 根据reflutter教程,将apk重新打包,并且安装
1、 pip install reflutter
2、 reflutter app.apk
image.png
3、通过reflutter 会生成一个release.RE.apk 文件,此文件还需要进行签名,才能安装上去
4、使用uber-apk-signer.jar 对release.RE.apk 进行签名 https://github.com/patrickfav/uber-apk-signer
5、将签名好的apk,安装到手机,打开并且运行。app无法联网没问题,我们只需要将生成的dump.dark pull下来分析即可java -jar uber-apk-signer.jar --allowResign -a release.RE.apk
adb pull /data/data/包名/dump.dark
frida 分析
1、根据抓包,猜测此signature是sha256加密
搜索sha256 相关的字段,定位函数偏移
image.png
image.png
- hook
var funcAddr = addr.add(0x00000000001bb974);
Interceptor.attach(funcAddr, {
onEnter: function (args) {
this.x1 = args[1];
console.log('hash256Str args0:', hexdump(args[0]))
console.log('hash256Str args1:', hexdump(args[1]))
},
onLeave: function (retval) {
console.log("*******************")
console.log('hash256Str返回值:', hexdump(retval))
}
})
image.png
2、验证
image.png