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