編輯:關於android開發
反編譯 — 在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庫文件裡,這些信息是無法被反編譯的。
即使這樣,對一個軟件進行像漢化這樣的操作卻是足夠了。
win通過dos配置注冊列表由於服務器數量眾多,需求是配置環境變量,為了不被累屎,為了減輕壓力所以有了這篇文章!嘿嘿……需求如圖: _<)~~~~ )1、注冊表設置win
Android開發: fragment解析及案例 Fragment 設計理念 在設計應用時特別是Android 應用 ,有眾多的分辨率要去適應,而fragme
android support的作用及其常見錯誤的解決,androidsupport 首先我們要明白這些包到底是干什麼用的 google提供了Android Suppor
Android4.4訪問外部存儲,android4.4訪問存儲 在Android 4.4系統中,外置存儲卡(SD卡)被稱為二級外部存儲設備(secondary