Android 解讀.apk解壓後檔案詳細說明,android.apk

來源:互聯網
上載者:User

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庫檔案裡,這些資訊是無法被反編譯的。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.