从Together的破解看java包的安全性

optman 2003-04-08 02:50:20
首先,我对Java和.NET都不是很熟悉,所以只能泛泛而谈,如有不妥请指正。

问题是这样引出来的,购买了最新一期的"程序员"杂志,安装了Together软件。在寻找注册码的时候,无意中在“http://www.java.com.cn/showtopic.asp?TOPIC_ID=8117&Forum_ID=33”找到了解决方法。

解决方法很新颖,写一段Java程序(伪造一个系统类,我猜的),编译并注入Together附带的jar文件中。然后修改Together的配置文件,指定License使用Localhost(估计是指向了刚才的代码)。于是,一切OK了。

就这么轻易的,Borland提供的正版Together软件(不知道是不是完全版)就被破解了。

高兴之余,也很是感慨,Java包居然这样容易被修改,插入新的代码!于是想起刚刚看完的《Applied Microsoft .NET Framework》对.NET里的Assembly(相当于Java中的Package)的安全保护,需要使用私钥进行加密,并用公钥解密的。如果任何人对于Assembly作了任何的修改,CLR将拒绝装载该Assembly!

如果以前对.NET这样做不是很不理解的话,想在算是领悟了。这里把自己的心得贴出来,供各位商讨。
...全文
109 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xixipig 2003-04-29
  • 打赏
  • 举报
回复
up
optman 2003-04-09
  • 打赏
  • 举报
回复
To lihonggen0:

抱歉,没看出那是你的签名档。想来,你是好意帮我顶的,误解了。:(
optman 2003-04-09
  • 打赏
  • 举报
回复
To lihonggen0:

老兄,用不着这样发广告吧?说什么也是一个专栏作者,回答过1万个问题的NB程序员啊。
lihonggen0 2003-04-09
  • 打赏
  • 举报
回复
------------------------------------------------------------------
个人专栏:http://www.csdn.net/develop/author/netauthor/lihonggen0/
------------------------------------------------------------------
optman 2003-04-09
  • 打赏
  • 举报
回复
To llkh:

不知道Java的Jar文件是如何签名的,因为在.NET里Assembly有所谓的元数据(MetaData)。签名工具sn.exe首先计算Assembly的Hash值,然后使用私钥对Hash进行加密,然后把加密后的Hash值和公钥放入元数据。

元数据的存在,让Assembly的签名变得容易,也是CLR的关键。不知道Jar文件里,Hash值和公钥是放在哪里的?是不是也有类似的元数据?放在一个独立的配置文件里?

optman 2003-04-08
  • 打赏
  • 举报
回复
To MyXin:
我已经成功破解了!你为什么不行,我也无法解释,呵呵。
凌波微搏 2003-04-08
  • 打赏
  • 举报
回复
其实道高一尺魔高一丈,新的加密方法出来,又会有新的解密方案出来。
MyXin 2003-04-08
  • 打赏
  • 举报
回复
不知道你是否按照这样成功破解了!我安装上面的方法为什么不能破解?
llkh 2003-04-08
  • 打赏
  • 举报
回复
java中的做法:
1,对jar文件签名
2,对于属于这个package但不在这个jar文件中的class,拒绝load
proZeus 2003-04-08
  • 打赏
  • 举报
回复
顶~~
llkh 2003-04-08
  • 打赏
  • 举报
回复
java中也有类似的做法,即不能对jar文件作修改。
这不是java本身的安全性,只是together的一个bug

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧