我的GitHub | 我的博客 | 我的微信 | 我的郵箱 |
---|---|---|---|
baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
補充一個利器:jadx
核心功能:Dex to Java decompiler (將Dex轉為Java的反編譯器)
最佳實踐
官方 readme 寫的比較啰嗦,如果只想用其核心的功能,只需按如下步驟使用即可。
1、去 GitHub 下載:所有 releases 版本,例如 jadx-1.1.0.zip
2、解壓之后,進入jadx-***/bin
目錄,雙擊jadx-gui.bat
打開 GUI 版本
- 其中
jadx.bat
為命令行版本,啟動命令行版本時可以帶大量的參數,詳細使用方式請看官方文檔。- 也可以進入
jadx-***/lib
目錄,雙擊jadx-gui
打開 GUI 版本。- lib 目錄里面全是各種依賴的第三方jar包(比如常見的gson、rxjava、asm、guava),以及本工具自己的第一方jar包(jadx-cli、jadx-core、jadx-gui)。
3、選擇apk文件,等個一兩分鍾即反編譯完成了,然后點擊菜單導航->搜索文本
,再等個三五分鍾,就可以全文搜索了。
以前在AS中,我們只能全文搜索
源碼
,依賴的jar包、aar等是搜不到的,通過這種方式,我們可以搜到包含jar包、aar中的任何內容。經過混淆的APP,反編譯出來的代碼肯定也是混淆的。
官方文檔的一些介紹
jadx - Dex to Java decompiler
Command line
and GUI tools
for produce Java source code from Android Dex and Apk files
Main features:
- decompile Dalvik bytecode to java classes from APK, dex, aar and zip files
- decode
AndroidManifest.xml
and other resources fromresources.arsc
- deobfuscator(去混淆) included
jadx-gui features:
- view decompiled code with highlighted syntax(語法高亮)
- jump to declaration(點擊跳轉到方法、類聲明的地方)
- find usage
- full text search(全文搜索)
See these features in action here: jadx-gui features overview
打開
After download unpack zip file go to bin
directory and run:
jadx
- command line versionjadx-gui
- UI version- On Windows run
.bat
files with double-click
Note: ensure you have installed
Java 8
or later 64-bit version.
常用反編譯工具簡介
最佳實踐
主要使用Android逆向助手
來操作:
- 點擊
反編譯apk
,完成后res下的所有資源就都可以正常使用了,相當於apktool的功能------目前已失效,但是直接用rar解壓是可以的 - 點擊
提取dex
,可以提取出apk文件中的.dex文件,如果有多個.dex文件,則只會提取第一個;建議手動把.apk更改后綴后解壓並拷出.dex文件 - 點擊
dex轉jar
,相當於dex2jar的功能 - 點擊
jd打開jar
,可以自動使用jd-gui
打開jar文件,現在已經可以查看源碼了 - 在
jd-gui
中不能修改源碼,可點擊把所有源碼保存起來后就能修改了 - 可使用
AXMLPrinter2
提取、轉化XML文件
常用工具介紹
常用工具:
apktool
:提取res目錄下的【資源】文件(drawable、layout、anim、color等)dex2jar
:將【.dex】文件(可執行文件)轉化為【.jar】文件jd-gui
:將編譯后的【.jar】或【.class】文件以【.java】源碼格式查看AXMLPrinter2
,作用:在apktool搞不定的情況下獲取xml布局文件--目前apktool已失效,但本工具還能用XJad
:和jd-gui作用類似,是一款Java源程序反編譯軟件Android逆向助手
:整合以上工具的而成的一個圖形化工具集
官網及下載地址:
apktool
apktool的使用:apk反編譯生成程序的源代碼和圖片、XML配置、語言資源等文件
- 解壓得到3個文件:aapt.exe,apktool.bat,apktool.jar
- 將需要反編譯的APK文件放到該目錄下
- 打開命令行界面 ,定位到apktool文件夾,輸入以下命令:【apktool.bat d -f】【test.apk bqt】(test.apk是要反編譯的APK文件全名,可以直接拖拽過來,bqt為反編譯后存放的目錄)
- 成功后發現在文件夾下多了個bqt文件夾,點擊便可以查看該應用的所有資源文件了。
- 如果你想將反編譯完的文件重新打包成apk,輸入apktool.bat b test,完成后在test文件下便多了2個文件夾:build和dist(存放着打包出來的APK文件)
官方的apktool工具只包含以下三個文件,只能使用CMD命令執行
不過目前有很多重新打包后的版本,如下
dex2jar、jd-gui、XJad
dex2jar,jd-gui,XJad的使用
- 首先將apk文件后綴改為zip或rar並解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的
- 然后將classes.dex復制到d2j-dex2jar.bat(名稱可能不太一樣)所在目錄文件夾中
- 在命令行下定位到d2j-dex2jar.bat所在目錄,運行ded2j-dex2jar.bat classes.dex
- 最后,進入jdgui文件夾雙擊jd-gui.exe,打開上面生成的jar包classes_dex2jar.jar,即可看到源代碼了
- 不過,被混淆過的類文件名稱以及里面的方法名稱都會以a,b,c....之類的樣式命名
XJad簡介
- XJad是基於Jad核心的Java源程序反編譯軟件,內置
Jad1.5.8e2
; - 可處理多個
*.class
文件,可以處理文件夾內的所有文件,甚至可以處理*.jar
文件; - 帶有多頁面文本編輯器,也可集成在資源管理器中,隨時點擊右鍵都可進行操作;
- 支持java語法的高亮顯示;
XJad使用說明
- 打開一個或者多個
*.class
文件,XJad反編譯后,重命名為*.java
文件,保存至當前文件夾,並在編輯器中打開查看; - 打開一個文件夾,XJad將該文件夾下所有
*.class
文件進行反編譯,並保存至該文件夾下,依據包路徑信息生成文件夾路徑,如com.spring.framework.*
,將建立com\spring\framework
的文件夾結構; - 打開一個
*.jar
文件,XJad將該Jar文件中的所有*.class
文件解壓縮到臨時目錄並進行反編譯,並將源文件帶包路徑信息保存至當前文件夾下名稱為“~” + *.jar
的文件夾中;
AXMLPrinter2
作用:目前很多APP已經混淆,使用APKTOOL已經提取不出資源文件,使用這個工具可以將二進制的xml布局文件轉化為正常的形式
弊端:需要一個一個的轉換,且轉換出來后有大量需要修改的地方
下載地址 網上流傳的部分版本可能不能使用
使用步驟:
- 更改apk后綴名為.rar並解壓
- 找到解壓后res目錄下的要參考的布局文件,並將此文件復制到和AXMLPrinter2同目錄下
- 打開cmd並定位到此目錄下
- 執行命令
java -jar AXMLPrinter2.jar bqt.xml > bqt2.xml
便可把二進制的bqt.xm
文件反編譯成可以閱讀的bqt2.xml
文件
eclipse 安裝 jd-gui 插件
eclipse安裝使用JD插件:
- Download and unzip the JD-Eclipse Update Site,
- Launch Eclipse,
- Click on "Help > Install New Software...",
- Click on button "Add..." to add an new repository,
- Enter "JD-Eclipse Update Site" and select the local site directory,
- Check "Java Decompiler Eclipse Plug-in",
- Next, next, next... and restart Eclipse.Installation
注意,因為眾所周知的原因,不要選擇聯網更新之類的操作
2016-04-07