破解某搶票軟件的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
網絡安全專家