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


最近公眾號后台有小伙伴留言,怎么把一款APP改成自己的信息呀,咳咳,這又來送題材了,今天水一把APP反編譯+回編譯,文中會針對一款APP進行簡單的修改信息,問問題的小伙伴還不火速右上角支持一下。

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

MacOShttps://www.cnblogs.com/niceyoo/p/13296260.html

Windowshttps://www.cnblogs.com/niceyoo/p/13303136.html

一、下載jadx並編譯

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

下載后進入文件目錄執行./gradlew dist

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

二、安裝apktool

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

下載鏈接:https://ibotpeaches.github.io/Apktool/install/

1、下載apktool文件

打開網址后找到macos節點,對着 wrapper script 右鍵

彈窗保存時一定要選擇所有文件格式,注意,沒有后綴,沒有后綴。

2、下載apktool.jar

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

進入該界面后,查看右側jar下載列表,當然下載最新文件:

3、配置apktool執行權限

至此,我們下載了兩個文件,我們把這兩個文件放到 /usr/local/bin 目錄下

然后在該目錄控制台執行命令:chmod +x apktool.jar apktool

cd /usr/local/bin

chmod +x apktool.jar apktool

4、測試apktool權限

在終端執行如下指令:apktool,只要打印內容說明沒問題

三、開始反編譯APP

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

某視頻APP:https://niceyoo.lanzous.com/iCi92eksqjc

1、反編譯

反編譯用到的是第二個下載的工具—apktool,我們先下載上方鏈接中的app,然后在該文件目錄的控制台下執行如下指令:apktool d 名稱.apk

apktool d 一個TV.apk

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

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

如圖,其中,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

接下來我們復制一份 《一個TV.apk》,然后將復制的apk后綴改成zip,得到如下:

進入 《一個TV的副本》,這一步主要是想得到 classes.dex 文件,該文件是獲取源碼的重點,接下來我們在該目錄控制台執行如下指令:

jadx-gui classes.dex

通過jadx-gui工具源碼是看到了,具體代碼細節就不帶着大家一塊看了;可能有小伙伴會好奇,怎么沒看到實質性的源碼呀,別着急,再執行試試:

jadx -d out classes.dex

執行該命令,反編譯后會把源碼放入out文件夾下(如果out不存在它會自動創建)

補充:這一小節的目的就是為了使用jadx-gui可視化界面查看app的源碼,小伙伴千萬不要混了,主要的、以及接下來要操作的還是在第一小節反編譯出來的代碼。

3、魔改數據

代碼也看到了,本來計划這篇就帶大家修改源碼數據,但是為了照顧大部分小伙伴,接下來就只修改一下APP名稱,然后重新打包APP,下一篇補充:修改布局 + 修改smali代碼

我們再回到第一節使用apktool反編譯出來的代碼,找到根目錄的AndroidManifest.xml,修改文件中的label標簽對應的string.xml文件中的值,這次我們簡單粗暴點,直接修改內容吧:

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

4、回編譯APP

退回到 《一個TV》 文件夾目錄,執行如下指令apktool b 文件夾名稱

apktool b 一個TV

執行完該命令后,會在 《一個TV》 文件夾下生成一個 dist 目錄,目錄下有個app... 咳咳別激動,還有最后一步:

5、應用簽名

關於應用簽名,說麻煩也不麻煩,稍微懂點Android的小伙伴,①可以通過Android Studio或者直接命令行生成簽名文件;②將apk和簽名文件放在同一個目錄,然后再終端執行 jarsigner 代碼;

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

下載鏈接:https://github.com/Jermic/Android-Crack-Tool

下載安裝后,將上邊得到的app直接拖進源文件中:

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

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM