Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> APK文件淺析-Android

APK文件淺析-Android

編輯:關於Android編程

 

Android打包之後,生成了APK文件。
APK文件其實是個zip文件。

比如,FileExplorer.apk,把後綴改成zip,就成了 FileExplorer.zip。
類似的還有Excel文件,比如FansUnion.xlsx,改後綴FansUnion.zip,解壓之後:
_rels
docProps
xl
[Content_Types].xml
有興趣的可以自己試試哦~



解壓之後:
META-INF
--CERT.RSA
--CERT.SF
--MANIFEST.MF(Java打包的程序,基本都有這個文件.最初以為和Java中的一樣,後來發現不是的。)

(1)MANIFEST.MF:這是摘要文件。程序遍歷Apk包中的所有文件(entry),對非文件夾非簽名文件的文件,逐個用SHA1生成摘要信息,再用Base64進行編碼。如果你改變了apk包中的文件,那麼在apk安裝校驗時,改變後的文件摘要信息與MANIFEST.MF的檢驗信息不同,於是程序就不能成功安裝。
說明:如果攻擊者修改了程序的內容,有重新生成了新的摘要,那麼就可以通過驗證,所以這是一個非常簡單的驗證。
(2)CERT.SF:這是對摘要的簽名文件。對前一步生成的MANIFEST.MF,使用SHA1-RSA算法,用開發者的私鑰進行簽名。在安裝時只能使用公鑰才能解密它。解密之後,將它與未加密的摘要信息(即,MANIFEST.MF文件)進行對比,如果相符,則表明內容沒有被異常修改。
說明:在這一步,即使開發者修改了程序內容,並生成了新的摘要文件,但是攻擊者沒有開發者的私鑰,所以不能生成正確的簽名文件(CERT.SF)。系統在對程序進行驗證的時候,用開發者公鑰對不正確的簽名文件進行解密,得到的結果和摘要文件(MANIFEST.MF)對應不起來,所以不能通過檢驗,不能成功安裝文件。
(3)CERT.RSA文件中保存了公鑰、所采用的加密算法等信息。
說明:系統對簽名文件進行解密,所需要的公鑰就是從這個文件裡取出來的。
結論:從上面的總結可以看出,META-INFO裡面的說那個文件環環相扣,從而保證Android程序的安全性。(只是防止開發者的程序不被攻擊者修改,如果開發者的公私鑰對對攻擊者得到或者開發者開發出攻擊程序,Android系統都無法檢測出來。)

res(各種XML資源文件)
--drawable
--layout
--等等

這個目錄,有個特別的“戰略意義”~
上次看一篇Android文章,關於漢化的。漢化Android程序,先把APK文件解壓,然後修改res資源文件,最後再次打包,再安裝,
這樣就漢化了Android程序。我覺得,理論是可行的,目前沒有試過。

AndroidManifest.xml(Android項目的標准文件)

classes.dex(Java文件最後生成的,.java->.class->.dex)
resources.arsc(也是資源文件)
只有那些類型為res/animator、res/anim、res/color、res/drawable(非Bitmap文件,即非.png、.9.png、.jpg、.gif文件)、
res/layout、res/menu、res/values和res/xml的資源文件均會從文本格式的XML文件編譯成二進制格式的XML文件。
好處應該是效率。
 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved