版本:2.27.1
之前并没有具体分析过 也只是用坛友的模块 借此机会对快连的随机id进行具体分析以及定位思路 打开快连会通过id生成一个唯一的匿名账号id 我们可以直接通过工具去定位这个布局id 0x7f0a04e1 //16进制
2131363041 //10进制
R.id.user_gid //id获取如上信息 虽然混淆了,但是可以看出是viewbinding编译生成的文件 直接找调用即可 分析代码即可得知通过引用资源的一个字符串 “ID: %s” 获取的id是account的getGearId函数 直接一路查看调用追随 最终定位到 通过读取本地储存的信息去转成Account类 那接下来的思路就明确了,我们去找put储存信息的函数 查看代码如下 通过参数传入account实例 但是调用这个地方有很多 这就可以用hook去打印调用栈 去看哪个函数去调用 at qd.g.u(SourceFile:11)
at qd.g.d(SourceFile:1)
at qd.d.a(SourceFile:1)
at Aa.c.J(SourceFile:11)
at ra.d.a(SourceFile:15)
at Aa.t$b.run(SourceFile:7)
at ra.j$a.run(SourceFile:10)
at Da.l.run(SourceFile:14)
at Da.l.call(SourceFile:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
atjava.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
调用栈跟进 定位到 这时候,去看m61179t的调用,而不是mo2074a的 最终定位到一个json对象我们直接找这个内部类的注册地方 可以看到这个地方是一个post请求,分析得出m61924l是构建发送请求的,直接hook他拿到参数 而bArr内容正是设备信息包含了id 这个地方构造了bArr 可以得知第三个参数是client_id 可以看到这个是获取android_id的代码,那么我们直接hook这个函数,让他随机生成一个 可以看到id已经变了
|