-
-
[原创]小米APP登录接口hashedEnvFactors属性溯源
-
发表于: 2021-3-7 16:53 10522
-
继上一次小米APP登录接口遇到的几个参数加密算法分析后, 发现其中env中是通过读取一串叫hashedEnvFactors的数组字符串进去拼接加密的,这次我们主要讲讲是如何找出hashedEnvFactors的赋值过程。 原帖
我们回到之前的loginByPassword方法,也就是登录时触发的方法,我们知道,它只有一个传参 PasswordLoginParams ,直接跟进查看这个类。
我们可以直接右键这个属性来看看是在哪里赋值的,因为我当初学习JAVA的时候书中曾就讲过,最好不要直接给类里面的属性直接用 = 号赋值,都是直接在新建一个方法来赋值,所以这也跟了我们逆向带来的便捷。。。
我们看到这个类下面有一个set方法了,然后在进行调用用例看看是哪个地方执行了该方法。
我们看到有好几个,其中第一个的方法名称跟我们的登录接口是一样的,就先点进去看看。
它这里就是一行语句的方法。而且参数贼长,从单个字符串传参变成了封装成一个PasswordLoginParams类进行传参。。那么我们看到其中strArr就是我们要找的,继续看看是谁调用了这个方法。
依旧点击第一个进去
还是熟悉的配方熟悉的味道,继续往上跟。。
这里注意,我们不要选第一行了,因为我们要的参数是最后一个,而它传的是NULL,肯定不是我们要的,我们可以点第3个看看
可以看到是调用了getEnvInfoArray()获取到的,继续跟进。
我看可以看是通过getEnvInfoArray返回的,继续跟进。
我们可以看到通过调用getAllLinkedEnvInfos方法获得List然后枚举出来插入到arrayList里面的。
并且我们看到一个小细节,之前抓出来有些数组是空字符串,然而这里正好看到它有一个如果是null则赋值空字符串的判断语句,更加证实了该方法是我们需要的。
我们继续跟入getAllLinkedEnvInfos
跟到这里,基本可以宣告结束了,这里他就是获取了手机的一些基本设备信息,并且我们数了一下他add的数量跟hashedEnvFactors正好一样。。(我也是够闲的)
总的来说这个字符串还是挺好跟进去的,只要思路比较清晰就行了,写的也不是非常野,最后我们只需要知道把他的hash和base64方法拿出来自己就可以定义这个字符串了。
public Builder setHashedEnvFactors(String[] strArr) {
this.hashedEnvFactors
=
strArr;
return
this;
}
public Builder setHashedEnvFactors(String[] strArr) {
this.hashedEnvFactors
=
strArr;
赞赏
- [原创]利用Magisk将Charles证书写入系统列表 12349
- [原创]某讯QQ钱包转账付款算法分析篇 42967
- [原创]初识iOS逆向学习笔记之Hopper 83980
- [原创]steam令牌算法分析 15051
- [原创]小米APP生成DeviceId算法分析 20835