Android反編譯(二)之反編譯XML資源文件


Android反編譯(二)

之反編譯XML資源文件

[目錄]

1、工具

2、反編譯步驟

3、重新編譯APK

4、實例

5、裝X技巧

6、學習總結

  

1、工具

1).反編譯工具 

apktool http://code.google.com/p/android-apktool/downloads/list

 

命令:

   apktool d [目標.apk] [目標文件夾]           ---------反編譯(decode)
   apktool b [文件夾] [編譯之后的名稱.apk]---------編譯(buid)
   apktool if framework-res.apk                  --------加載資源(install framework)  

2、反編譯步驟

步驟1:將目標apk包,拷貝至apktool工具目錄下
步驟2:CMD進入apktool文件夾, 運行反編譯命令
 CMD> apktool d Thinkdirve.apk  APK_SRC
(意思是將Thinkdirve.apk解包到當前APK_SRC目錄下,APK_SRC文件夾不用創建,會自動生成)

 

3、重新編譯APK

步驟1:將修改后資源文件后(APK_SRC)的文件夾重命名ThinkDrive_src
步驟2:CMD進入apktool文件夾,  運行打包命令

            CMD>apktool b ThinkDrive_src ThinkDrive_src.apk

 (注:重新編譯后的APK需要重簽名)

 

4、實例

>【例:反編譯ThinkDrive.apk】

步驟1: 將ThinkDrive.apk拷貝至apktool文件夾

  

 

步驟 2:CMD進入apktool文件夾,運行反編譯命令 

 

結果:

 

 


 

 >【例:重新編譯ThinkDrive.apk】

 步驟1:將修改后資源文件后(APK_SRC)的文件夾重命名ThinkDrive_src

 

 

步驟2:CMD進入apktool文件夾,  運行編譯命令

 

結果:

 

 

 

5、裝X技巧

寫個批處理,雙擊運行,自動反編譯當前目錄下的所有apk,高端大氣上檔次,低調奢華有內涵啊~~~~

 

[ a pktool.bat]  <--運行不了apktool時把這個下到apktool.jar所在目錄
@ echo off
set PATH= %CD%;%PATH%;
java -jar " %~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9    

 

[反編譯.bat

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
 REM 作者:Findyou
 REM 時間:2013.11.22
 REM  SET C_PATH= %CD%
  FOR %%I IN (*.apk) DO (
      ECHO [反編譯 %%I]
      ECHO --------------------------------
     REM 檢查文件夾,如果已存在則先刪除
      SET SRT= %%I
IF EXIST " !SRT:~0,-4!_src" (
ECHO [檢查存在目標文件夾] 
ECHO [刪除 !SRT:~0,-4!_src]
RD /S /Q !SRT:~0,-4!_src
)
ECHO [反編譯開始...]
ECHO -------------------------------
ECHO apktool d !SRT! !SRT:~0,-4!_src
ECHO -------------------------------
REM apktool d %C_PATH%\!SRT! %C_PATH%\!SRT:~0,-4!_src
CALL apktool.bat d !SRT! !SRT:~0,-4!_src
ECHO -------------------------------
ECHO [反編譯完成]
ECHO.
  )
  PAUSE
  @ ECHO ON

 

 

6、學習總結

1)、什么是反編譯和 編譯
    反編譯就是把apk解包成可修改的文件
    編譯(此處單指反編譯后的重新編譯)就是把修改過的東西重新打包

 

2)、為什么要反編譯?
    稍微懂點的,都知apk的文件可以直接用rar打開。但是如果直接用rar打開xml文件全都是亂碼呢?

 

3)、什么時候需要反編譯?

程序主要分2種:  a).系統應用軟件; b).第三方apk應用。

我們在美化或者漢化或者去廣告之類的時候,主要做的動作有2種:

a).替換圖片: 如果只是替換圖片,我們不需要反編譯,替換相應的圖片(注意名稱和格式和分辨率一致),就可以了,這個時候只需要使用rar來做就好了。
b).修改xml文件: 除去圖片文件,apk應用里我們能折騰的就是xml文件了。如上面所說的,如果用rar打開xml文件,是亂碼,所以這個時候我們就需要反編譯了。

 

4)、什么是簽名?  
        為了保證每個應用程序開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程序,我們需要對我們發布的APK文件進行唯一簽名,保證我們每次發布的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。 我們看到的META-INF文件夾就是簽名的文件夾。

 

5)、什么時候需要簽名?

a).如果是系統apk應用。
   如果僅僅是替換圖片,不需要反編譯,也不需要重新簽名,直接用rar替換就可以.
   如果進行了反編譯,修改完xml文件之后,我們需要把他重新編譯回去。編譯好的應用不能直接放入手機內用,因為系統只認識他給的簽名,而我們自己簽名是不被認可的。
   處理方法:我們把之前從系統拿出來的原版apk起名為a.apk,把自己修改完畢,並且編譯的好的應用起名為b.apk。用rar打開a.apk和b.apk,然后把b.apk里的resources.arsc文件直接拖到a.apk的壓縮包里,然后把更換的圖片以及修改過的XML文件也替換進去。 這個時候,我們做的相當於僅僅替換了一些資源,我們還是用a.apk的簽名。替換完之后,就可以直接使用了。 如果有的時候修改過smali文件夾,就需要把class.dex文件也copy過去。
b).如果是第三方apk應用
   第三方的apk應用,不管你修改了圖片還是反編譯了,都需要重新簽名。方法是把 META-INF 里面的除了COM文件夾都刪掉,就是刪掉MF,SF,RSA這三個后綴名的文件然后使用工具簽名。安裝的時候要把原有的應用刪掉再安裝。

 

6)、簽名工具

簽名生成:keytool

重新簽名:jarsigner

優化APK:zipalign

 重簽名,下篇有時間再寫博分享。


 

 轉載請注明出處:Findyou


免責聲明!

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



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