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