首页
社区
课程
招聘
一个带狗的java软件的破解
发表于: 2005-6-24 10:20 14332

一个带狗的java软件的破解

2005-6-24 10:20
14332

一直与狗无缘,近日有机会得到一个软件,用的是sen***狗,决定好好研究一下。

    该软件从结构上分为界面与内核两部分,
    界面是用delphi一类软件写的,内核是java写的。

    不插狗时,软件启动显示为demo版;只能打开一个编辑窗口;
且运行脚本(该软件最重要的功能)时提示无狗,不能继续。

    经过跟踪发现用户界面使用一全局变量作为标志,启动时如果无狗会把该变量置0。
把这一变量锁住后,启动不再显示demo字样;只能打开一个编辑窗口的限制也去掉了。
但运行脚本时仍提示无狗。至此界面部分的破解已经完成,过程不在此敷述,因为本文重点不再此。

    该软件带了一大堆class文件,搜索一下果然发现某个class文件包含无狗的提示信息。
用jad1.4反编译一下这个class文件,可以看到如下代码

        ……
        if(protection == null)
            protection = new Protection(1);
        if(!protection.check())
        {
            report.message("Attach a dongle for licenced use");
            Report.terminate("or contact ****** for an authorised copy");
            System.exit(0);
        }
        ……

    显然对狗的判断是在protection.check()函数中进行的。如果没有狗,就会提示,然后退出。
看了一下具体的判断过程,比较麻烦。虽然是java的源代码,但本人的java功力太浅,懒得理他了。
还是想想怎么去掉System.exit(0)这句话吧。

    试着用eclipse把反编译得到的java文件重新编译,一大堆错误。要么少这个包,要么少那个包,
我这样可怜的java水平,还是想别的办法吧。

    exe文件不是能直接改吗,为什么class文件不能直接改?用ultraEdit打开class文件一看,惨不忍睹。
上网找了一大圈,愣是没有class修改工具。

    请教了一位java高手,答曰java虚拟机规范里有class文件的格式说明。幸好网上有规范,而且是中文的。
class文件格式比较规整。但对本人还是过于复杂了。class文件里的操作符都是一个字节,从00到ff已经用的差不多了。
用ultraEdit+jad1.4,外加save/load大法,一阵摸索加实践,发现if(!...)在class文件里是通过操作符9a(ifne)实现的。
如果改成99(ifeq),if(!protection.check())就变成了if(protection.check())。

    哈哈,这下爽了,不插狗可以运行,插上狗反倒提示无狗。破解完毕。至于怎么读狗,很遗憾,
本人还是一窍不通。不过最大的遗憾是没有class文件的修改工具。也许是本人孤陋寡闻了。
如果真的没有,希望本文能起到抛砖引玉的作用,哪位精通java虚拟机的高手愿意为密界做个贡献,
做个class文件修改器?看到class文件里哪句话不爽,直接删掉了事。

    还有一点感想,狗在我心目中一直相当神秘,今日一见不过如此。管你判断有多复杂,修改一个字节,
程序流程改变,保护就形同虚设了。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 218
活跃值: (1655)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
那是程序没将狗用好,所以才成了摆设。
2005-6-24 10:48
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
3
这是程序员的错,不是狗的错...
2005-6-24 11:54
0
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵!不是吧!这样就搞定了!佩服!
2005-6-27 00:35
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
这是个行业软件,老外做的,要一万多欧元,可见软件的保护力度跟售价不一定成正比。
另外我的本意不是贬低狗,而是希望抛砖引玉,让大家对java软件破解多一些关注。因为现在老外做的很多软件是用java写的,而class文件修改起来很不方便。希望有精通虚拟机的高手做一个反编译加修改相结合的class文件编辑工具,或者讲一讲这方面的心得。
2005-6-27 13:51
0
雪    币: 218
活跃值: (1655)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼上的开个头吧,最好能整理一份00-ff的java代码对照表供后来者使用。
2005-6-27 15:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
原来class文件可以这样改,多谢楼主分享。能提供相关资料则更好了。
那个“一阵摸索加实践”能否再详细点
2005-6-28 15:55
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
在百度搜一下java虚拟机规范,挺多的。
第十章是00-ff的java代码对照表。
我下的是无优书库的pdf,10M大小,
限制版,没法拷贝,所以没法贴上来,各位见谅。
哪位找到无限制版的pdf或word版,麻烦说一下。
2005-6-28 17:15
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
“一阵摸索加实践”就是
1.用jcreater编一个最简单的java程序,但要有if(!……)。
2.用ultraEdit察看编译后的class文件,根据00-ff的java代码对照表判断哪个字节可能是if(!。
3.感觉9a(ifne)比较可疑,而且class文件里确实有一个字节是9a。
4.把9a改为99(ifeq),存盘。用jad反编译修改过的class文件,确实变成if(……)了。
5.用ultraEdit打开要破解的class文件,可能会有多个9a,逐个改为99,再反编译,看程序的流程是不是我们期待的那样。
6.如果不是,恢复。改下一个9a为99,直到成功为止。

以上是很笨的办法。严重需要高手做个专门工具出来。
2005-6-28 17:39
0
雪    币: 328
活跃值: (925)
能力值: ( LV9,RANK:1010 )
在线值:
发帖
回帖
粉丝
10
又学了一招.
2005-6-29 07:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tzk
11
应该是狗没用好,
现在手上的狗可不是这种方式读取啊,还在探索中
2005-6-29 17:04
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
12
这里有下载,没看到什么限制啊。
http://www.77169.com/Soft/book/200403/984.html
2005-6-29 21:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
恭喜,恭喜,恭喜
2005-7-28 08:46
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
有直接对class文件进行修改的工具
而且很强悍
不过要求jar包没有数字签名
2005-7-28 12:53
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
15
叫什么名字,给个链接去看看
2005-7-28 14:21
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
16
工具那里下,装一个去看看
2005-8-18 14:37
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
17
反编译class的工具很多呀,随便嗖嗖就有了

要是有直接修改的就好了!敬请高手出手

佩服楼主的耐心!
2005-8-18 15:30
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
18
2005-8-18 15:36
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
19
我发了贴 不过快一个月了 看到了就好了 不要再回贴了
http://bbs.pediy.com/showthread.php?threadid=15699
2005-8-19 08:46
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
20
好东东,不过用起来好像稍有点复杂,慢慢研究!
2005-8-21 10:31
0
游客
登录 | 注册 方可回帖
返回
//