溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android應(yīng)用中apk反編譯的示例分析

發(fā)布時(shí)間:2021-06-09 09:58:19 來源:億速云 閱讀:181 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Android應(yīng)用中apk反編譯的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

概述

這里是Mac環(huán)境,如果是window環(huán)境的同學(xué),在環(huán)境搭建和工具上可以選擇Window環(huán)境的。先看看需要到的工具;

1、apktool:https://ibotpeaches.github.io/Apktool/install/

2、dex2jar:https://github.com/pxb1988/dex2jar

3、jd-gui:http://jd.benow.ca

注意:工具一定要是當(dāng)前最新版本的,否則很容易出現(xiàn)一些莫名其妙的錯(cuò)誤。

先看一下項(xiàng)目的包結(jié)構(gòu)

Android應(yīng)用中apk反編譯的示例分析

然后在簡單看MainActivity中的內(nèi)容。(這里給出該類的內(nèi)容,只是為了后期和反編譯出來的內(nèi)容做個(gè)對(duì)比)

Android應(yīng)用中apk反編譯的示例分析

好了,下面開始我們的反編譯之路了 。我們一個(gè)一個(gè)工具來說。

安裝apktool

當(dāng)我們下載好apktool.jar以后,可能有的人會(huì)有后綴名,都改為apktool.jar,然后終端輸入命令open /usr/local/bin,然后將apktool和apktool.jar移到/usr/local/bin文件夾下,就OK了,判斷apktool是否安裝成功,可以通過命令:apktool 來判斷

Android應(yīng)用中apk反編譯的示例分析

如果出現(xiàn)紅色圈的這一大片,則說明安裝成功。

注意:dex2jar和jd-gui不需要安裝,直接解壓即可。

使用apktool反編譯

1、首先使用命令:cd xxx/xxx/xxx (xxx/xxx/xxx代表apk的存放路徑)

2、使用命令:apktool d app-debug.apk (app-debug.apk是你的apk名稱)

Android應(yīng)用中apk反編譯的示例分析

到這一步以后,會(huì)在你存放apk包的路徑下生成一個(gè)文件夾

Android應(yīng)用中apk反編譯的示例分析

進(jìn)入文件夾,你會(huì)發(fā)現(xiàn),有我們項(xiàng)目的資源文件和xml文件。那么代碼呢???沒有看到,別急

在執(zhí)行一個(gè)命令:apktool b xxx (xxx代表剛剛我們生成的文件夾的名稱)

執(zhí)行完上面的命令以后,可以看到文件夾中多了一個(gè)build文件夾,而這個(gè)build文件夾下的classes.dex文件就是我們最終需要的。

Android應(yīng)用中apk反編譯的示例分析

好了,apktool的工作到這里就結(jié)束了,下面我們需要另外兩個(gè)工具dex2jar,jd-gui。

dex2jar

1、使用命令:cd xxx/xxx/xxx  (xxx/xxx/xxx代表dex2jar的路徑)

2、使用命令:sh d2j-dex2jar.sh -f xxx/xxx/xxx  (xxx/xxx/xxx代表classes.dex的路徑)

Android應(yīng)用中apk反編譯的示例分析

然后在dex2jar文件夾下會(huì)生成classes-dex2jar.jar的架包,這個(gè)包,就是我們的Java文件代碼。

那么怎么看代碼呢?jd-gui上場了。打開jd-gui,直接將classes-dex2jar.jar拖進(jìn)來,就可以可以看到了。

Android應(yīng)用中apk反編譯的示例分析

對(duì)比一下最前面的MainActivity代碼全部被反編譯出來了。

很多人就會(huì)說,你這個(gè)項(xiàng)目是demo,并沒有做混淆,所以可以反編譯出來??但是,需要知道的是,如果做了混淆,一樣可以反編譯出來,只不過說里面的很多類名,方法名,變量名等等都是以a,b,c這樣的形式存在,但是這種并不影響能過看出你的代碼邏輯,只是給閱讀增加了一絲的難度而已。所以,項(xiàng)目做混淆,只是最基礎(chǔ)的一種方式,還有很多很多我們需要考慮的。

關(guān)于“Android應(yīng)用中apk反編譯的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI