从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这样做不是很不理解的话,想在算是领悟了。这里把自己的心得贴出来,供各位商讨。
...全文
68 11 打赏 收藏 转发到动态 举报
写回复
用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
Java优化编程(第2版)通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做,深入分析了影响Java应用程序性能的根本原因。本书不是教你怎样使用Java语言开发应用程序,而是教你怎样才能开发出更高效、更优秀的Java应用程序。书中每一个例子都经过了作者严格的验证。 本书适合于所有想编写更高效、完美Java应用程序的开发人员阅读。 本书通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做,深入分析了影响Java应用程序性能的根本原因。本书不是教你怎样使用Java语言开发应用程序,而是教你怎样才能开发出更高效、更优秀的Java应用程序。书中每一个例子都经过了作者严格的验证。
本书适合于所有想编写更高效、完美Java应用程序的开发人员阅读.使用有道云笔记,轻松同步、管理您各终端的所有笔记。三重备份,存储数据安全有保障。免费的超大存储空间,无限量增长。 目录: 第1章 java程序设计风格 1.1 java文件名与文件组织结构 1.2 java文件注释头 1.3 的声明与引用 1.4 类与接口的声明 1.5 java源文件编排格式 代码行长度与折行规则 1.6 程序注释 1.7 变量的声明初始化与放置 1.7.1 变量声明 1.7.2 变量初始化 1.7.3 变量放置 1.8 java程序语句编写规则 1.8.1 简单语句 1.8.2 复合语句 1.9 空格与空行的应用规则 1.9.1 空格的应用规则 1.9.2 空行的应用规则 1.10 方法、变量与常量的命名规则 1.10.1 方法的命名规则 . 1.10.2 变量的命名规则 1.10.3 常量的命名规则 1.11 java编程实践 1.11.1 访问实例与类中变量的规则 1.11.2 引用类中的静态变量与方法的 …… 小结 第4章 java核心类与性能优化 4.1 散列表类与性能优化 4.1.1 线程同步散列表类 4.1.2 设置arraylist初始化容量 4.1.3 arraylist与linkedlist 4.2 string类与性能优化 4.2.1 字符串累加与性能优化 4.2.2 字符串的length()方法与性能优化 4.2.3 tochararray()方法与性能优化 4.2.4 字符串转化为数字 4.3 系统i/o类 4.3.1 java语言中输入/输出流 4.3.2 通过系统缓冲流类提高i/o操作效率 4.3.3 通过自定制缓冲区提高i/o操作效率 4.3.4 通过压缩流提高i/o操作效率 4.3.5 通过非阻塞i/o优化应用性能 4.4 其他 104 4.4.1 数据格式化与性能优化 4.4.2 获取文件信息与性能优化 小结 第5章 jni程序设计与性能优化 5.1 jni技术架构 5.2 创建带有本地方法的java应用 5.3 创建c端代码 5.3.1 创建c端代码头文件 5.3.2 创建c端代码主文件 5.4 jni技术中数据类型与处理方法 5.4.1 jni技术中的本地数据类型 5.4.2 访问jni本地数据类型的方法 5.4.3 在jni本地方法中访问数组 5.4.4 jni中的主要方法 5.5 jni中的重要技术 5.5.1 局部引用与全局引用 5.5.2 处理本地方法引起的java错误 5.5.3 线程与本地方法 5.6 jni数学计算与性能优化 5.7 处理好jni中的中文问题 小结 第6章 类与接口 6.1 类的构造器 6.1.1 构造器编写规则 6.2 类的继承规则 6.2.1 单线继承规则 6.2.2 内部继承规则 6.2.3 逻辑含继承规则 6.3 抽象类与接口 6.4 继承与组合的应用时机 6.5 接口与抽象类的应用时机 6.6 内部类 6.7 与性能相关的建议与经验 小结 第7章 jsp与servlet性能优化 7.1 提升jsp应用性能 7.1.1 优化jspinit()方法 7.1.2 通过优化_jspservice()方法提高系统性能 7.1.3 jsp高级知识 7.2 提升servlet应用性能 7.2.1 提高servlet应用性能的七个方法 7.2.2 合理缓冲静态数据与动态数据 7.2.3 改善servlet应用性能的方法 7.2.4 filter servlet与listener servlet 小结 第8章 开发高性能的ejb应用 8.1 采用ejb技术的必要性 8.1.1 ejb技术的优势特性 8.1.2 ejb技术体系具有清晰的架构层次 8.1.3 ejb与传统bean相比的性能优势 8.2 ejb的类型 8.2.1 ejb的生命周期 8.2.2 三种ejb的特点与适用场合 8.2.3 本地ejb与远程ejb的性能比较 8.2.4 有状态会话ejb与httpsession 8.2.5 ejb 3.0规范中的ejb 8.3 优化无状态会话ejb性能 8.3.1 如何控制无状态会话ejb的生命周期 8.3.2 通过调节无状态会话ejb实例池的大小来优化系统性能 8.3.3 无状态会话ejb资源的缓冲与释放 8.4 优化有状态会话ejb性能 8.4.1 控制有状态会话ejb生命周期 8.4.2 优化有状态会话ejb的主要途径 8.5 优化实体ejb的性能 8.5.1 如何控制实体ejb的生命周期 8.5.2 通过调节实体ejb实例池的大小来优化系统性能 8.5.3 控制好实体ejb中的事务 8.5.4 提高实体ejb应用性能的其他知识 8.6 优化消息ejb性能 8.6.1 如何控制消息ejb的生命周期 8.6.2 如何缓存释放系统资源 8.7 几种ejb的结合应用规则 8.8 提高ejb应用性能的其他途径 小结 第9章 jms性能优化 9.1 jms消息收发模式及其各自适用场合 9.2 发送与接收jms消息 9.3 优化jms中的会话对象 9.4 优化连接对象 9.5 优化消息目的地destination及消息生产者与消费者 9.6 优化消息对象及合理使用事务机制 9.7 影响jms性能的其他因素 小结 …… 第12章 java多线程技术与应用性能优化 12.1 java多线程技术 12.1.1 进程与线程 12.1.2 线程的生命周期 12.2 并行任务与性能 12.2.1 并行任务与多线程 12.2.2 并行任务与死锁 12.3 线程池技术与应用性能优化 12.3.1 线程池 12.3.2 调优线程池的尺寸 12.4 通过线程池技术优化套接字网络编程 小结 第13章 java泛型与应用优化 13.1 认识泛型 13.1.1 使用泛型的收益 13.1.2 泛型与jdk 5.0中的集合类 13.2 使用泛型 13.2.1 创建支持泛型的类 13.2.2 泛型的自动解装与自动装的功能 13.2.4 限制泛型中类型参数的范围 小结 第14章 ajax技术与web应用性能优化 14.1 了解ajax 14.2 通过ajax技术改善web应用性能 14.2.1 ajax技术实现 14.2.2 ajax技术性能优化实例 小结 第15章 其他优化话题 15.1 用weakhashmap屏蔽内存泄漏 15.2 优化java应用大小 15.3 通过randomaccess接口优化迭代列表 15.4 合并java中的多进程与系统优化 小结 附录a together工具的使用简介 附录b j2se 5.0的新特性与性能的提升 附录c 编排代码的精美工具jxbeauty 使用有道云笔记,轻松同步、管理您各终端的所有笔记。三重备份,存储数据安全有保障。免费的超大存储空间,无限量增长。激活后即可免费获得2GB云存储空间。赶紧来体验吧。 http://note.youdao.com/?invitation=6C359E8D3B4645CA9B2433C6E328E66F 使用有道云笔记,轻松同步、管理您各终端的所有笔记。三重备份,存储数据安全有保障。免费的超大存储空间,无限量增长。

67,514

社区成员

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

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