標籤:代碼 XML 檔案 .so檔案 學習 img bsp 軟體 目錄
一、 準備知識
1. 懂Java Android開發。
2. 懂NDK ,C 語言 Android 動態連結程式庫.SO開發。
3. 懂Android反編譯Smali 文法。
4. 懂adb 和 jdb 等等工具使用。
5. 懂IDA 調試(遠程動態調試APK和本地靜態調試.SO檔案)
6. 懂Arm彙編文法(因為行動裝置晶片是Arm架構的,不是Intel的晶片,不是x86彙編,是Arm彙編)。
7. 懂APK的打包解包流程。
8. 其他工具使用(改之理,Apk killer,Android模擬器)等等等等。
9. 懂檔案格式類似PE格式,例如:ELF,和Android檔案格式等等。
以上的均為Android 逆向的基本條件,想學的童鞋,可以按照上面的學習,也可以自行尋找!
以上內容哪裡不會只能自己補充知識啦,太多,講不完!!!
二、 入門逆向分析因為我們是入門分析,所以以上準備知識,先懂一些就行,不必要都懂,知識是慢慢積累的,慢慢學習!!!1) 先看看我們APK Demo(沒有加殼)。
2) 隨便輸入提示錯誤,我們可以解壓這個APK看看。
直接滑鼠右鍵解壓到….不需要修改尾碼名也可以的。
解壓出來是這個樣子的,這是Android的檔案目錄,具體每個檔案夾是什麼作用可以自行尋找一下,看到沒有lib類似的目錄說明沒有.SO這樣的動態連結程式庫,那麼這個軟體就比較容易逆向分析,因為都是Smali 和 Java代碼比較容易看懂。
3) 用改之理開啟這個APK。
開啟後如所示。
4) 找關鍵處。
如搜尋要破解APK的字串。
5) 繼續搜尋索引鍵
因為這是一個xml格式的文本,successed 對應的 恭喜您,所以有可能是突破口,所以繼續搜尋successed。
找到一個id,因為Android程式裡面就是這樣分配的,所以我們接下來尋找id的值也就是0x7f05000c。
找到一句const v1, 0x7f05000c 這是Smali文法,和彙編類似,是把0x7f05000c放到v1寄存器裡面,所以v1就為恭喜您這句話。
6) 同樣的方法,尋找unsuccessed,做好注釋如。
7) 找到之後用#注釋下,方便查看。
如那個 if-nez 由名字可知道 他的意思是 如果 v0 這個寄存器不等於0就跳轉。就跳轉到了cond_0這個位置,剛好調到恭喜您的位置,所以我們讓這個跳轉實現就可以了,方法好多。我們也可以結合源碼分析。
點擊按鈕(如)。
會出現源碼,可以結合分析。
8) 代碼修改。
只要把if-nez 改成 if-eqz就行啦。
9) 然後編譯一下,安裝執行。
顯示登入,成功破解。
三、 總結
Android逆向分析入門,這個比較簡單,容易學習。
因為無殼無.SO分析起來較為容易,適合入門。
入門:先學會Smali文法,學會改之理的使用,最好會寫Android程式。
Android逆向分析初體驗