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