作者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