網頁

2013年10月22日 星期二

[Android] Reverse APK 2. apktool

APKTool 是一個用來反組譯/重新編譯 Android APK 的工具. 甚至, 它還可以用來 step by step debug. 有些中文化的方式, 就是用它來解開 APK, 修改字串資料, 再重新打包.

延續前一個作業, 我們的目的是解開這個 APK, 看看能從中看出什麼端倪. 接下來我們就要說明如何對一個 APK 檔案, 實施 apktool 程序.

1. 下載 APKTool


        請參考以下連結, 下載 APKTool. 要注意的是, APKTool 的主體部份是一個 Java jar 檔案, Linux/iOS/Windows 這三個檔案則是它的安裝以及啟動腳本.

        http://code.google.com/p/android-apktool/downloads/list?q=label:Featured

        我的電腦是 Windows, 所以我下載了apktool1.5.2.tar.bz2 以及 apktool-install-windows-r05-ibot.tar.bz2 這兩個檔案. 解壓縮之後, 我把它放到 C:\Personal\Reverse APK\apk-tool, 再加上我們前面備份下來的 apk,  所以這個目錄目前看起來會像是這個樣子.

 



       
 

 

2. 解開 APK


        在開始解開 APK 之前, 有一個小地方要注意. 我們備份下來的 APK 的檔名是含有空白的, apktool.bat 的內容是這樣.

        java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

        這樣的參數傳遞會不會有問題呢? 這個其實我不知道, 也不想知道. 我會先把 APK 重新命名, 少一點麻煩.

        接著, 我們在命令列上下這樣的命令, 把它解到 PlayMemories 的目錄

        apktool d PlayMemories.apk PlayMemories

         請參考附圖

 
     

3. APK 檔案內容說明


        這邊說明解開 APK , 常見的檔案副檔名, 和它們的作用.

        1.xml 檔案

        Android 用到很多 xml 的檔案, 但是運用的時機不一樣, 它的內容也不一樣. 只是它們都遵循 xml 的語法

                AndroidManifest.xml
                這是 Android 用來管理 APK 的設定的檔案. 關於這一個 APK 的命名, 需要用到那一版 Android 才能正常使用, 以及使用網路, 存取聯絡人資料, 撥打電話等等的權限.

                layout.xml
                Android 的畫面, 基本是以畫面為基準. layout 類的 xml, 就是用來描述一個畫面中, UI 的元件的大小, 型式, 以及相關位置及排列方式. 一個 layout xml 檔案, 就是一個畫面, 或是較複雜的 UI 的設定.

                value.xml
                Android UI , 所會用的顏色, 數值等等的定義檔.

                string.xml
                Android 的多國語言的定義, 是分別寫在不同的 xml 檔案中. 譬如說, values-en 的目錄中, 有一個strings.xml. 所有英文語系的字串定義, 都會放在這個檔案中. 不同的語言設定, 會用到不同的 strings.xml, 放在不同的目錄中. 它的內容大約會是這個樣子 

     <string name="please_wait">Please wait...</string>
     <string name="select_wifi">Select the device.</string>

        2. smali 檔案


        smali 是一個支援 Android Hex 格式的組譯/反組譯工具. 它的副檔名也叫 smali. 也就是說, APK 解出來的 smali 檔案, 它原本是 java 檔案.

         3. so 檔案


        這是 linux shared library. 用到 C/C++ 的程式的時候, 會把它編譯成 so, 再用 NDK 的方式去引用.
 

        基本上, 觀察解出來的檔案, 再加上對 Android 的一些基本瞭解, 對這個 APP 就可以有一個基本的瞭解了

沒有留言:

張貼留言

請提供您寶貴的意見