
尝试解析 ssl 双向校验, 抓 soul 的包, 使用 frida 来 hook 获取密码 hook 目标
package cn.soulapp.android.net; public class o extends SSLSocketFactory { ... public o(android.content.Context r7, java.lang.String r8) { ... java.lang.String r8 = cn.soulapp.android.soulpower.SoulPowerful.l(r8) char[] r4 = r8.toCharArray() // Catch:{ Exception -> 0x0049, all -> 0x004d } java.security.KeyStore r3 = java.security.KeyStore.getInstance(r3) // Catch:{ Exception -> 0x00e9 } r3.load(r7, r4) // Catch:{ Exception -> 0x0049, all -> 0x004d } L_0x0049: r7.close() // Catch:{ Exception -> 0x0055 } goto L_0x0055 ... } } 编写 js 脚本如下:
console.log("Script loaded successfully "); Java.perform(function x() { console.log("Inside java perform function"); //定位类 var my_class = Java.use("cn.soulapp.android.net.o"); // var my_class = Java.use("cn.soulapp.android.soulpower.SoulPowerful"); console.log("Java.Use.Successfully!");//定位类成功! //在这里更改类的方法的实现( implementation ) my_class.$init.overload("android.content.Context", "java.lang.String").implementation = function (args, args2) { console.log("debug"); console.log("args1", args) console.log("args2", args2) // 打印替换前的参数 console.log("Ok"); // var aa = Java.use("cn.soulapp.android.soulpower.SoulPowerful.l()"); // console.log(aa.p().a(aa.p().a())) return this.$init(args, args2); } }); 目前卡在方法没有被调用上,console.log("debug")没有执行
所用测试 apk 下载地址: https://share.weiyun.com/jltxrcPz
1 0o0O0o0O0o 2021-06-16 08:52:58 +08:00 via iPhone *oul 没有必要反编译看那么多,hook KeyStore.load 简单些 |
2 MaxLi77 2021-06-16 09:26:36 +08:00 hook 不上主要有两个原因,1. 注入时机不对,脚本要在 app 启动前注入 2. 所在方法的 classloader 不对 不过这个问题最好的解决方案还是按楼上说的,hook KeyStore.load |
3 zer0fire OP @0o0O0o0O0o 已做修改, 但是依旧注入时机不对 修改如下: ``` console.log("Script loaded successfully "); Java.perform(function x() { console.log("Inside java perform function"); //定位类 var my_class = Java.use("java.security.KeyStore"); console.log("Java.Use.Successfully!");//定位类成功! //在这里更改类的方法的实现( implementation ) my_class.load.overload("java.io.InputStream", "[C").implementation = function (args1, args2) { console.log("args1", args1) console.log("args2", args2) } }); ``` |
4 zer0fire OP 后面尝试使用这个 https://gist.github.com/ceres-c/cb3b69e53713d5ad9cf6aac9b8e895d2 也失败, 获取不到 |