没有比发现一个错误,却没有源代码就不能修改更令人沮丧的了.正是这个原因导致了 java 反编译器的出现,它可以把编译后的字节码完全转回成源代码.尽管代码反编译器不只是针对 java 语言,但它从来没有象在 java 开发人员中那样被公开地或广泛地使用.
在本文中,我将让您了解代码反编译与模糊处理的具体过程,讨论在这两种技术之后的理论问题,同时简要地谈到它们在商业编程领域中所引起的争论.我还将介绍一些比较有名的反编译器与模糊处理器(有商业的,也有开放源代码的),并随着文章的深入使用它们来创建一些实例. 【程序编程相关:Eclipse 的字符串分区共享优化机制】
与反编译针锋相对的是模糊处理.假设反编译人员能很容易从编译后的代码中设法得到源代码,那么要保护您的代码与有价值的技术秘密就不是那么简单了.随着 java 反编译器的普遍使用, java 模糊处理器也同样被普及,它的作用就好像放一块烟幕在您的代码前面.反编译与模糊处理在商业开发领域中引起了一场争论 -- 争论中的大部分都集中在了 java 语言上. 【推荐阅读:使用嵌入式 Tomcat 简化程序调试 】
反编译是一个将目标代码转换成源代码的过程.这应该很清楚了,因为编译是一个将源代码转换成目标代码的过程.但什么是目标代码呢?大体上的定义是:目标代码是一种用语言表示的代码,这种语言能通过实机或虚拟机直接执行.对于象 c 这样的语言,目标代码通常运行在硬件 cpu 上,而 java 目标代码通常运行在虚拟机上. 【扩展信息:在eclipse中使用ant灵活构建we】什么是反编译?
反编译是困难的
正如以上所描述的,反编译听上去比较简单,但它实际上是非常困难的 -- 从本质上说,它所包含的是根据小规模.低层次的行为来推断大规模.高层次的行为.为了对此有个直观的理解,我们把一个计算机程序看作是一个复杂的公司组织结构.高层管理人员向他们的下属下达类似“最大程度地提高技术生产能力”的命令,下属们再把这些命令转变成更具体的行动,例如安装新的 xml 数据库.作为该公司的新雇员,您可能会问下属他或她在做些什么,并得到回答,“我在安装新的 xml 数据库.”从这句话中,您不可能推断出其最终目的是最大程度地提高技术生产能力.毕竟,最终目标不尽相同,例如可能是分离供应链或累积消费者的数据.
... 下一页