风吹屁屁凉 发表于 2015-1-4 17:06

JEB Android Decompiler(破解更新2014-07-16)

标 题: JEB(破解更新2014-07-16)
作 者: scz
时 间: 2014-07-11,17:36:08
链 接: http://bbs.pediy.com/showthread.php?t=189980

我是从道长那儿知道有这么个贴的:

http://bbs.pediy.com/showpost.php?p=1277331&postcount=12

这个帖子展开后,有人给了Demo版,有人给了早期Full版,更有高人给了keygen。
对于最后这两位,我简直是佩服得眼泪花花的,就差黄河没倒流了。

由于已经有keygen了,其实我这是狗尾续貂。我干了几件无意义的事:

1. 直接把jeb.jar剁了,包括License检查、update检查、模态对话框、过期时间检查等等
2. 把"Cannot load or save to a JEB database file"这个限制去掉了,参照Full版里把Save功能补回来

我没仔细用,所以可能有其他未处理好的地方,再就是"No copy/paste of code."尚未去掉。等我去掉了再
来更新此贴。

对混淆过的Java程序破解不熟,第一次剁这类程序,贻笑大方了。如有不妥,请指正。

2014-07-11 18:02 scz

擦,闹笑话了,只把Save补全了,Load还没加回去。没关系,我会回来更新这个附件的。

2014-07-16 15:46 scz

附件更新,这次把1.5 Demo相比1.4 Full的限制全去掉了,包括下面这几项:

- Cannot load or save to a JEB database file
- Only a subset of methods will be decompiled
- No copy/paste of code
- Maximum running time for a single session is 1 hour

至少目前看,功能不弱于1.4 Full版(可能说的不对)。

有的限制是简单的判断语句,有的是没有相关调用代码,但被调函数体实际是在Demo版中的,参照
1.4 Full把主调函数的代码补回来。之前提供的版本暗桩没卸完(水平有限),这次也不敢说把暗桩卸完
了。谁要是碰上问题了再反馈吧。

1.5 Demo版其实是"demo debug"版,如果真是"demo"版,估计我也搞不掂,二者的区别是前者
携带了行号信息。尽管混淆过了,但有行号信息,很多调试手段都可以上,没有行号信息区别大了去了。

1.4 Full版的混淆程度要高于1.5 Demo debug版。

再次推荐一下BTrace,这次破解主要就靠它了。“Bytecode Visualizer”此次作用相当有限。

这个软件好不好我并不知道,我就是借此机会试试Java破解手段。感谢提供1.5 Demo debug和1.4 Full的兄弟。

2014-07-16 16:06

下面有人问怎么剁的。关键是它混淆过,敏感字符串基本都藏起来了,因此要设法找到敏感字符串,比如
"License key error."。开始也不知道它们在哪儿,先在Eclipse里针对exit()设断点,因为它碰到这不对
那不对总要退出的,然后查看调用栈回溯。前面说了,这是个Demo debug版本,有行号信息,就爽在
这儿了。

/*662: 450 */       if (!localoQ.dN(str1, arrayOfInt)) {
            // License key error.
/*663: 451 */         cn.dN(rP.dN(new byte[] { 15, 6, 19, 28, 28, 26, 2, 72, 31, 69, 81, 67, 76, 82, 67, 86, 75, 29 }, 2, 13));
/*664: 452 */         Ee();

调用栈回溯表明Ee()在调exit(),注意到Ee()里面以及前面都有rP.dN(new byte[]...),这就比较显眼了,
应该是编码字符串的解码函数。在调试器里拦截rP.dN(),就能看到所有的敏感字符串。当然,我没这么
蠢,我用了BTrace,直接把它们在运行过程中显示出来了。再次因为这是debug版本,有行号,我的
BTrace输出爽得不能再爽。

剩下的就是慢慢触发各种判断、各种输出,一个个剁过去就是了。

由于1.4 Full版,可以进行类似漏洞分析中的补丁比较操作,在1.4 Full与1.5 Demo debug之间建立
对应关系,查看那些缺失的功能在1.4中怎么实现的。意外发现这些功能的真正实现都有,只是没有调
用它们,接下来要做的就是直接在class上操作,补回主调代码即可。这种补,用JBE(不是被剁的JEB)
比较合适。其实也不算意外发现,是因为道长给的那个链接里有人说他这么干了,要是他不说他干成功
过,我也不会去试着找它们。尽管那哥们只是出来秀了一下,并没有提供成品会其他介绍,但有时候就
是这样的,说成功过与不说,对后来者的区别相当大,甚至是质的差别。所以我还是很感谢他秀了这么
一下。

BTrace是一个很正经的Java进程诊断分析工具,用于线上排错、性能分析等等。它利
用HotSwap技术将一小段用户可控代码动态注入Java进程中,相当于hook。在不正经的
Java逆向工程中BTrace很有用武之地。几年前我用它剁过soapUI Pro。没用过的就去用用吧。

下面是2012年剁soapUI Pro 4.5时的贴子,里面也用了BTrace:

http://bbs.pediy.com/showthread.php?p=1114491

2014-07-17 09:47

14) 内存使用

有些人是通过jeb_wincon.bat启动,它实际执行的是:

java -Xmx2048m -XX:-UseParallelGC -XX:MinHeapFreeRatio=15 -jar jeb.jar

依据JAVA环境不同,有可能碰上提示:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

这个没有别的好招,只能是不断缩减-Xmx,直至无提示。

一般情况下可以直接双击jeb.jar启动,相当于没有指定那三个参数,关键还是-Xmx。
如果不指定-Xmx,反编译SuperSU.Pro.v2.00.apk、weixin21android15.apk都没问题,
反编译weixin45android.apk时会触发内存耗尽异常:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
      at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
      at jebglobal.Nz.dN(SourceFile:34)
      at jebglobal.Nz.dN(SourceFile:27)
      at jebglobal.yx.dN(SourceFile)
      at jebglobal.yW.dN(SourceFile:705)
      at jebglobal.TT.widgetSelected(SourceFile:139)
      at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
      at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
      at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
      at jebglobal.yW.rn(SourceFile:345)
      at jebglobal.yW.dN(SourceFile:86)
      at jeb.Launcher.main(SourceFile:159)

这个不像是1.5 Demo版的暗桩,1.4 Full版存在同样现象:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
      at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
      at jeb.c.b.a(Unknown Source)
      at jeb.f.aj.a(Unknown Source)
      at jeb.f.au.a(Unknown Source)
      at jeb.f.F.widgetSelected(Unknown Source)
      at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
      at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
      at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
      at jeb.f.au.v(Unknown Source)
      at jeb.f.au.a(Unknown Source)
      at jeb.Launcher.main(Unknown Source)

下面这样启动1.5 Demo版,可以成功反编译weixin45android.apk(18.6MB):

"C:\Program Files (x86)\Java\jdk1.7.0_55\bin\java.exe" -Xmx1500m -XX:-UseParallelGC -XX:MinHeapFreeRatio=15 -jar jeb.jar

单就weixin45android.apk而言,还有个小调整:

Edit->Options->Assembly->Visualization

这里缺省threshold是20000,调成39000。

装64位JDK和swt-win64-4.3.jar,内存问题基本就不会碰上了:

"C:\Program Files\Java\jdk1.7.0_60\bin\java.exe" -Xmx4096m -XX:-UseParallelGC -XX:MinHeapFreeRatio=15 -jar jeb.jar
"C:\Program Files\Java\jre7\bin\java.exe" -Xmx4096m -XX:-UseParallelGC -XX:MinHeapFreeRatio=15 -jar jeb.jar

此时不指定-Xmx4096m一般也没事,至少反编译weixin45android.apk无压力。

2014-07-17 17:07

wangshy指出,http://bbs.pediy.com/showpost.php?p=1277331&postcount=12 楼层中提供的1.4 Full版其实是
1.4 Demo Crack版,不是真正的1.4 Full版。

我是破解业余爱好者,见不多识不广,写的前文多有误导,请诸君见谅。高人真多,除了膜拜还是膜拜,内里关碍就不
多说了。

淡然出尘 发表于 2015-1-4 17:41

屁屁凉 也在玩安卓破解?

字母 发表于 2015-1-4 17:15

这个也能破解诶呢。。。 才发现还有这种小惊喜…………

跳跃的灵魂 发表于 2015-1-4 17:43

强大的工具~

巴斯光年丶 发表于 2015-1-4 17:14

不明觉厉~

风吹屁屁凉 发表于 2015-1-4 19:05

淡然出尘 发表于 2015-1-4 17:41
屁屁凉 也在玩安卓破解?

淡然大牛啊,小弟学习中!

duanjia0912 发表于 2015-1-4 19:10

绝对是大婶!!!利害,不顶不行 ...{:1_918:}

duanjia0912 发表于 2015-1-4 19:45

话说我运行不起来呢。。。。(win7 x64)


要python环境吗???





..


shaofubaihu 发表于 2015-1-7 09:16

感谢~~ look一下》。

枫缘 发表于 2015-1-14 12:31

支持一个,好帖啊!!!!1
页: [1] 2
查看完整版本: JEB Android Decompiler(破解更新2014-07-16)