首页
社区
课程
招聘
JEB(破解更新2014-07-16)
发表于: 2014-7-11 17:36 125766

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

scz 活跃值
5
2014-7-11 17:36
125766

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

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版。

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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 4
支持
分享
最新回复 (81)
雪    币: 403
活跃值: (330)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
四哥的贴!!!前排占位!!!火前留名!!!
2014-7-11 17:42
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
3
顶...
2014-7-11 17:45
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
牛B 顶!
2014-7-11 18:29
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mark~
2014-7-11 19:41
0
雪    币: 3366
活跃值: (1358)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
牛掰  学习~
2014-7-11 19:52
0
雪    币: 101
活跃值: (169)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
四哥V5...
2014-7-11 20:41
0
雪    币: 97
活跃值: (98)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
四哥威武。
2014-7-11 21:34
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
牛逼支持一下
2014-7-11 22:10
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
经测试反编译后用tab生成源码的时候cpu 100%程序就死掉了,这东西有签名校验
2014-7-11 22:22
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
can't decompile to java source code. lol...
2014-7-11 23:50
0
雪    币: 4844
活跃值: (3842)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
12
1.4的Full版好像也是调py反编译的,它那个函数只是不提示Demo。我试了1.5的Demo版,跟1.4一样,可以反编译。
2014-7-12 13:34
0
雪    币: 4844
活跃值: (3842)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
13
你那个apk可以贴上来吗?我就用微信的apk试了试,没碰上你说的这种情况。我这儿tab微信没问题。

如果你那个apk死活能碰上,那就是还有暗桩,你要是肯贴上来,我可以把这个暗桩找出来剁掉。
2014-7-12 13:35
0
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
14
楼主,你这个是用于1.5demo版的,还是1.4full版的呢?
demo版的试了,不稳定,情况同10楼。 1.4full版的,界面打不开~肿么个情况呢?
2014-7-12 15:26
0
雪    币: 4844
活跃值: (3842)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
15
1.4 full版的界面打不开?那个不需要剁就直接可用啊。我没碰上过。

我是尝试在1.5 demo上补full版功能。因为实际功能代码是demo里是存在的,只不过没有去调用。
2014-7-12 15:38
0
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
16
我是下载好1.5demo版,然后用你的jar替换bin里面的jar;再使用jeb-wincon.bat下载swt。
我的环境是win7 64bit,会不会跟这有关?
2014-7-12 15:42
0
雪    币: 15136
活跃值: (4145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
的确会死掉而用1.4的那个不会死掉
上传的附件:
2014-7-12 16:40
0
雪    币: 4844
活跃值: (3842)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
18
我的7z包展开就可以用啊,除了swt和jython两个外部库没打包进去,自己放进去即可。我在x64/Win7上试过,没碰上啥问题。是不是你的jre环境本身不兼容?这个我倒是没测更多版本,我是7.55的。
2014-7-12 16:41
0
雪    币: 4844
活跃值: (3842)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
19
ok,等我回头看看这个怎么死的,再来更新。不过不知道是Demo版自身会死,还是我剁了之后会死。你试过不剁的情况下会死吗?
2014-7-12 16:43
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
我试过,1.5的demo的不会死机
2014-7-12 20:54
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
楼主能否简单讲讲此软件剁的过程,我们也学习一下^.^
2014-7-12 21:22
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
学习并支持!!
2014-7-12 23:19
0
雪    币: 64
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
楼主能否简单讲讲此软件剁的过程,我们也学习一下^.^
2014-7-16 16:00
0
雪    币: 4844
活跃值: (3842)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
24
附件已更新。你上次碰上的"死掉"确实存在,是有个暗桩没卸掉。你再试试新版破解。这次把功能补全了。

不过上次你说的死掉也不完全对,它有个暗桩会在反编译某些函数时故意狂吃内存直至异常抛出,此时你扔在
那儿等它自己结束即可,其他函数仍然会反编译成功,并不会死掉。不过一般人等不及。

现在新附件有大幅增强,包括卸掉该暗桩。谢谢你提供的测试样本。
2014-7-16 16:05
0
雪    币: 97
活跃值: (98)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
四哥太强了,上个版本确实反编译某些app的时候会死掉,刚试了下刚跟新的这个,问题确实没有了。多谢四哥。
2014-7-16 16:19
0
游客
登录 | 注册 方可回帖
返回
//