網(wǎng)站在線開放端口seo網(wǎng)站優(yōu)化做什么
本文僅供學(xué)習(xí)交流,只提供關(guān)鍵思路不會(huì)給出完整代碼,嚴(yán)禁用于非法用途,拒絕轉(zhuǎn)載,若有侵權(quán)請(qǐng)聯(lián)系我刪除!
目標(biāo)app:5Lqs5LicYXBwMTEuMy4y
目標(biāo)接口:aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPXNlYXJjaA==
一、引言
今天來研究下某東的搜索接口,嘗試將加密的參數(shù)還原出來。
二、抓包分析
1、在模擬器或者真機(jī)上安裝app
2、配置Fiddler代理,安裝證書
3、點(diǎn)擊app上方的輸入框,輸入關(guān)鍵字,成功抓到關(guān)鍵詞搜索的包,我們發(fā)現(xiàn)請(qǐng)求url中有個(gè)sign參數(shù),這個(gè)經(jīng)過我分析是調(diào)用的so中的方法,這個(gè)參數(shù)放到下篇文章,通過Unidbg主動(dòng)調(diào)用來生成該參數(shù)。今天我們主要來研究下請(qǐng)求體中加密參數(shù)的生成。
?三、調(diào)試
1、定位關(guān)鍵代碼
使用jadx打開apk文件,搜索關(guān)鍵字cipher、body等。我們會(huì)發(fā)現(xiàn)出來的結(jié)果特別多,這對(duì)于我們分析非常不友好。
這時(shí)候不妨搜索下周邊的幾個(gè)參數(shù)名稱,如:hdid,其他幾個(gè)參數(shù)很多時(shí)候都是在附近的,搜索結(jié)果明顯少了很多,我們依次點(diǎn)開分析
?定位到如下位置,果然關(guān)鍵代碼就在附近?
2、我們嘗試hook上層方法,看下入?yún)⒑头祷刂怠?/p>
let e = Java.use("com.jd.phc.e");
e["b"].implementation = function (map, bVar) {console.log(`e.b is called: map=${map}, bVar=${bVar}`);let result = this["b"](map, bVar);console.log(`e.b result=${result}`);return result;
};
入?yún)⑹莻€(gè)map,再通過JSONObject轉(zhuǎn)一下,成功打印出入?yún)⒆址?。和我們抓包抓到的信息比?duì),一模一樣!
var jsonObj = Java.use('org.json.JSONObject').$new(map);console.log("map : " + jsonObj.toString())
?3、仔細(xì)分析代碼,cipher是由這一段代碼賦值
jSONObject2.put("cipher", jSONObject);
查看上方代碼:jSONObject是這邊生成的,map就是這個(gè)方法 的入?yún)?#xff0c;都是明文。
我們hook到bVar的值是5,和b.MODIFIED_BASE64.value()值相等
所以最終執(zhí)行的代碼是這一段,我們扣出來嘗試還原。
for (String str2 : map.keySet()) {String str3 = map.get(str2);String b2 = d.b(str3.getBytes());com.jd.phc.i.b.a("PHCEngine", "brian Encoded str of " + str3 + " is :" + b2);jSONObject.put(str2, b2);
}
四、還原
1、刪除無效代碼:
com.jd.phc.i.b.a("PHCEngine", "brian Encoded str of " + str3 + " is :" + b2);
2、需要補(bǔ)全d.b(),跟進(jìn)去把代碼扣出來
3、補(bǔ)全缺少的數(shù)組f7339a
private static char[] f7339a = {'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};
五、最后
將入?yún)⒎庋b成一個(gè)HashMap,成功還原出加密的body,效果如下:?
收工!?