目錄
背景知識
CrackMe
工具
逆向實戰App1
正向分析法
Smali修改法
IDA動態除錯法
逆向實戰App2
參考鏈接
-
??????????????背景知識

隨著Android設備的急劇增長和逆向工具鏈的成熟,Android App的安全性問題日益突出,其中二次打包問題較為嚴重,
惡意攻擊者利用反編譯工具對App進行原始碼反編譯、植入廣告SDK、插入釣魚頁面,重打包和重簽名后,惡意篡改后的App通過非法渠道流入市場,終端用戶如果使用這些App,會有隱私資料泄漏、資金財產被盜取的風險,
本文將介紹自己的一次Android逆向入門實戰經歷,分別是在native層和so層進行攻擊,以后有機會向大家介紹Android防護相關,
-
CrackMe
CrackMe是一些公開給別人嘗試破解的小程式,在這里我們以兩個CrackMe.apk為例進行說明,
-
工具
AndroidKiller_v1.3.1
IDA PRO 6.8
IntelliJ IDEA
-
逆向實戰App1
我們在native層對App 1進行攻擊,共有三種方法:正向分析法、Smali修改法、IDA動態除錯法,
-
正向分析法
1. Android Killer中打開:將APK反編譯為Smali代碼,可以看到主要邏輯在MainActivity.smali中,再將其轉換為偽Java代碼,

2. 偽Java中尋找關鍵代碼,其跳轉關鍵句在if..else陳述句,其中呼叫了getMD5str()函式,要搞定這個CrackMe需了解該函式,


3. 將getMD5str()函式復制到IDEA中,去掉冗余代碼,嘗試對偽代碼進行除錯,傳進一個字串"kevin",輸出"EBCD**3075",至于getMD5str()函式的具體功能是什么,不是很重要,有興趣的同學可以反編譯后分析下,

-
Smali修改法
使用Android Killer將Java代碼轉換為Smali代碼,修改Smali代碼,重打包重簽名,隨便輸入什么均可Crack掉,
修改前:
"if-eq vA, vB, :cond_" ##如果vA等于vB則跳轉到:cond_
修改后:
"if-ne vA, vB, :cond_" ##如果vA不等于vB則跳轉到:cond_
-
IDA動態除錯法
使用IDA動態除錯Smali代碼,當輸入用戶名時,在Smali中設定斷點,可以直接讀出相應的密碼,
-
逆向實戰App2
我們在so層對App 2進行攻擊,攻擊步驟如下:
1. Android Killer里打開zb002.apk,關鍵代碼在if...else陳述句中,我們可以使用逆向實戰App1中的Smali修改法,但我想在此介紹另一種攻擊方式,

2. 此時native函式GetNative只有宣告,具體實作在libegg.so檔案中,JNI介面作為Java層和Native層互動的橋梁,使得Java層和Native層之間可以互相呼叫,


3. 使用IDA動態除錯或直接ALT+T進行搜索GetNative,根據跳轉和傳送指令可知其密碼,

-
參考鏈接
記得TODO,后續發兩個CrackMe的鏈接,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/297615.html
標籤:其他
上一篇:android treble專案&&HIDL學習總結
下一篇:IOS推送
