作者afz096 (我被淡水的路寵壞了)
看板AndroidDev
標題[分享] apk 的反組譯(decompiler)
時間Thu Jan 20 15:30:15 2011
看到有版友討論到 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
1F:→ qrtt1:如果你看過 cih 示範破 xxx 那,就明白混淆器能夠混淆的只是 01/20 15:32
2F:→ qrtt1:開發者那顆焦慮不安的心,混淆不了駭客的眼睛。 01/20 15:32
3F:推 nowar100:我不懂為什麼這麼在意要"隱藏"自己的實做 任何程式都可以 01/20 15:43
4F:→ nowar100:被反組譯成低階語言 就算被混亂過 只要花時間 還是可以看 01/20 15:44
5F:→ nowar100:出脈落 另外 目前所有安全機制都只是在拖延時間 並沒有保 01/20 15:44
6F:→ nowar100:證無法被攻破 所以小弟不懂能不能解出原始的組譯碼真這麼 01/20 15:45
7F:→ nowar100:重要嗎 (就算是付費軟體 也都還是能被破解的阿...) 01/20 15:46
8F:推 nowar100:分享推一個 :D 01/20 15:54
9F:推 abccbaandy:"只要花時間" <=這是重點阿XDD 01/20 15:58
10F:→ abccbaandy:解dex好像滿多的,smali、baksmali也可以 01/20 15:59
11F:推 yienge:推 好工具的分享 這篇有價值阿XDDD 01/20 16:05
12F:→ yienge:我想最難破解的應該就是直接用機械碼寫成的軟體了吧=_= 01/20 16:06
13F:→ yienge:不過也沒有人會這樣做就是了 所以還是都可以破的! 01/20 16:06
14F:→ nowar100:收錄至 z-3-2-2 01/20 16:30
15F:推 Romulus:機器碼直接譯成組語啊,和解C/C++沒兩樣 01/20 17:16
16F:推 yshinri:偷偷報個八卦 本人所在的lab最近在玩這塊 01/20 19:27
17F:→ yshinri:兩個學長(也許加上我本人)的碩論都是這方向的東西 01/20 19:29
18F:→ yshinri:主要是想走 dalvik bytecode -> java 這個方向這樣 01/20 19:29
19F:推 abccbaandy:自動XX?XD 01/20 19:35
20F:推 chrisho:只要沒加密(不是混淆)+Checksum, 其實都差不多看光光... 01/21 12:23
21F:→ linccg:試試dex2jar+jd-gui 01/25 03:32