Android反編譯(Mac系統(tǒng)下的ApkTool、dex2jar简僧、JD-GUI)

注意:本篇文章是本人閱讀相關(guān)文章的總結(jié)建椰,方便以后查閱,所有內(nèi)容非原創(chuàng),侵權(quán)刪岛马。

本篇文章內(nèi)容來自于
1.Android高級進階 顧浩鑫
2.相對應(yīng)的知識塊的最下方會給出原來的帖子的鏈接

前言

用途:用反編譯工具看某個APP是如何實現(xiàn)某個功能的棉姐。

一個APP的包中包含代碼文件和資源文件。
因此反編譯也相應(yīng)分為兩部分:
1??對資源文件的反編譯 2??對Java代碼的反編譯啦逆。

目錄

  1. 資源文件的反編譯(APKTool)
    --1.1 ApkTool的安裝
    --1.2 ApkTool的使用
  2. Java代碼的反編譯(dex2jar+JD-GUI)
    --2.1 dex2jar+JD-GUI的安裝
    --2.2 dex2jar+JD-GUI的使用

1. 資源文件的反編譯(APKTool)

Android中對資源文件的反編譯一般使用ApkTool這個工具谅海,它可以反編譯resources. arsc、9.png和XML等文件蹦浦。同時它也可以將經(jīng)過修改的反編譯文件重新打包成APK文件扭吁。

1.1 ApkTool的安裝

ApkTool支持windows/linux/mac

首先打開ApkTool官網(wǎng)安裝說明+下載地址,找到對應(yīng)的系統(tǒng)響應(yīng)的安裝說明

官網(wǎng)中Mac的安裝說明如下,則按照步驟來

**Mac OS X**:
    1.  Download Mac [wrapper script](https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/osx/apktool) (Right click, Save Link As `apktool`)
    2.  Download apktool-2 ([find newest here](https://bitbucket.org/iBotPeaches/apktool/downloads/))
    3.  Rename downloaded jar to `apktool.jar`
    4.  Move both files (`apktool.jar` & `apktool`) to `/usr/local/bin` (root needed)
    5.  Make sure both files are executable (`chmod +x`)
    6.  Try running apktool

第一步 得到apktool文件
1.Download Mac wrapper script (Right click, Save Link As apktool)
即打開wrapper script頁面侥袜,將該頁面的內(nèi)容另存為apktool文件

第二步:得到apktool.jar文件
1.Download apktool-2 (find newest here)
2.Rename downloaded jar to apktool.jar
即到ApkTool托管地址下載最新的版本蝌诡,并重命名為apktool.jar

第三步:配置apktool命令
4.Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
5.Make sure both files are executable (chmod +x)
即將apktool.jar和apktool兩個文件移動到/usr/local/bin目錄中(需要有root權(quán)限),同時通過命令chmod +x給這兩個文件增加可執(zhí)行權(quán)限枫吧。

appledeMacBook-Pro:~ apple$ chmod +x  /usr/local/bin/apktool.jar

注意apktool這個腳本是為了方便我們在命令行Terminal中直接執(zhí)行apktool命令而增加的浦旱,不使用這個腳本,則運行ApkTool工具的命令為:

appledeMacBook-Pro:~ apple$ java -jar /usr/local/bin/apktool.jar

1.2 ApkTool的使用

第一步: 首先得到一個APK文件九杂,然后在命令行中進入這個文件所在目錄颁湖,執(zhí)行命令apk

//進入文件所在目錄
appledeMacBook-Pro:Desktop apple$ cd /Users/apple/Desktop/androddemo/ProguardDemo/app/build/outputs/apk/release

//執(zhí)行命令
appledeMacBook-Pro:release apple$ java -jar /usr/local/bin/apktool.jar d app-release.apk
//如果配置了apktool 則為apktool d app-release.apk

第二步:反編譯成功后,在APK同級目錄中得到新的目錄例隆。


其中包括明文形式的圖片資源甥捺、布局文件資源、動畫資源以及APK代碼的smali文件等镀层。
我們也可以通過修改其中的某些資源文件或者smali文件镰禾,然后通過命令apktool b test重新打包成APK。

2. Java代碼的反編譯(dex2jar+JD-GUI)

2.1 dex2jar+JD-GUI的安裝

反編譯java代碼的常用工具是dex2jar唱逢,查看反編譯后的結(jié)果是JD-GUI吴侦。
JD-GUI下載地址
dex2jar下載地址1
dex2jar下載地址2

JD-GUI安裝后意外退出的解決:

//使用 brew 進行安裝
brew cask install jd-gui
//如果沒有brew命令,則進行安裝
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.2 dex2jar+JD-GUI的使用

反編譯java代碼的常用工具是dex2jar坞古,這個工具的輸入是APK文件中的classes.dex文件备韧,輸出是一個jar文件。而這個jar包用JD-GUI來查看痪枫。

第一步:得到classes.dex文件
將xxx.apk文件解壓后(將xxx.apk改名為xxx.zip則可解壓)织堂,則得到classes.dex文件,并將classes.dex文件拷貝到dex2jar根目錄中听怕。

問題:無法進行解壓
解決:則用mac的unzip命令進行解壓

appledeMacBook-Pro:~ apple$ unzip /Users/apple/Desktop/反編譯工具/app-release.zip -d /Users/apple/Desktop/反編譯工具

第二步:執(zhí)行dex2jar命令進行反編譯
在命令行Terminal中執(zhí)行命令進行字節(jié)碼的反編譯

//進入dex2jar的目錄
appledeMacBook-Pro:release apple$ cd /Users/apple/Desktop/反編譯工具/dex2jar-2.0
//聲明d2j-dex2jar.sh文件執(zhí)行權(quán)利
appledeMacBook-Pro:dex2jar-2.0 apple$ sudo chmod +x d2j-dex2jar.sh
//進行反編譯
appledeMacBook-Pro:dex2jar-2.0 apple$ ./d2j-dex2jar.sh  classes.dex

完成反編譯后,在dex2jar目錄中得到一個jar文件虑绵,


第三步:查看反編譯后的代碼
用JD-GUI打開它尿瞭。
將xx.jar拖拽到JD-GUI中即可查看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翅睛,隨后出現(xiàn)的幾起案子声搁,更是在濱河造成了極大的恐慌,老刑警劉巖捕发,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疏旨,死亡現(xiàn)場離奇詭異,居然都是意外死亡扎酷,警方通過查閱死者的電腦和手機檐涝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谁榜,你說我怎么就攤上這事幅聘。” “怎么了窃植?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵帝蒿,是天一觀的道長。 經(jīng)常有香客問我巷怜,道長葛超,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任延塑,我火速辦了婚禮绣张,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘页畦。我一直安慰自己胖替,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布豫缨。 她就那樣靜靜地躺著独令,像睡著了一般。 火紅的嫁衣襯著肌膚如雪好芭。 梳的紋絲不亂的頭發(fā)上燃箭,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音舍败,去河邊找鬼招狸。 笑死,一個胖子當著我的面吹牛邻薯,可吹牛的內(nèi)容都是我干的裙戏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厕诡,長吁一口氣:“原來是場噩夢啊……” “哼累榜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灵嫌,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤壹罚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寿羞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猖凛,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年绪穆,在試婚紗的時候發(fā)現(xiàn)自己被綠了辨泳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虱岂。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖漠吻,靈堂內(nèi)的尸體忽然破棺而出量瓜,到底是詐尸還是另有隱情,我是刑警寧澤途乃,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布绍傲,位于F島的核電站,受9級特大地震影響耍共,放射性物質(zhì)發(fā)生泄漏烫饼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一试读、第九天 我趴在偏房一處隱蔽的房頂上張望杠纵。 院中可真熱鬧,春花似錦钩骇、人聲如沸比藻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽银亲。三九已至,卻和暖如春纽匙,著一層夾襖步出監(jiān)牢的瞬間务蝠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工烛缔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馏段,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓践瓷,卻偏偏與公主長得像院喜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晕翠,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353