[分享] apk 的反組譯(decompiler)

看板AndroidDev作者 (我被淡水的路寵壞了)時間13年前 (2011/01/20 15:30), 編輯推噓8(8013)
留言21則, 8人參與, 最新討論串1/1
看到有版友討論到 apk 的反組譯,所以野人獻曝一下,把自己 google 尋找後的一 些工具以及心得和大家分享。 apk 其實和 jar 檔一樣,其實都是 zip 格式的壓縮檔,可以利用解壓縮的程式解開 ,因此,所有內含的檔案,包含 drawable 內的圖檔,color、layout、mainfest 等等 xml 都可以被看光光XD 不過 xml 的部份有經過編碼再壓進壓縮檔之內,所以解壓縮之後為 binary 檔案, 無法直接讀取辨識,有個工具可以讀進這些檔案,然後還原成原始的 xml。工具請參考以 下網頁: http://code.google.com/p/android4me/ 解決了 res,接下來是 code 的部份,不過就我現在找到的工具,反組譯回來還無法 是 java 檔,頂多是類似組合語言層級的一些東西。工具說明如下: 1.dx: 初識 dx,是因為之前 Android 版上有高手利用 dx 解析 robo defence,再加上 高手的多年經驗,將 robd defence 改得極為有趣,有興趣的可以回 Android 版 爬文。 2.dexdump: 後來尋尋覓覓,發現了這個工具,這個和 dx 一樣,都可以在 Android 的 SDK 之 中找到。 /android-sdk/platforms/android-3/tools/ 下,其中的 android-3, 當然可以換成 android-4, android-5 .... 3.dedexer: 現在我用的是這個,之前提到的 dx 和 dexdump,解開來的檔案相對起來不易閱讀 ,而 dedexer 解開來會根據不同的 package,不同 class,分門別類的把檔案放好 ,而且 inner class 也會存成另外的檔案,方便閱讀。真的是出門在外,破解 dex 的最佳良伴:) dedexer 請參考網頁 http://dedexer.sourceforge.net/ 我抓到的 apk 有 lib,下面有 .so 檔怎麼辦?? linux 下有 nm、objdump,相信不僅可以把人家看光光,還可以像紅外線一樣看到骨 子裡去。 小結: 這樣看來,其實不管程式是用 JAVA,還是利用 JNI 寫 C,其實都是一樣被看光光 的>\\\<,只不過解出來有可能是組合語言,接下來就是看這隻程式值不值得我花時間和 硬功夫去 k 他的組語把他看懂。 或許還是如之前版友 qrtt1 所說,程式榜服務才是正解?? 其實我也不知道XD -- 上面所有,皆是網路 google 而來,我只是做個簡單的整理, 加上一點點小小的心得,歡迎享用:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.80.94

01/20 15:32, , 1F
如果你看過 cih 示範破 xxx 那,就明白混淆器能夠混淆的只是
01/20 15:32, 1F

01/20 15:32, , 2F
開發者那顆焦慮不安的心,混淆不了駭客的眼睛。
01/20 15:32, 2F

01/20 15:43, , 3F
我不懂為什麼這麼在意要"隱藏"自己的實做 任何程式都可以
01/20 15:43, 3F

01/20 15:44, , 4F
被反組譯成低階語言 就算被混亂過 只要花時間 還是可以看
01/20 15:44, 4F

01/20 15:44, , 5F
出脈落 另外 目前所有安全機制都只是在拖延時間 並沒有保
01/20 15:44, 5F

01/20 15:45, , 6F
證無法被攻破 所以小弟不懂能不能解出原始的組譯碼真這麼
01/20 15:45, 6F

01/20 15:46, , 7F
重要嗎 (就算是付費軟體 也都還是能被破解的阿...)
01/20 15:46, 7F

01/20 15:54, , 8F
分享推一個 :D
01/20 15:54, 8F

01/20 15:58, , 9F
"只要花時間" <=這是重點阿XDD
01/20 15:58, 9F

01/20 15:59, , 10F
解dex好像滿多的,smali、baksmali也可以
01/20 15:59, 10F

01/20 16:05, , 11F
推 好工具的分享 這篇有價值阿XDDD
01/20 16:05, 11F

01/20 16:06, , 12F
我想最難破解的應該就是直接用機械碼寫成的軟體了吧=_=
01/20 16:06, 12F

01/20 16:06, , 13F
不過也沒有人會這樣做就是了 所以還是都可以破的!
01/20 16:06, 13F

01/20 16:30, , 14F
收錄至 z-3-2-2
01/20 16:30, 14F

01/20 17:16, , 15F
機器碼直接譯成組語啊,和解C/C++沒兩樣
01/20 17:16, 15F

01/20 19:27, , 16F
偷偷報個八卦 本人所在的lab最近在玩這塊
01/20 19:27, 16F

01/20 19:29, , 17F
兩個學長(也許加上我本人)的碩論都是這方向的東西
01/20 19:29, 17F

01/20 19:29, , 18F
主要是想走 dalvik bytecode -> java 這個方向這樣
01/20 19:29, 18F

01/20 19:35, , 19F
自動XX?XD
01/20 19:35, 19F

01/21 12:23, , 20F
只要沒加密(不是混淆)+Checksum, 其實都差不多看光光...
01/21 12:23, 20F

01/25 03:32, , 21F
試試dex2jar+jd-gui
01/25 03:32, 21F
文章代碼(AID): #1DD-IAWQ (AndroidDev)