天天看點

反編譯一款APP然後重新打包(MacOS環境)

最近公衆号背景有小夥伴留言,怎麼把一款APP改成自己的資訊呀,咳咳,這又來送題材了,今天水一把APP

反編譯

+

回編譯

,文中會針對一款APP進行簡單的修改資訊,問問題的小夥伴還不火速右上角支援一下。

MacOS跟Windows我是分開寫的,怕你說平台不一緻就打退堂鼓了。

MacOS:https://www.cnblogs.com/niceyoo/p/13296260.html

Windows:https://www.cnblogs.com/niceyoo/p/13303136.html

一、下載下傳jadx并編譯

下載下傳位址:https://github.com/skylot/jadx/archive/master.zip

下載下傳後進入檔案目錄執行

./gradlew dist

反編譯一款APP然後重新打包(MacOS環境)

通過如上指令,可以幫我們打包出 build 目錄,接下來就全靠這個build目錄幹 ”大事“ 了,我們來看看這個目錄下的檔案:

反編譯一款APP然後重新打包(MacOS環境)

二、安裝apktool

接下來安裝今天的第二個工具——apktool

下載下傳連結:https://ibotpeaches.github.io/Apktool/install/

1、下載下傳apktool檔案

打開網址後找到macos節點,對着

wrapper script

右鍵

反編譯一款APP然後重新打包(MacOS環境)

彈窗儲存時一定要選擇

所有檔案

格式,注意,沒有字尾,沒有字尾。

反編譯一款APP然後重新打包(MacOS環境)

2、下載下傳apktool.jar

點選macos節點上的 (find newest here)

反編譯一款APP然後重新打包(MacOS環境)

進入該界面後,檢視右側jar下載下傳清單,當然下載下傳最新檔案:

反編譯一款APP然後重新打包(MacOS環境)

3、配置apktool執行權限

至此,我們下載下傳了兩個檔案,我們把這兩個檔案放到

/usr/local/bin

目錄下

反編譯一款APP然後重新打包(MacOS環境)

然後在該目錄控制台執行指令:

chmod +x apktool.jar apktool

cd /usr/local/bin

chmod +x apktool.jar apktool
           

4、測試apktool權限

在終端執行如下指令:

apktool

,隻要列印内容說明沒問題

反編譯一款APP然後重新打包(MacOS環境)

三、開始反編譯APP

我們找個簡單點的APP,有人提議用我的塗塗影院,出門右拐,請私下自己嘗試,我怎麼會公開處刑自家孩子。

某視訊APP:https://niceyoo.lanzoux.com/iCi92eksqjc

1、反編譯

反編譯用到的是第二個下載下傳的工具—apktool,我們先下載下傳上方連結中的app,然後在該檔案目錄的控制台下執行如下指令:

apktool d 名稱.apk

apktool d 一個TV.apk
           

d,代表反編譯,b代表回編譯,不要記混。

反編譯一款APP然後重新打包(MacOS環境)

我們簡單看一下這個目錄:

反編譯一款APP然後重新打包(MacOS環境)

如圖,其中,res檔案夾下存放的是反編譯出來的所有資源,smali檔案夾下存放的是反編譯出來的所有代碼,

AndroidManifest.xml

則是經過反編譯還原後的

manifest

檔案。

smali

檔案夾下的檔案

smali

檔案使用的是Android虛拟機所使用的寄存器語言,如果看的懂smail檔案的話,就可以修改源代碼的邏輯了,比如增加一個圖檔、增加一行文字等等都是修改的smail檔案;

在這之前我們得看到代碼才行,不然都不知道在哪改,改到哪,那麼接下來就是去看APP的源碼了,是以這就用到第一個安裝的軟體了—jadx

2、檢視源碼資料

需要用到第一個工具—jadx,進入

buil/jadx/bin

目錄。接下來的指令就是基于這4個檔案來執行的,但是這個路徑太長了,幹脆我們把它加入到macos全局環境變量中:

vi ~/.bash_profile
           

添加如下格式内容:

export PATH=$PATH:/Users/我是路徑,請自行修改/jadx/build/jadx/bin
           
反編譯一款APP然後重新打包(MacOS環境)

接下來我們複制一份 《一個TV.apk》,然後将複制的apk字尾改成zip,得到如下:

反編譯一款APP然後重新打包(MacOS環境)

進入 《一個TV的副本》,這一步主要是想得到

classes.dex

檔案,該檔案是擷取源碼的重點,接下來我們在該目錄控制台執行如下指令:

jadx-gui classes.dex
           
反編譯一款APP然後重新打包(MacOS環境)

通過

jadx-gui

工具源碼是看到了,具體代碼細節就不帶着大家一塊看了;可能有小夥伴會好奇,怎麼沒看到實質性的源碼呀,别着急,再執行試試:

jadx -d out classes.dex
           

執行該指令,反編譯後會把源碼放入out檔案夾下(如果out不存在它會自動建立)

反編譯一款APP然後重新打包(MacOS環境)
補充:這一小節的目的就是為了使用jadx-gui可視化界面檢視app的源碼,小夥伴千萬不要混了,主要的、以及接下來要操作的還是在第一小節反編譯出來的代碼。

3、魔改資料

代碼也看到了,本來計劃這篇就帶大家修改源碼資料,但是為了照顧大部分小夥伴,接下來就隻修改一下APP名稱,然後重新打包APP,下一篇補充:

修改布局

修改smali代碼

我們再回到第一節使用apktool反編譯出來的代碼,找到根目錄的

AndroidManifest.xml

,修改檔案中的label标簽對應的string.xml檔案中的值,這次我們簡單粗暴點,直接修改内容吧:

反編譯一款APP然後重新打包(MacOS環境)

修改完記得儲存,然後我們就開始回編譯了。

4、回編譯APP

退回到 《一個TV》 檔案夾目錄,執行如下指令

apktool b 檔案夾名稱

apktool b 一個TV
           
反編譯一款APP然後重新打包(MacOS環境)

執行完該指令後,會在 《一個TV》 檔案夾下生成一個 dist 目錄,目錄下有個app... 咳咳别激動,還有最後一步:

反編譯一款APP然後重新打包(MacOS環境)

5、應用簽名

關于應用簽名,說麻煩也不麻煩,稍微懂點Android的小夥伴,①可以通過Android Studio或者直接指令行生成簽名檔案;②将apk和簽名檔案放在同一個目錄,然後再終端執行 jarsigner 代碼;

詳細的我就不啰嗦了,今天為照顧大多數小夥伴,介紹一個工具

Android Crack Tool

下載下傳連結:https://github.com/Jermic/Android-Crack-Tool

下載下傳安裝後,将上邊得到的app直接拖進源檔案中:

操作也簡單,選擇 「簽名APK」 按鈕,然後點選 「執行」 按鈕就可以了:

反編譯一款APP然後重新打包(MacOS環境)

執行後生成的 《一個TV-S.apk》 就是我們最終要安裝測試的app了,安裝試一下:

反編譯一款APP然後重新打包(MacOS環境)

其實成功了,就是名稱太長 「niceyoo部落格」 沒顯示出來,ok,下一篇帶大家深一步魔改APP。

小夥伴們不要慌,你慌我也慌,來都來了,關注一下,交個朋友。