一、抓包
众所周知,阿里系都需要降级不然抓不到包,不管你是直接挂代理http还是VPN,都不好使,感兴趣的自己试试。
降级之后发现还不好使,有个证书验证,需要过sslpinning,直接安装模块就能解决,数据蹭蹭往外冒。
二、网络降级
为啥抓不到包啊,因为阿里系都是走的自有协议,我们把协议hook一下,让他走http就行。
public void hookNetwork(XC_LoadPackage.LoadPackageParam lpparam) {
XposedHelpers.findAndHookMethod(XposedHelpers.findClassIfExists("mtopsdk.mtop.global.SwitchConfig", lpparam.classLoader), "isGlobalSpdySwitchOpen",
new XC_MethodHook() {
protected void afterHookedMethod(MethodHookParam methodHookParam) throws Throwable {
super.afterHookedMethod(methodHookParam);
XposedBridge.log(TAG + "========开启抓包=====");
XposedBridge.log(TAG + "开启抓包前状态: " + methodHookParam.getResult());
// methodHookParam.setResult(Boolean.valueOf(false));
methodHookParam.setResult(false);
}
});
三、app分析
通过分析上面的请求,加密参数一共4个x-sgext、x-sign、x-umt、x-mini-wua,当然了众所周知阿里系都是这4个,jadx打开apk搜索关键字getUnifiedSign,找到加密方法位置。
这是我们静态分析,弊端就是混淆后不好找,有没有更好的办法呢,当然有,我们知道代码是要运行在虚拟机上的,那内存中自然都是真实的了,我们可以在内存中搜索、DUMP方法等。
四、hook
知道了调用的类和方法,我们开始hook吧。
public void hookInterface(XC_LoadPackage.LoadPackageParam lpparam) {
// XposedBridge.log(TAG + " hook 接口");
XposedHelpers.findAndHookMethod("mtopsdk.security.InnerSignImpl", lpparam.classLoader, "getUnifiedSign",
HashMap.class,
HashMap.class,
String.class,
String.class,
boolean.class,
String.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
// XposedBridge.log(TAG + "hook到方法了");
XposedBridge.log(TAG + "hook HashMap: " + param.args[0]);
XposedBridge.log(TAG + "hook HashMap2: " + param.args[1]);
XposedBridge.log(TAG + "hook String: " + param.args[2]);
XposedBridge.log(TAG + "hook String2: " + param.args[3]);
XposedBridge.log(TAG + "hook boolean: " + param.args[4]);
XposedBridge.log(TAG + "hook String3: " + param.args[5]);
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log(TAG + "hook getResult: " + param.getResult());
signImpl = param.thisObject;
callhooktest();
}
});
}
成功hook到了数据。
五、渗透&主动调用
开启主动调用,就可以爬数据了。
很丝滑,请求了1000多条数据都没有问题。
所有阿里系都可以这样做,基本做到了通杀。