Android反編譯(逆向)教程


在網上搜索Android反編譯教程,搜出來的文章要么是抄襲的,要么是太過與簡單,經過自己的實踐和摸索,我在這里記錄下如下反編譯一個Apk並修改一些資源文件,比如App名字、啟動界面等,然后重新打包成apk,你可以參照這個教程修改游戲里的金幣(估計沒這么簡單)。

工具

還是常用的三個工具:Apktool、dex2jar、jd-gui

Apktool

下載地址:Apktool

Linux下安裝教程:

1.   下載Linux wrapper script (鼠標右鍵另存為apktool)

2.   從這里下載最新版的apktool

3.   把下載的Jar文件重命名為apktool.jar

4.   把兩個文件(apktool.jar & apktool)移動到/usr/local/bin (需要root權限),使用chmod +x添加執行權限

5.   現在可以通過命令行來運行apktool了

使用方法

使用方式:
1.反編譯

1
apktool d test.apk

反編譯后在home目錄下生成了一個文件夾,各個文件簡單介紹如下:

apktool.yml: apk屬性.
AndroidManifest.xml: 清單文件, 非二進制.
original: 原始數據, 應用的二進制清單和簽名.
res: 資源文件.
smali: dex解析的代碼.smali是dex虛擬機的解析格式,在 dex2jar中,也包含smali格式的轉換.

打開AndroidManifest文件,
可以看到app_name和app的圖標:

1
android:icon="@drawable/icon_meetyou" android:label="@string/app_name"

接下來我們修改res/values/strings.xml下app_name的內容,並替換app圖標
2.重新打包成apk

1
apktool b test

打包后在dist文件夾下生成新的apk文件

dex2jar

dex2jar是dex轉換為jar的工具,很多人不會看smali文件,還是看java類文件比較舒服,這個時候可以借助這個工具來轉成java代碼。
下載地址:dex2jar

使用

從Apk中解壓出class.dex,使用dex2jar進行源碼解析,在當前目錄生成classes.dex.dex2jar.jar。
轉換過程中, 如果發生內存不夠, 修改 d2j_invoke.sh 的虛擬機配置.

1
java -Xms512m -Xmx1024m -classpath "${_classpath}" "$@"

接下來使用JD-GUI打開jar包,下載地址:jd-gui
其他工具

android killer

集成了上面幾個工具,並添加了一些功能
下載地址:androidkiller

ClassyShark

下載地址:github

ClassyShark是一款可以查看Android可執行文件的瀏覽工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的內容包括classes.dex文件,包、方法數量、類、字符串、使用的NativeLibrary等。

使用方法

1.打開apk文件java -jar ClassyShark.jar -open 
2.將生成的所有數據導出到文本文件里java -jar ClassyShark.jar -dump 
3.將指定類生成的文件導出到文本文件里java -jar ClassyShark.jar -dump 
4.打開ClassyShark,在GUI界面展示某特定的類
5.java -jar ClassyShark.jar -open 
6.檢測APKjava -jar ClassyShark.jar -inspect 
7.導出所有的字符串 java -jar ClassyShark.jar -stringdump

和其他的工具不同,ClassyShark通過分析App的項目結構和引用庫的信息,我們大致掌握了該項目的架構,一些開發中的經驗和不足,拓寬下開發視野,發現一些好用的開源庫,增強我們的武器,這些都是我們在開發中可以借鑒的東西。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM