反編譯apk的步驟

1.先要獲取目標應用安裝包(.apk)文件

1.1.在rom中找php

1.2.經過adb pull/system/app/目錄找搞出來java

1.3.在網上搜,看看有沒有xxx.apk的下載android

2.反編譯apk工具與準備

2.1.須要/system/framework/裏面的東西,直接adb pull出來git

2.2.須要7za (這裏面有個oat2dex附件裏面有這個 http://forum.xda-developers.c...github

2.3.apktool(HP: https://ibotpeaches.github.io...api

2.4.aapt(這個在android sdk裏有)app

2.5.baksmali,smali(HP: https://github.com/JesusFreke...ide

2.6.jd-gui(HP: http://jd.benow.ca/工具

3.步驟

3.1.先解壓安裝包apk文件,通常會獲得.odex.odex.xz文件。
面對.odex.xz文件的時候,須要用7za將它變成.odex文件。
具體命令:post

7za x *.odex.xz

3.2.接下來使用aapt工具和apk文件獲得targetSdkVersion,具體命令相似於下面:

aapt d badging xxxx.apk | grep version

記下這個sdkVersion,好比是23

3.3.接下來使用baksmali.odex文件變成一堆smali文件。具體命令相似於下面(各個版本不同):

baksmali deodex xxxxx.odex -a 23 -d system\framework -o output

// 上面不行試試這個
baksmali -x arm\temp.odex -a 21 -o output -d system\framework

// 仍是不行試試這個
baksmali xxx.odex -a 23 -x -c boot.oat -d system\framework\arm -o output

總之這個工具用起來仍是有點不暢,有點坑,須要本身多嘗試,多研究。
-a 後面跟api版本,就是3.2步驟獲得的那個數字,-d後面跟adb pull出來的/system/framework這個目錄

而後,若是你遇到Unsupported oat version: 45這種錯誤或者相似的錯誤,這個沒轍。具體看這裏:https://github.com/JesusFreke...

若是遇到相似於找不到什麼class啊,core-junit.jar什麼的,還能夠搶救一下,嘗試上面第三行的那個命令。

若是遇到

Error occurred while loading class path files. Aborting.
java.util.MissingFormatArgumentException: Format specifier '%s'

這個錯誤的話,你應該用的是上面第一行那個命令,考慮從新下載個低一點版本的smali,而後再試試第二行,第三行的指令。

若是啥都沒顯示,那應該是成功了,你會獲得一個文件夾,裏面有一些相似於java包的組織形式的文件夾和文件,文件是smali後綴。

3.4.上一步成功了以後,你須要用smali工具將上一步的輸出轉換成一個dex文件。

smali -o classes.dex output

output指的是3.3步驟產出的output文件夾。這個步驟我基本沒有失敗過,成功後,你獲得了一個dex文件。

3.5.最後使用d2j-dex2jar工具就能夠將dex轉換成jar文件了。

3.6.最後使用jd-gui.exe工具打開jar文件,就能夠查看到代碼了。

4.其餘

4.1.若是遇到rom裏面是system.new.data這種形式的文件,要用SystemExtract這個工具將它解壓出來。

SystemExtract下載:http://forum.xda-developers.c...
參考連接:http://forum.xda-developers.c...

相關文章
相關標籤/搜索