Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android 解讀.apk解壓後文件詳細說明,android.apk

Android 解讀.apk解壓後文件詳細說明,android.apk

編輯:關於android開發

Android 解讀.apk解壓後文件詳細說明,android.apk


反編譯 — 在apk文件中能得到什麼

最近在做android客戶端與服務器安全通信,有一種常見的不安全因素:很多軟件常常會被人從apk文件中獲取到下載地址或帳戶信息。一個打包成apk的軟件,通過反編譯可以獲得哪些信息呢?下面我們來動手反編譯一個簡單的demo--HelloWorld。

將生成的HelloWorld.apk使用壓縮軟件打開,看到下面幾個文件/目錄

其中,res中存放著所有的圖片文件以及xml文件,也就是在eclipse工程目錄中res下面的所有資源。這裡的xml文件是經過壓縮的,用AXMLPrinter2工具可以打開。

這是反編譯出來的AndroidManifest.xml

怎麼樣,是不是跟源代碼一模一樣?

resources.arsc文件中保存的是編譯後的二進制資源文件,許多做漢化軟件的人都是修改該文件內的資源以實現軟件的漢化的。

classes.dex是java源碼編譯生成的字節碼文件。但由於Android使用的dalvik虛擬機與標准的java虛擬機是不兼容的,.dex文件與.class文件相比,不論是文件結構還是opcode都不一樣。目前常見的java反編譯工具都不能處理dex文件。

dex2jar是專為反編譯.dex而開發的工具,它可以把.dex文件反編譯成為.jar文件。然後用JD-GUI工具將.jar文件反編譯成.java文件。

這是反編譯出來的MainActivity.xml

下面是源代碼:

經過反編譯的代碼雖然可讀性不是很好,但是跟源碼幾乎沒什麼差別。在開發時如果你直接將賬號等重要信息放到java代碼中,那就沒有任何安全性可言了。

經過反編譯,anroid項目的源碼全部暴露無疑,那是不是可以通過反編譯將一個android軟件改成自己想要的樣子?答案是否定的,在META-INF目錄下存放的是軟件的簽名信息,用來保證apk包的完整性和系統的安全。在軟件安裝時應用管理器會對包裡的文件進行校驗,如果校驗信息與META-INF目錄下的信息不一樣,系統就會拒絕安裝這個軟件。另外,專業的編程人員都會把重要信息封裝到.so庫文件裡,這些信息是無法被反編譯的。

即使這樣,對一個軟件進行像漢化這樣的操作卻是足夠了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved