首页
社区
课程
招聘
[原创]小米APP登录接口hashedEnvFactors属性溯源
发表于: 2021-3-7 16:53 10547

[原创]小米APP登录接口hashedEnvFactors属性溯源

2021-3-7 16:53
10547

继上一次小米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;

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 8
支持
分享
最新回复 (1)
游客
登录 | 注册 方可回帖
返回
//