type
status
date
slug
summary
tags
category
icon
password
一、目标参数
gsid
二、抓包
表单里面必要的几个参数checktoken、mfp、appkey,其中appkey是固定值。
1、checktoken
jadx搜索checktoken,跟进去发现个b方法,用r0tracer hook一下这个方法,根据抓包对应下发现是uid+ "/" + did+ "/" + "obiew"拼接后传入ai.a中。
跟进去ai.a方法里面,发现个关键字md5。
测试一下。标准的md5。
2、mfp
jadx直接搜索mfp,找到关键点,分别hook下查看参数及返回值。
生成的主要位置如下图,底下标出了encryptRsa,可能是个RSA,再看下。
注意这里看这个a方法时候,jadx有可能出现下面的情况,可以换个版本试试或者用jeb查看java代码。
Cipher类为加密和解密提供密码功能。它构成了Java Cryptographic Extension(JCE)框架的核心。
- Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding") 参数String transformation的格式是“算法/工作模式/填充模式”,不同的算法支持不同的工作模式以及填充模式。
- c.init(1, g.b(arg12)); public final void init(int opmode, Certificate certificate) // 用取自给定证书的公钥初始化此Cipher对象
- v1_1.doFinal(v11_1, v9, v12_1); // 按单部分操作加密或解密数据,或者结束一个多部分操作
公钥找到了,用Python或者Java还原一下就可以了,测试了下,校验无误。
Python还原一下checktoken和mfp,初始化的时候无uid直接传空就行,第一次注册会返回uid,接下来看did。
3、did
jadx搜索,然后结合Frida和抓包,找到did生成的地方,是一个native方法。
Frida主动调用下。
ida查看,静态注册
首先修改参数名称方便分析。
从下往上分析
3、1 MDString
Hook一下MDString,验证一下是md5
3、2 sub_28B0
md5(str2+"20220118"+"haogtaok")
genCheckId只是把传值进行了拼接
最后发现did就是,传值的md5就可以了(qaq),有能力的同学可以自己分析下,checktoken和mfp放在末尾,感兴趣的同学可以自己动手做下。 公众号传送门
- 本案例仅做分析参考,如有侵权请联系删除
- 作者:404False
- 链接:https://blog.404nofoundx.top//article/ea8ae41b-b801-4131-b0df-efcdd25fd3e6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。