TShopping

 找回密碼
 註冊
搜索
查看: 4277|回復: 0
打印 上一主題 下一主題

[教學] 安卓應用APK文件的解包打包和修改教程

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-10-8 20:08:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
相信每位玩機的人對APK文件都不陌生。你可能每天都與APK文件打交道,無論是安裝和卸載有用的應用工具、插件、好玩的遊戲等等。 。 。你可曾知道這些每天都伴隨著你的APK文件是什麼嗎?怎樣對它們作些修改呢?比如說:對英文版進行​​漢化、修改功能、修改文字描述、去掉廣告等等。本文介紹APK的基本知識、結構、APK文件的解包、打包及簽名,以及對APK文件的常規修改。

1.APK文件簡介

APK是AndroidPackage的縮寫,即即Androidapplicationpackage文件或Android安裝包。每個要安裝到Android平台的應用都要被編譯打包為一個單獨的文件,後綴名為.apk。 APK文件是用專業軟件eclipse編譯生成的文件包,其中包含了應用的二進制代碼、資源、配置文件等。通過將APK文件直接傳到Android手機中執行即可安裝。 APK文件其實就是zip格式,但其擴展名被改為apk,用解壓軟件可以直接打開。通過WinRAR或UnZip解壓後,你會看到有幾個文件和文件夾。一個典型的APK文件通常有下列內容組成:AndroidManifest.xml程序全局配置文件classes.dexDalvik字節碼

resources.arsc

編譯後的二進制資源文件

META-INF\該目錄下存放的是簽名信息res\

該目錄存放資源文件

assets\該目錄可以存放一些配置文件

下面對這些文件和目錄做些基本的註釋和介紹。 •AndroidManifest.xml

該文件是每個應用程序都必須定義和包含的文件,它描述了應用程序的名字、版本、權限、引用的庫文件等等信息。需要解包後才能加以閱讀。

•classes.dex文件

classes.dex是java源碼編譯後生成的java字節碼文件。 dex是DalvikVMexecutes的全稱,即AndroidDalvik執行程序,並非JavaME的字節碼而是Dalvik字節碼。 •resources.arsc

編譯後的二進制資源文件。 •META-INF目錄

META-INF目錄下存放的是簽名信息,用來保證apk包的完整性和系統的安全。在eclipse編譯生成一個apk包時,會對所有要打包的文件做一個校驗計算,並把計算結果放在META-INF目錄下。這就保證了apk包裡的文件不能被隨意替換。比如拿到一個apk包後,如果想要替換裡面的一幅圖片,一段代碼,或一段​​版權信息,想直接解壓縮、替換再重新打包,基本是不可能的。如此一來就給病毒感染

和惡意修改增加了難度,有助於保護系統的安全。 •res目錄

res目錄存放資源文件。包括圖片,字符串等等。解包後,幾乎所有可能的修改和編輯工作基本都在這裡。 •assets目錄

assets目錄可以存放一些配置文件,這些文件的內容在程序運行過程中可以通過相關的API獲得。

2.APK文件的解包和打包

APK文件是用專業軟件eclipse編譯生成的文件包。在網上可以找到許多軟件來對APK的內容進行反編譯,例如:可以通過AXMLPrinter2工具和命令:java-jarAXMLPrinter2.jarAndroidManifest.xml解開在apk中的Andr​​oidManifest.xml。最近,業界有一個功能強大的解包打包工具包apktool,可以在Windows下用來方便快速地對APK文件進行解包和打包,給修改和編輯工作帶來許多方便。下面來介紹它的使用。

1)APKtool軟件

APKtool軟件包有2個程序組成:apktool.jar和aapt. exe另外提供一個批處理文件:apktool.bat,其內容為:java-jar"%~dp0\apktool.jar"%1%2%3%4%5%6%7%8%9

運行apktools.jar需要java環境(1.6.0版本以上)。 apktool.jar用於解包,apktool.jar和aapt.exe聯合用於打包。 2)APK文件的解包

下面以解開Contacts.apk為例。首先把Contacts.apk複製到當前工作目錄下(例:Test)。在DOS下打入命令apktooldContacts.apkABC

這裡“d”表示要解碼。 Contacts.apk是要解包的APK文件。 ABC是子目錄名。所有解包的文件都會放在這個子目錄內。 3)APK文件的打包在DOS下打入命令

apktoolbABCNew-Contacts.apk這裡“b”表示要打包

ABC是子目錄名,是解包時產生的子目錄,用來存放所有解包後的和修改後的文件。

New-Contacts.apk是打包後產生的新的APK文件。 4)Framework框架文件

在解開APK文件時,apktool需要框架文件(framework-res.apk)來解碼和打包。 Apktool已經包含了標準的框架,所以在大多數APK文件的解包時,不需要另外提供框架文件。但是,某些製造商使用了他們自己的框架文件,為了解包,就不得不從手機 中把框架文件(framework-res.apk)提取出來,然後安裝到計算機。安裝命令是:

apktoolifframework-res.apk

安裝後就會得到:~\apktool\framework\1.apk5)解包、解包和簽名批處理

在實際使用時,可能對多個APK文件進行處理。方便的做法是寫成批處理文件。打包和簽名可以一次完成。

解包批處理命令:
  1. for%%iin(*.apk)dojava-jarapktool.jard%%i_%%i&&move_%%iModifying_Files&©%%iBackuped_Raw_Files&&@echoFile[%%i]unpackingprocessiscompleted!

  2. 打包和簽名批處理命令:
  3. for/d%%iin(*)docd..&&java-jarapktool.jarbModifying_Files\%%i&&
  4. java
  5. -jar
  6. signapk.jar
  7. testkey.x509.pem
  8. testkey.pk8
  9. Modifying_Files\%%i\dist\*.apk%%i&&ren%%iNew%%i&&moveNew%%iModified_Signed_Files&&@echo%%iCompleterepackingandSigning!&&cdModifying_Files
複製代碼

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-19 17:44 , Processed in 0.076775 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表