天天看點

安卓APK的反編譯了解安卓APK的反編譯了解

安卓APK的反編譯了解

  • 安卓APK的反編譯了解
    • 軟體的安裝過程
    • 反編譯的過程
    • 反編譯工具和反編譯操作
    • 反'反編譯'

安卓APK的反編譯了解

  一般意義上的程式設計過程可以了解為将我們使用的代碼語言(屬性和指令), 編譯成機器可以識别的機器語言, 然後機器進行執行.

  在Java中 #編譯 的過程是将代碼轉換成Java虛拟機可以識别的語言, 再由虛拟機完成編譯給機器的工作, 了解了這一步, 我們就可以開始安卓app的反編譯了.

  需要注意的是, 反編譯是為了舉一反三, 取長補短, 學習為主, 強搶為輔.

軟體的安裝過程

  軟體的安裝簡單的可以了解為将需要的檔案和資料拷貝到你要使用的機器中, 并集合成執行檔案的形态, 友善使用者使用. 這裡不對安卓APK具體的安裝過程做詳細分析, 需要了解的小夥伴可以自主學習.

  為了友善了解, 我們可以這樣解釋這個過程. 熟悉Window軟體安裝的小夥伴應該知道, Windows 軟體安裝包大都是一個字尾為 exe 的檔案, 執行安裝後會在電腦内産生一個軟體檔案夾. 如果這個 exe 檔案是用 Java 語言開發的, 那他就經曆了源檔案(.java), 編譯器編譯 (javac.exe) 生成位元組碼(.class), 通常情況下位元組碼可以直接被 java 解釋器 (java.exe) 直接執行, 但這種執行方式隻能在有 Java 環境的電腦裡使用.

  于是, 我們通過生成包 ( .jar) 檔案 (可以了解為把軟體需要用到的類也就是位元組碼(class)打包), 再将這個包轉化成我們使用環境需要的執行檔案(比如.exe, apk), 軟體就可以在别的環境下使用了.

反編譯的過程

  了解了生成 exe 檔案的過程, 那麼反編譯 APK 也就不難了解, 隻需将 apk 檔案反編譯成包(.jar), 然後再将包拆解成類(.class), 類檔案可以直接通過優秀的反編譯工具 jd-gui 直接讀出源代碼(.java), 至此, 工作完成. (至于為什麼可以直接讀出源碼, 可以深入了解一下 Java 虛拟機的機制, 這裡就不做介紹了)

  軟體分為代碼和資源, 擷取資源也是重要的步驟

反編譯工具和反編譯操作

朱玉在前, 我就不重複介紹了, 可以看這兩篇文章:

Android反編譯三件套 apktool 、dex2jar、jd-gui

Android APK反編譯就這麼簡單 詳解

反’反編譯’

  有的軟體設計者因為珍惜自己的工作, 做了代碼混淆來組織反編譯, 這部分内容還需要深入學習.