天天看點

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結

目錄

背景知識

CrackMe

工具

逆向實戰App1

正向分析法

Smali修改法

IDA動态調試法

逆向實戰App2

參考連結

  • ​​​​​​​​​​​​​​背景知識

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結

随着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代碼。

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結

 2. 僞Java中尋找關鍵代碼,其跳轉關鍵句在if..else語句,其中調用了getMD5str()函數,要搞定這個CrackMe需了解該函數。

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結
記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結

 3. 将getMD5str()函數複制到IDEA中,去掉備援代碼,嘗試對僞代碼進行調試。傳進一個字元串"kevin",輸出"EBCD**3075"。至于getMD5str()函數的具體功能是什麼,不是很重要,有興趣的同學可以反編譯後分析下。

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結
  • 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修改法,但我想在此介紹另一種攻擊方式。

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結

 2. 此時native函數GetNative隻有聲明,具體實作在libegg.so檔案中。JNI接口作為Java層和Native層互動的橋梁,使得Java層和Native層之間可以互相調用。

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結
記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結

 3. 使用IDA動态調試或直接ALT+T進行搜尋GetNative。根據跳轉和傳送指令可知其密碼。

記一次Android App逆向入門實戰(逆向思路&工具使用&CrackMe)​​​​​​​​​​​​​​背景知識CrackMe參考連結
  • 參考連結

記得TODO,後續發兩個CrackMe的連結。