進階程式設計 2015/01/11

Post on 30-Jul-2015

215 Views

Category:

Technology

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

進階程式設計⺩王哲輝

反編譯

Android 編譯流程

Android 編譯流程

資源檔 -> 編譯過的資源檔.java -> .class -> .jar -> .dex

Android 編譯產出

應⽤用程式專案

程式庫專案

編譯

ant

gradle

.jar + 資源檔

.apk

.aar

Android 編譯產出

應⽤用程式專案

程式庫專案

編譯

ant

gradle

.jar + 資源檔

.apk

.aar

apk / jar / aar 其實都是 zip 檔

解開 apk - unzip

LennaActivity.apk unzip

dex 轉 jar - dex2jar https://code.google.com/p/dex2jar/

dex2jar 基本⽤用法

d2j-dex2jar.bat classes.dex

將 class.dex 轉成 class.jar

反編譯 jar - JD-GUIhttp://jd.benow.ca/

JD-GUI

但是資源檔 全是亂碼...

解開 apk - apktoolhttps://code.google.com/p/android-apktool/

apktool 基本⽤用法

apktool.bat d LennaActivity.apk

解開 apk

解開 apk 但是不要反組譯 javaapktool.bat d -s LennaActivity.apk

如何找出 ⼿手機上的 apk?

第⼀一步:找出 package name

模擬器可⽤用 Hierarchy Viewer

或者從 Google Play Store

第⼀一步:找出 package 位置

密技 - Package Manager

$ adb shell pm path com.facebook.katanapackage:/data/app/com.facebook.katana-1/base.apk

列出特定 package 的安裝位置

第三步:取出 package

adb pull

$ adb pull /data/app/com.facebook.katana-1/base.apk1977 KB/s (29982092 bytes in 14.806s)

取出裝置中的特定檔案

top related