2011年11月15日 星期二

Android APK 逆向工程

前言


最近接到了一個神奇的Android App開發專案,也就是沒有原始碼的使用者介面修改專案。
這也看出了現在台灣Mobile專案開發的火熱程度{企業竟然接受了不包含SOURCE CODE}的開發條件,一點點的心得感想。


甚麼是APK
APK (全名Android Package)是利用ZIP的壓縮技術將所有軟體執行所需要的檔案打包成一個安裝包裹,如果解開的話會看到這幾個主要的部分:
    1. XML File:Android 的View與Global軟體設定檔
    2. Classes.dex:編譯過的原始碼,若使用apktools作解壓縮的話產生的所有的原始碼會被解開成smali,smali檔案是dalvik的assemble檔案。
逆向工程的開始
我們透過幾個簡單的方式記型逆向工程
  1. 使用ZIP解壓縮APK檔案,以取出classes.dex
  2. 使用APKTOOL解壓縮APK取出XML File
  3. 使用JD-GUI反解譯class assemble
  4. 建立新的Android Project將XML File與classes放進新的專案
  5. 完成逆向

Content Reference

沒有留言:

張貼留言