某H视频-mls
分析流程 #
这个软件呢,其实分析主要就是想要看他拉人获得vip的操作
抓包可以找到一个api
api/user/traveler
这之前token还没有得到,参数
{"deviceId": device, "dev": 随机3字符, "code": '{"p":"PDTVPD"}'}
这个code参数其实开始我也不知道是啥,走了一遍拉人的流程,发现app给我们的邀请链接有p参数,就是邀请码
https://z6mhir31k.xyz?p=PDTVPD
在进到网页中点击下载软件会将邀请码复制到我们的粘贴板上
{"p":"PDTVPD"}
当你进入app时,读取粘贴板的第一条数据
public static String u() {
ClipData v0 = FragmentAnim.f.getSystemService("clipboard").getPrimaryClip();
String v1 = "";
if(v0 != null && v0.getItemCount() > 0) {
CharSequence v0_1 = v0.getItemAt(0).getText();
if(TextUtils.isEmpty(v0_1)) {
return v1;
}
else {
return v0_1.toString();
}
}
return v1;
}
deviceId #
顺着上去就发现了deviceId的生成
public final void C() {
String v0_2;
String v3_1;
String v1 = "everb";
String v2 = "";
if(a.a.exists()) {
try {
ObjectInputStream v0_1 = new ObjectInputStream(new FileInputStream(a.a));
Object v3 = v0_1.readObject();
try {
v0_1.close();
goto label_21;
}
catch(Exception v0) {
}
}
catch(Exception v0) {
v3_1 = v2;
}
Log.d(v1, v0.toString());
}
else {
v3_1 = v2;
}
label_21:
if(v3_1 == null) {
Log.d(v1, "data == null");
v3_1 = v2;
}
if(TextUtils.isEmpty(((CharSequence)v3_1))) {
v0_2 = String.valueOf(System.currentTimeMillis() + UUID.randomUUID().getLeastSignificantBits());
try {
byte[] v0_4 = MessageDigest.getInstance("MD5").digest(v0_2.getBytes());
StringBuilder v1_1 = new StringBuilder();
int v5;
for(v5 = 0; v5 < v0_4.length; ++v5) {
String v6 = Integer.toHexString(v0_4[v5] & 0xFF);
if(v6.length() < 2) {
v1_1.append(0);
}
v1_1.append(v6);
}
v3_1 = v1_1.toString();
}
他会打开是个名为.CAD的文件,把deviceid写进去,如果像要看一遍生成新device,记得删除这个文件
...