Android .apk逆向工程(概念篇):Apktool使用之前必須要掌握的知識點(劃重點)

學一個工具需要兩種操作(此方法也適用於學習一門新的語言):

  1. 點點點,點點點,點點點,點完之後知道怎麼用了,爲你爲什麼這麼用,這是幹嘛的,一臉懵逼。這時候的你,知道回去惡補知識點了;
  2. 好好學習天天向上,基礎打牢溫故而知新,點一下,安裝完成~

目錄

.apk文件

什麼是apk文件

目錄結構

META-INF\(注:Jar文件中常可以看到)

res\(注:存放資源文件的目錄)

AndroidManifest.xml(注:程序全局配置文件)

classes.dex(注:Dalvik字節碼);

resources.arsc(注:編譯後的二進制資源文件)。


.apk文件

什麼是apk文件

apk?安卓的安裝包。

APK是AndroidPackage的縮寫,通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。

apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式爲apk。 APK文件其實是zip格式,但後綴名被修改爲apk,通過UnZip解壓後,可以看到Dex文件,Dex是DalvikVM executes的簡稱,即Android Dalvik執行程序,並非Java ME的字節碼而是Dalvik字節碼。Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接,和Windows Mobile中的PE文件有區別。

你可以隨便找個apk,將apk後綴改成 zip,既可打開查看裏面的內容(並非 用其他(改之理)的程序反編譯。)

目錄結構

META-INF\(注:Jar文件中常可以看到)

META-INF目錄下存放的是簽名信息,用來保證apk包的完整性和系統的安全。在eclipse編譯生成一個apk包時,會對所有要打包的文件做一個校驗計算,並把計算結果放在META-INF目錄下。同樣在Android平臺安裝apk時,應用管理器會對按照同樣的算法對包裏的文件做校驗,如果校驗結果與META-INF下的內容不一致,系統就不會安裝這個apk。這就保證了apk包裏的文件不能被隨意替換。

res\(注:存放資源文件的目錄)

res目錄存放資源文件。

AndroidManifest.xml(注:程序全局配置文件)

AndroidManifest.xml文件是每一個應用必須定義和包含的,它描述了應用的名字、版本、權限、引用的庫文件等信息。

通過 解壓之後直接打開,你可以看到  編碼類型,編碼環境,以及亂碼。其實就是 編譯之後的結果。

classes.dex(注:Dalvik字節碼);

classes.dex是java源碼編譯生成的java字節碼文件。

dex文件是應用安裝時生成的虛擬機可執行二進制文件,如果應用還存在,刪除了下次手機開機時還會再次生成,卸載軟件時會同時刪除dex文件。所以沒有必要手動刪除dex文件。

resources.arsc(注:編譯後的二進制資源文件)。

resource.arsc是編譯後的二進制資源文件。

下一篇,將介紹 Apktool的具體使用。

參考文獻:

百度百科 apk:https://baike.baidu.com/item/apk/10415494?fr=aladdin

Apktool(2)——使用前必須知道的apk知識https://www.cnblogs.com/mliangchen/p/5084894.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章