您好,登錄后才能下訂單哦!
此題apk和so都沒有加殼,但是so里面的一個(gè)關(guān)鍵函數(shù)jolin是加密的,在so加載時(shí)解密。并且so加入了反調(diào)試技術(shù)。
由于我學(xué)習(xí)安卓的so調(diào)試是從比賽前3天開始的,也就會(huì)一個(gè)最最基本的。無法對(duì)抗反調(diào)試,一度想放棄這題。不過后來發(fā)現(xiàn),這個(gè)反調(diào)試要到JNI_Onload函數(shù)退出后才觸發(fā)。所以在JNI_Onload入口處下斷點(diǎn),添加watch,在4450這個(gè)地址(就是wojiushidaan這個(gè)字符串保存的地方)。F8一直走,看到這個(gè)地址的內(nèi)容變化,就是答案了。
securityCheck函數(shù)有價(jià)值的就是while循環(huán),很明顯就是用戶輸入的字符串和628c這個(gè)間接應(yīng)用地址上的字符串比較。(實(shí)際地址在4450)
關(guān)鍵函數(shù),如果F7進(jìn)去,可以發(fā)現(xiàn)jolin解密后的代碼,這個(gè)函數(shù)用來解密出4450處的答案。
hex view窗口可以看到4450地址內(nèi)容的變化。
這題高手們有patch securityCheck函數(shù)的,利用__android_log_print輸出4450的內(nèi)容。(這個(gè)是我需要繼續(xù)學(xué)習(xí)的——patch so)
還有是允許后dump出so,4450的地方就是答案了。
能做出這個(gè)題目純屬運(yùn)氣,因?yàn)榉凑{(diào)試設(shè)置的要等到Onload退出才觸發(fā)異常,而so的解碼已經(jīng)在Onload里面完成了。只需要正確分析出securityCheck函數(shù)用于比較的字符串存放的地方。根本需要去關(guān)心解密函數(shù)是如何被解密出來的。
期待哪位大牛能詳細(xì)指點(diǎn)一下android的so里面所用到的反調(diào)試技術(shù)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。