android

[Android] 反組譯 破解Android的apk安裝檔

android-frag

最近在接觸寫android的app 想說既然會寫那應該也可以把她反解回來看程式碼才對,所以上網做了一下功課。

寫過android其實會知道這種app最重要的就是.java檔跟xml檔這兩個,.java檔是負責寫程式邏輯流程的。.xml就是畫面的layout。
ok!假設你拿到了一個 你自己寫的apk檔,現在你想要把她反解回來時你就必須要有幾個下列工具。

[ apktool ] [ dex2jar ] [ jd-gui.exe ] 這三個程式。

首先你可以先把你手上的apk 檔,附檔名改掉改成.zip 然後把它解壓縮出來,你就可以得到了一些檔案,其中會有一個classes.dex。

之後把這個classes.dex用dex2jar把她反解成.jar檔(在cmd下dex2jar.bat classes.dex)

dex2jar

然後得到這個classes.dex.dex2jar.jar這個.jar檔後(裡面就是一堆.class檔)

你要在透過jd-gui.exe這個程式去開classes.dex.dex2jar.jar 然後你就可以看到所有的原始,java檔的原始碼了。

jd-gui

到這裡你已經成功了大半,而xml檔呢? 我想你剛剛在資料夾裡面的res資料夾裡面可以找到,而問題是打開來卻都是亂碼!

因為這些xml檔都是二進制的檔要在解回來一次才看得懂。這時候就是需要apktool 這個程式了(在cmd下apktool.jar d xxx.apk “xxx” 他就會把它解到xxx這個資料夾下

這時候你只要把你要的xml拿出來就好

apktool

其實不管是你解回來的xml檔或是java檔都會跟原來的有些的不一樣,例如變數命名之類的。他的一些配置會稍微的變動,不過只要你有寫過android app 你會看的出來那些東西被移到其他檔案去了,稍微在自己整理一下還是都會回來的。

 

註:下載檔案時 盡可能的去找看看有沒有最新版的,用舊版的去解一些後期開發的app 似乎會有反解解不回來的情況

3 comments

大大您好 我照著您的方法 下載dex2jar
解壓縮後 得到的批次檔不是dex2jar.bat
是gradlew.bat 這個
然後依舊用指令 gradlew.bat classes.dex之後
卻無法得到 classes.dex.dex2jar.jar
請問怎麼辦….
我的dex2jar 是2.0的

Leave a Comment

你的電子郵件位址並不會被公開。

(若看不到驗證碼,請重新整理網頁。)