Android APK反編譯技巧深入講解
導(dǎo)言:
在我們安卓開(kāi)發(fā)當(dāng)中,我們不僅需要掌握基礎(chǔ)的開(kāi)發(fā)技能,也需要掌握軟件的安全技能,這樣才可以讓我們的軟件能夠成為一款能夠真正可以進(jìn)行發(fā)布的軟件,同時(shí)也可以讓自己的核心技術(shù)不會(huì)被別人所盜取。首先我們應(yīng)當(dāng)了解的是,對(duì)于反編譯我們一共需要三個(gè)工具,它們分別是:APKTool,dex2jar,和jd-gui。APKTool:用于解析apk的res文件以及AndroidManifest.xml文件dex2jar:用于把a(bǔ)pk解壓后生成的classes.dex文件解析為后綴為jar的文件,與下面的jd-gui工具聯(lián)合使用則可以得到我們的核心Java代碼jd-gui:將上一步所得到的jar文件解析為Java文件,從而得到軟件的核心代碼
這就是反編譯的核心流程,凡是沒(méi)有被MD5算法加密,或者加固過(guò)的APK都可以利用這個(gè)方法來(lái)進(jìn)行反編譯破解。
第一步.來(lái)到官網(wǎng)下載APKtool
網(wǎng)址:https://ibotpeaches.github.io/Apktool/install/
界面如下:
我們需要把下載的兩個(gè)文件都放在同一個(gè)文件夾下,這個(gè)文件夾可以自己進(jìn)行選擇或者新建,本人這里在E盤(pán)下創(chuàng)建了一個(gè)androidsafe的文件夾用于保存這個(gè)工具,點(diǎn)擊第二個(gè)鏈接之后會(huì)出現(xiàn)如下界面:
第二步.將需要進(jìn)行反編譯的文件放到剛剛我們創(chuàng)建好的那個(gè)文件夾下
此時(shí)我們的E:/androidsafe文件夾下只有這三個(gè)文件,同時(shí)我們也需要把下載的第二個(gè)文件apktool-2.4.0.jar更改成apktool.jar,不然是無(wú)法運(yùn)行這個(gè)工具的。同時(shí)把需要反編譯的apk文件移動(dòng)到這個(gè)文件夾下。
第三步.開(kāi)始反編譯
鍵盤(pán)輸入win+r,進(jìn)入cmd的windows命令行模式。
利用cd命令將命令行模式進(jìn)入剛剛創(chuàng)建的這個(gè)文件夾下,
再輸入:
apktool d 您拿到這個(gè)文件夾下的需要反編譯的apk文件名.apk
如下圖所示:
這樣我們的反編譯過(guò)程就完成了。
我們?cè)賮?lái)看看剛剛我們所創(chuàng)建的文件夾就會(huì)多出一個(gè)名為appdebug的文件了:
文件目錄如下:
可以說(shuō)是十分成功了。其中的res文件夾是程序當(dāng)中的所有資源文件,smali文件夾下存放了程序所有的反匯編代碼。apktool這個(gè)工具主要是用來(lái)解析資源res和資源AndroidManifest.xml的,除此之外的,我們還需要另外的工具來(lái)解析Java源碼,利用下以下兩個(gè)工具則可以用于解析Java源代碼,它們分別是:dex2jar和jd-gui.
第四步.將apk文件解析為后綴為dex的文件
1.首先我們把剛剛用于解析的apk文件的后綴改為zip,然后隨便用一個(gè)你已經(jīng)安裝過(guò)的壓縮包軟件把它解壓就可以了
2.解壓之后你會(huì)在解壓之后的文件當(dāng)中發(fā)現(xiàn)一個(gè)名為:classes.dex的文件,這樣就把a(bǔ)pk的dex文件得到啦!如下圖所示:
第五步.利用dex2jar工具把dex文件解析成后綴為jar的文件
dex2jar的下載網(wǎng)址是:https://bitbucket.org/pxb1988/dex2jar/downloads/
1.下載到我們剛剛安裝apktool的文件夾下,然后解壓,更改解壓后的文件名為dex2jar
2.將剛剛所得到的classes.dex文件剪切到dex2jar文件夾下,如下圖所示:
3.打開(kāi)命令行cmd模式,利用cd命令將目錄切換到dex2jar的文件夾下,同時(shí)鍵入以下代碼:
d2j-dex2jar.bat classes.dex
這個(gè)時(shí)候返回文件夾,立刻就可以看到在classes.dex文件夾下就多了個(gè)jar文件了。
第六步.將jar文件解析為Java文件
下面就來(lái)到最激動(dòng)人心的一步,得到我們的Java文件啦!
首先下載jd-gui,網(wǎng)址如下:
https://github.com/java-decompiler/jd-gui/releases/
這里windows版本的就直接下載后解壓,解壓后點(diǎn)擊后綴為exe的可執(zhí)行文件打開(kāi)就是了,再將jar文件拖進(jìn)去就好啦!:
如下圖所示:
反編譯的步驟還是挺簡(jiǎn)單的,但是如果被加密后再進(jìn)行反編譯難度就大了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件
AutoCompleteTextView組件被用在輸入框中能實(shí)現(xiàn)輸入內(nèi)容自動(dòng)補(bǔ)全的功能,類(lèi)似于大家平時(shí)用Google時(shí)的輸入聯(lián)想,這里我們來(lái)用實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件,特別是實(shí)現(xiàn)郵箱地址補(bǔ)全的例子,非常實(shí)用2016-05-05DCloud的native.js調(diào)用系統(tǒng)分享實(shí)例Android版代碼
本文為大家分享了DCloud的native.js如何調(diào)用系統(tǒng)分享功能Android版的實(shí)例代碼,直接拿來(lái)就用2018-09-09淺析Android手機(jī)衛(wèi)士關(guān)閉自動(dòng)更新
保存數(shù)據(jù)的四種方式,網(wǎng)絡(luò),廣播提供者,SharedPreferences,數(shù)據(jù)庫(kù)。接下來(lái)通過(guò)本文給大家介紹android手機(jī)衛(wèi)士關(guān)閉自動(dòng)更新的相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2016-04-04Android Studio中一套代碼多渠道打包的實(shí)現(xiàn)方法
這篇文章主要介紹了Android Studio中一套代碼多渠道打包的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-05-05完美解決關(guān)于禁止ViewPager預(yù)加載的相關(guān)問(wèn)題
本篇文章主要介紹了完美解決關(guān)于禁止ViewPager預(yù)加載的相關(guān)問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Android編程實(shí)現(xiàn)對(duì)話框形式進(jìn)度條功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)對(duì)話框形式進(jìn)度條功能,結(jié)合具體實(shí)例形式分析了Android對(duì)話框形式進(jìn)度條的功能與布局相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09解決Android studio Error:(30, 31) 錯(cuò)誤: 程序包 不存在的問(wèn)題
這篇文章主要介紹了解決Android studio Error:(30, 31) 錯(cuò)誤: 程序包 不存在的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android開(kāi)發(fā)之拖動(dòng)條和評(píng)分組件用法分析
這篇文章主要介紹了Android開(kāi)發(fā)之拖動(dòng)條和評(píng)分組件用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android拖動(dòng)條及評(píng)分組件的布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09