安卓逆向系列教程(三)靜態(tài)分析工具

安卓逆向系列教程(三)靜態(tài)分析工具

作者:飛龍

以下工具可能都需要先安裝 JDK,安裝方法就不說了,隨便一搜就是。

Android Killer

幾年之前,我們要破解 APK,可能需要用到 apktool、dex2jar、jd-gui 以及 smali2java 等工具。還需要在控制臺中鍵入命令,但現(xiàn)在有了集成工具,一切都變得省事了。

我們從這里下載 Android Killer。

我們打開AndroidKiller.exe,它的啟動界面是這樣,很酷吧。

打開之后,點(diǎn)擊左上角的“打開”按鈕,選擇要反編譯的 APK,或者直接把 APK 拖進(jìn)來。軟件會馬上開始反編譯。

等一會兒,我們會看到反編譯完成。之后切換到“工程管理器”,可以看到項(xiàng)目的結(jié)構(gòu),點(diǎn)擊其中的文件可以在右邊看到文件內(nèi)容:

點(diǎn)擊編輯框上方的 Java 圖標(biāo),就會打開熟悉的 jd-gui 窗口:

我們切換到“工程搜索”,在下方的“搜索字符”輸入框中輸入app_name,點(diǎn)擊下方的“搜索”。下方的框中會顯示結(jié)果。我們點(diǎn)擊結(jié)果,編輯框中會定位到具體文件。我們可以修改一下。

之后我們點(diǎn)擊Android選項(xiàng)卡,點(diǎn)擊第一項(xiàng)“編譯”。

等一小會兒,重編譯就完成了。

如果我們啟動了模擬器,可以使用右邊的幾個(gè)按鈕安裝并運(yùn)行。

此外,“工具”選項(xiàng)卡中有很多實(shí)用工具,大家可以一一嘗試。

APK 改之理

這里下載軟件。

雙擊ApkIDE.exe啟動程序。如果是 XP 系統(tǒng)啟動不了它,請下載安裝 .Net Framework 2.0。

第一次啟動時(shí),軟件會自動查找系統(tǒng)中的 JRE 安裝目錄,如果沒有找到會提示你配置 SDK,可以點(diǎn)擊菜單 “工具->配置SDK` 對 JDK 進(jìn)行配置,如下圖。JDK 的安裝路徑必須配置(如果不配置,則無法進(jìn)行修改操作),Android SDK 則隨意(有些功能需要用到它,比如 ddms 等,但這些功能都無關(guān)修改工作)。

單擊菜單“項(xiàng)目->打開Apk”選擇要修改的 Apk 文件(注:文件名稱必須只有字母、數(shù)字、下劃線、空格、點(diǎn)號等組成,不能包含中文或其它亞洲字符)。

在打開 Apk 文件時(shí) Apk 改之理會先對其進(jìn)行基本的解析(包括它的名稱、包、權(quán)限等),然后根據(jù)該 apk 應(yīng)用的包名生成它的同名工作目錄,如果這個(gè)工作目錄已經(jīng)存在,Apk 改之理會詢問是否要重新反編譯 Apk。這里要注意,已有的工作目錄通常是你以前修改這個(gè) Apk 應(yīng)用時(shí)所生成的工作目錄,如果你要繼續(xù)這個(gè)修改操作,則單擊“否”繼續(xù)使用它,否則就重新反編譯得到一個(gè)全新的源代碼。

提示:如果你想繼續(xù)舊工作但卻誤點(diǎn)了“是”按鈕,也不用擔(dān)心,刪除的目錄被扔進(jìn)了系統(tǒng)垃圾箱,你可以直接去系統(tǒng)回收站恢復(fù)?;謴?fù)時(shí)注意,如果你之前成功對這個(gè)應(yīng)用進(jìn)行過 dex2jar 操作(由軟件在反編譯 apk 時(shí)自動進(jìn)行,但可能會因一些原因而失?。敲椿厥照局袝吹絻蓚€(gè)同名的目錄,選中它們右鍵恢復(fù)即可。(注:這個(gè)特性 Apk 改之理 2.1 或更高版本中有效)

現(xiàn)在你可以使用軟件的搜索、替換等功能來對源代碼進(jìn)行修改,這種修改包括漢化、去廣告、改名、替換資源、圖片、xx 等等。下圖中各個(gè)圖標(biāo)按鈕都有提示文字,可以將鼠標(biāo)懸浮在按鈕上顯示文字提示。具體的各項(xiàng)說明會單獨(dú)寫個(gè)文章來詳細(xì)解釋,基本上也沒什么難點(diǎn)。

這里先提示一些沒有說明的小功能:

(1)在文件樹上,或搜索后得到的文件列表上,按住 Shift 鍵并單擊鼠標(biāo)右鍵會直接顯示操作系統(tǒng)菜單。

(2)在“輸入輸出面板組”的搜索結(jié)果面板中,搜索結(jié)果列表以標(biāo)簽的形式各自分開,鼠標(biāo)懸浮在標(biāo)簽上會顯示對應(yīng)搜索結(jié)果的搜索條件。

(3)工作目錄下的第一個(gè)build目錄下的文件不會被搜索(因?yàn)檫@個(gè)是 Apktool 編譯時(shí)用到的,與我們的修改無直接關(guān)系)。

修改完成后單擊菜單“編譯->編譯生成Apk”重新將源代碼打包成 apk 文件,新生成的 apk 存放在原 apk 的同級目錄下,其名稱以ApkIDE_開頭。

單擊菜單“編譯->獲取生成的”可以直接在資源瀏覽器中定位到 apk 所在的目錄。

直接測試 Apk 需要用到菜單“ADB”下的菜單命令,如果你已經(jīng)將設(shè)備連接到電腦,或者直接在電腦上打開了安卓模擬器,可以單擊菜單“ADB->安裝生成的APK”直接向設(shè)備或模擬器安裝修改生成的 apk,然后再可以使用adb logcat來觀察其運(yùn)行狀況。

如果發(fā)現(xiàn) ADB 相關(guān)命令不起作用,你可以先用adb devices命令查看設(shè)備是否連接成功(可以直接在輸入輸出面板組的命令窗口輸入adb devices),也可以使用菜單“工具->Dalvik Debug Monitor Service”(ddms)來測試。

JEB

首先在這里下載軟件。

打開軟件之后,點(diǎn)擊左上角的文件夾圖標(biāo),之后選擇要反編譯的 APK 來打開文件。之后會進(jìn)行反編譯,完成后,主界面是這樣:

左邊的樹形圖會顯示項(xiàng)目的所有包和類。右邊的編輯框中會顯示 Smali 代碼,以及字符串等資源。選擇Decompiled Java選項(xiàng)卡,還會看到對應(yīng)的 Java 代碼。

VTS(Virtuous Ten Studio)

打開 VTS 之后,首先我們需要點(diǎn)擊File->New Solution新建一個(gè) solution:

接下來需要選擇要反編譯的文件:

之后是項(xiàng)目類型、項(xiàng)目名稱、解決方案名稱及位置:

這里我們?nèi)x:

最后選擇 Apktool 的版本:

然后它會開始反編譯:

完成后可以在左側(cè)看到目錄:

點(diǎn)擊里面的文件可以查看 Smali 代碼:

在文件上點(diǎn)擊右鍵,會看到Open Java Source

我們點(diǎn)擊它,可以查看 Java 代碼:

我們可以點(diǎn)擊Home->Build All來重編譯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容