預計閱讀時間: 7分鐘
LZ-Says:天道好輪迴,蒼天饒過誰~!
本文,乃是反編譯(逆向)首戰,在此,特意記錄過程中遇到的點點滴滴問題,如有不足之處,歡迎指正~
在此,特意感謝雞排兄以及薇薇姐~ 3q~
由於首戰,今天我們先來玩點簡單的:
將Apk解包並修改資源文件(包含:更換Apk名稱、替換Icon以及更換文字內容)
將修改好的Apk包進行回包,運行查看效果。
反編譯之前,我們首先準備好反編譯工具,下面將進行簡單介紹。
而本文,則重點使用ApkTool工具進行愉快的玩耍~
讓我們一起開始愉快的玩耍吧~
一、ApkTool 下載地址
官方下載地址(資源下載較慢):
https://bitbucket.org/iBotPeaches/apktool/downloads/
資源庫下載(下載速度還是66的):
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/ApkTool.shtml
二、ApkTool 簡述
官方簡述:
https://ibotpeaches.github.io/Apktool/
ApkTool官方翻譯:
ApkTool,一種用於Android應用程式逆向工程的第三方工具。 它可以將資源解碼為幾乎原始的形式,並在進行一些修改後重建它們。 這也使得例如構建APK等一些重複的任務文件結構和自動化項目變得更容易。三、ApkTool 騷姿勢
ApkTool可以幫助我們幹以下羞羞的事情:
拆卸資源近原始形式(包括resources.arsc,classes.dex,9.png.和XMLs);
將解碼的資源重建回二進位APK / JAR;
組織和處理依賴框架資源的APK;
Smali調試(在2.1.0中移除了IdeaSmali);
幫助完成重複的任務(自動化)。
四、ApkTool 使用前提條件
當前開發環境所使用JDK是否為:Java 7 (JRE 1.7)及以上?
具有一定Android SDK,AAPT和Smali的基本知識。
五、ApkTool 安裝說明
Windows 平臺:
下載Windows 包裝腳本(右鍵單擊,保存連結為apktool.bat)
下載apktool-2(在這裡找到最新)
將下載的jar重命名為 apktool.jar
將這兩個文件(apktool.jar&apktool.bat)移到Windows目錄(通常C://Windows)
如果提示無權訪問C://Windows,則可以將這兩個文件放在任何位置,然後將該目錄添加到本地環境變量中的系統PATH變量中。
嘗試通過apktool命令提示符運行
Linux 平臺:
下載Linux 包裝器腳本(右鍵單擊,保存連結為apktool)
下載apktool-2(在這裡找到最新)
將下載的jar重命名為 apktool.jar
將這兩個文件(apktool.jar&apktool)移至/usr/local/bin(需要root)
確保兩個文件都是可執行的(chmod +x)
嘗試通過cli運行apktool
Mac OS X 平臺:
下載Mac 包裝器腳本(右鍵單擊,保存連結為apktool)
下載apktool-2(在這裡找到最新)
將下載的jar重命名為 apktool.jar
將這兩個文件(apktool.jar&apktool)移至/usr/local/bin(需要root)
確保兩個文件都是可執行的(chmod +x)
嘗試通過cli運行apktool
注 - 包裝腳本不是必需的,但很有用,所以我們不必java -jar apktool.jar一遍又一遍地輸入。
六、ApkTool 下載後放置C://Windows目錄下
拷貝過去如下所示:
七、ApkTool 起飛時檢測
Step 1: 輸入 java -version,查看當前環境下Java JDK版本
Step 2: 輸入 apktool,查看當前環境下ApkTool信息
本文前期準備工作到此結束,下面,開搞~
首先我們需要做個Demo,需求簡單如下:
Demo中需要包含一個TextView以及一個ImageView,Apk圖標以及名字使用默認即可。
運行後,桌面顯示Logo以及Apk名稱如下:
而我們的界面如下:
一、使用ApkTool解包
首先,將Build之後的測試包拷貝到桌面,然後將名字修改簡單點,方便我們測試:
接著,打開cmd窗口,按照如下倆步進行操作:
鍵入 cd Desktop 進入桌面;
鍵入apktool d apk名稱.apk進行解包:
結果如下:
操作完成後,你會發現在桌面為我們生成了一個和我們Apk名稱一樣的文件夾,如下:
暫時先不要去管這些都是什麼,以後接觸到慢慢了解~莫急莫急~
二、著手修改內容
在此,我們再次明確要修改的內容:
Apk 名稱以及Activity中文字內容。
Apk Icon以及Activity圖片內容;
首先,開始修改名稱以及文字內容:
找到res目錄下的string.xml文件,修改app_name以及我們定義的str_test值即可。
如下操作示例圖:
之後開始修改我們的圖片文件:
這裡需要注意,需要將要修改的圖片名稱一樣的統統替換,方可達到瞞天過海境界~通過在cmd窗口鍵入apktool b 解包生成文件夾名稱進行回包,如下:
回包成功後,查看生成的Apk文件:
查看地址為:解包生成目錄文件下的dist目錄下。
這個時候需要注意,此時的包是一個未籤名的包,想要安裝在真機上以假亂真,還需要最後一步。
注意,LZ這裡使用的是Android默認籤名文件。測試包也是使用默認籤名文件。
籤名,可以直接使用命令行,不過LZ遇到無法打開的問題,So,無奈下找了一個批處理文件,代碼如下(原作者地址找不到了,如有發現,LZ更新下地址):
set/p keystore_path=請輸入.keystore的文件路徑:
set/p alias_path=請輸入keystore的alias:
set/p unsign_path=請輸入待籤名的apk文件路徑:
set/p sign_path=請輸入籤名後生成的apk文件路徑:
jarsigner -verbose -keystore %keystore_path% -signedjar %sign_path% %unsign_path% %alias_path%
pause
桌面創建名為:apk-sign.bat,將代碼拷貝進去,最後結果如下:
雙擊打開後,依次填入信息:
完成後如下提示:
警告直接忽略即可。
首先查看是否生成已籤名包:
運行查看一波,是否真正瞞天過海,達到以假亂真?
Step 1:先來看下Logo以及名稱是否發生改變?
Step 2:先來看下資源是否發生改變?
完美,達到我們要求~
關於回包小意外,請點擊原文查看詳情~