進階程式設計 2015/01/11
TRANSCRIPT
![Page 1: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/1.jpg)
進階程式設計⺩王哲輝
![Page 2: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/2.jpg)
反編譯
![Page 3: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/3.jpg)
Android 編譯流程
![Page 4: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/4.jpg)
Android 編譯流程
資源檔 -> 編譯過的資源檔.java -> .class -> .jar -> .dex
![Page 5: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/5.jpg)
Android 編譯產出
應⽤用程式專案
程式庫專案
編譯
ant
gradle
.jar + 資源檔
.apk
.aar
![Page 6: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/6.jpg)
Android 編譯產出
應⽤用程式專案
程式庫專案
編譯
ant
gradle
.jar + 資源檔
.apk
.aar
apk / jar / aar 其實都是 zip 檔
![Page 7: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/7.jpg)
解開 apk - unzip
LennaActivity.apk unzip
![Page 9: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/9.jpg)
dex2jar 基本⽤用法
d2j-dex2jar.bat classes.dex
將 class.dex 轉成 class.jar
![Page 11: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/11.jpg)
JD-GUI
![Page 12: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/12.jpg)
但是資源檔 全是亂碼...
![Page 13: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/13.jpg)
解開 apk - apktoolhttps://code.google.com/p/android-apktool/
![Page 14: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/14.jpg)
apktool 基本⽤用法
apktool.bat d LennaActivity.apk
解開 apk
解開 apk 但是不要反組譯 javaapktool.bat d -s LennaActivity.apk
![Page 15: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/15.jpg)
如何找出 ⼿手機上的 apk?
![Page 16: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/16.jpg)
第⼀一步:找出 package name
![Page 17: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/17.jpg)
模擬器可⽤用 Hierarchy Viewer
![Page 18: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/18.jpg)
或者從 Google Play Store
![Page 19: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/19.jpg)
第⼀一步:找出 package 位置
![Page 20: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/20.jpg)
密技 - Package Manager
$ adb shell pm path com.facebook.katanapackage:/data/app/com.facebook.katana-1/base.apk
列出特定 package 的安裝位置
![Page 21: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/21.jpg)
第三步:取出 package
![Page 22: 進階程式設計 2015/01/11](https://reader033.vdocuments.mx/reader033/viewer/2022042506/55b9efd0bb61eb40738b45ed/html5/thumbnails/22.jpg)
adb pull
$ adb pull /data/app/com.facebook.katana-1/base.apk1977 KB/s (29982092 bytes in 14.806s)
取出裝置中的特定檔案