最近公衆号背景有小夥伴留言,怎麼把一款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

通過如上指令,可以幫我們打包出 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.lanzoux.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。
小夥伴們不要慌,你慌我也慌,來都來了,關注一下,交個朋友。