破解某抢票软件的VPN抓包
VSole2021-09-05 17:59:00
打开VPN后抓包,发现软件提示网络错误,关闭VPN网络连接正常,猜测软件可能有VPN检测。直接dump出dex文件。
在dex文件中搜索"vpn"
用GDA打开其中一个文件,继续搜索"VPN"关键字。
根据函数名基本可以确定VPN检测函数:
此处函数相当可疑,进入此函数:
此处有判断,hasTransport()这个函数用于判断是否有目标传输类型,目标传输类型值为4,查一查常见传输类型对应的值。
/** * Indicates this network uses a Cellular transport. */ public static final int TRANSPORT_CELLULAR = 0; /** * Indicates this network uses a Wi-Fi transport. */ public static final int TRANSPORT_WIFI = 1; /** * Indicates this network uses a Bluetooth transport. */ public static final int TRANSPORT_BLUETOOTH = 2; /** * Indicates this network uses an Ethernet transport. */ public static final int TRANSPORT_ETHERNET = 3; /** * Indicates this network uses a VPN transport. */ public static final int TRANSPORT_VPN = 4;
nNetworkCapa.hasTransport(4)这个函数判断当前是否为VPN传输,SecurityUtil.hasVpnTransport()这个函数即为检测函数,猜测有VPN时返回true。用Objection hook SecurityUtil.hasVpnTransport函数验证一下猜想。
打开VPN时返回值为true,关闭时为none。猜想验证正确,开始编写脚本。
function hook_vpn() { Java.perform(function () { var SecurityUtil = Java.use("com.taihebase.activity.utils.SecurityUtil"); SecurityUtil.hasVpnTransport.implementation = function (arg0, arg1) { var result = this.hasVpnTransport(arg0, arg1); console.log("start...."); console.log(result); console.log("end...."); return false; } }) } setImmediate(hook_vpn);
运行脚本,发现无网络错误提示,charles上成功抓包。

VSole
网络安全专家