使用kali的工具集反編譯apk
阿新 • • 發佈:2020-12-24
編寫時間 2019-04-29 00:51:38
因為想檢視app的一些api以及簽名演算法,所以試試反編譯工具。
首先上傳apk,然後命令列開啟所在目錄。
現在用起點apk做個測試
第一步使用apktool
apktool d -f qidian.apk -o apktool
root@kali:~/文件/qidian# apktool d -f qidian.apk -o apktool I: Using Apktool 2.3.4-dirty on qidian.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: /root/.local/share/apktool/framework/1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Baksmaling classes2.dex... I: Baksmaling classes3.dex... I: Baksmaling classes4.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files...
這一步主要是可以檢視apk的媒體檔案
如果要java程式碼
第二步 把apk檔案重新命名為zip檔案,解壓,將解壓的classes.dex檔案取出,使用d2j-dex2jar來嘗試輸出jar
d2j-dex2jar classes.dex
root@kali:~/文件/qidian/dex/dex2jar-2.0# d2j-dex2jar classes.dex dex2jar classes.dex -> ./classes-dex2jar.jar WARN: ignored invalid inner class name , treat as anonymous inner class. WARN: ignored invalid inner class name , treat as anonymous inner class. WARN: ignored invalid inner class name , treat as anonymous inner class. WARN: ignored invalid inner class name , treat as anonymous inner class. WARN: ignored invalid inner class name , treat as anonymous inner class. WARN: ignored invalid inner class name , treat as anonymous inner class. Killed
好的,工具出錯也是正常的,出錯就找原因吧,首先它輸出的22位元組的jar檔案,肯定是有問題的,其次用windows平臺的dex2jar工具也出錯,所以不是工具的問題,應該說dex檔案有問題?
在dex2jar官網的討論裡,看到了類似的問題miss inner class
然後使用jd-gui
工具,開啟dex.jar
,提出原始檔即可檢視程式碼
使用這個工具提取的java程式碼,類的名字好像都是abcd什麼的
終於成功逆向了一次數字簽名的實現,第一次看到數字簽名的時候,完全不知道是什麼,那時候以為都是固定的,直到一直失敗才發現,還有動態生成的簽名。那時候挺絕望的2333
無論如何,天道酬勤,坑總是可以過的
2019/7/8 更新
因為dex2jar
太老,一些dex無法逆向,這裡發現一個新專案enjarily
使用python3
逆向dex
檔案