分享一下某app的反編譯破解過程

http://www.itdecent.cn/p/a054652db4e3

先說,出于好玩,破解了某app

主要反編譯app,分析出數(shù)據(jù)加密代碼,再拿到底層加密動(dòng)態(tài)庫,再繞過底層動(dòng)態(tài)庫的簽名驗(yàn)證,最終通過自寫app調(diào)用動(dòng)態(tài)庫,并獲得加密,解密數(shù)據(jù)。

1、反編譯app:

這一步就不細(xì)講了,太多方法,網(wǎng)上自己搜索……

2、分析代碼:

根據(jù)抓包獲取接口關(guān)鍵詞,到反編譯源碼中查詢,并分析代碼,

發(fā)現(xiàn)關(guān)鍵代碼函數(shù):

Java_com_wuba_aes_Exec_init

Java_com_wuba_aes_Exec_decryptPhoneData

這里居然調(diào)用了底層動(dòng)態(tài)庫:xxx.so?

……我x,還好有大招

3、動(dòng)態(tài)庫破解:

來來來,采用大招了,哈哈:下載ida,反編譯xxx.so

找到這兩個(gè)函數(shù)的匯編代碼,并雙擊定位,按下F5反匯編,能大概看到一些源碼

然后分析加密過程,查找加密秘鑰,可能學(xué)術(shù)不精,無法找到,不能找到加密的具體東西

……我xxx,還好有大招

4、嘗試動(dòng)態(tài)庫xxx.so調(diào)用:

嘗試自己建一個(gè)Android工程,調(diào)用xxx.so動(dòng)態(tài)庫,發(fā)現(xiàn)調(diào)用成功,但是解密數(shù)據(jù)不對(duì)……是不是有驗(yàn)證??

5、動(dòng)態(tài)庫驗(yàn)證破解:

分析發(fā)現(xiàn)解密函數(shù)中,的確是有一些驗(yàn)證的,如:

if ( isOurApk == 1 )

{

……

}

這時(shí)候我們就要跳過這個(gè)這個(gè)判斷,把1改為0可好,哈哈,這樣跳過這些驗(yàn)證,這樣我們自己建立的工程就可以來調(diào)用這些接口了。

6、修改.so文件:

a.在ida中左側(cè)雙擊這個(gè)函數(shù),定位到ida-view a 的匯編視圖(F5可以看到源碼),然后在匯編視圖定位中的匯編代碼中,發(fā)現(xiàn)有一個(gè)cmp指令,其實(shí)就是這個(gè)if條件,然后記下地址

b.然后在ida的hex-view(二進(jìn)制視圖)中找到這個(gè)地址(在 匯編視圖 中,鼠標(biāo)定位到cmp這一行,然后選擇hex-view,可以看到鼠標(biāo)剛好定位到這行代碼的地址,反正就是想辦法找到這行代碼的地址),然后發(fā)現(xiàn)這樣的二進(jìn)制: 01 28,然后鼠標(biāo)右鍵,修改01為00,然后鼠標(biāo)右鍵保存

c.然后再在ida的匯編視圖中,定位這個(gè)函數(shù),再按F5,看看源碼,以及生效的效果。直到改對(duì)為止。

d.在ida中這樣的修改,是不會(huì)真正修改到動(dòng)態(tài)庫的,需要用notepad中的hex-editor插件(或者其他工具,如ue)打開這個(gè).so文件,并找到這個(gè)地址 修改,然后保存,這樣就生效了

7、最后再用自己的工程,則可以調(diào)用該動(dòng)態(tài)庫,并直接調(diào)用里面的函數(shù)了。

后面有機(jī)會(huì),再完善該文章,或者上傳代碼!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容