<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
什么是 Java 或 .NET Obfuscator ?
精明的政治家知道如何去回避难以回答的问题:混淆。 Obfuscator 隐藏信息,通过含糊不清或者是掩盖了的事实把分析者搞糊涂。
软件 Obfuscator 和政治上的 Obfuscator 相似,但是存在一些很大的差别。 Java 和 .NET Obfuscator 只是迷惑了表面的分析者,而保持了机器编码层的一致性。软件 Obfuscator 使用混淆代码来挫败分析者的同时不破坏程序的执行。
为了阐明 Obfuscator 的工作原理,我们可以以厨师为参考。厨师可以在烹调一道由 7 道菜肴组成大餐的时候允许顾客一道一道地来品尝。然而,厨师作为一个 Obfuscator 完全可以把所有的菜肴混合到一块。合成的混合物会掩盖每一道菜的味道,使得顾客无法分辩,尽管如此却提供了相同的营养价值。
Java 和 .NET Obfuscator 混乱代码以使客户机( JVM 和 CLR )并不明白内部的细节而能够正常使用。 Obfuscator 从编译后的代码中删除一些人或者反向工程软件可以读懂潜在的文字信息。它的目标就是从应用程序中去除上下文联系的同时保持程序的完整性。
Java 和 .NET Obfuscator 并不能提供绝对地保护。通过大量的技巧和坚持不懈的努力,黑客仍然可以反编译出代码的真正含义。 Obfuscator 的目标是提高黑客破解的难度,使得反向工程非常困难,以至于黑客不值得为破解做出那么大的努力。 .
代码 Obfuscator 不会把代码加密。加密技术采用数据密钥。但是因为黑客们能破解密钥或者查找到程序内部的密钥,加密技术也是不可靠的。
TOP
为什么使用 Java 或 .NET Obfuscator?
使用 .NET 或者 Java 语言编写的程序易于对其进行反向工程。这并不是设计上的缺陷,只是现代中间语言的一种副产物。 .NET 和 Java 都使用表达能力丰富的语法来编写可执行代码,这在 .NET 中被称为 MSIL (微软中间语言);对 Java 来说就是 bytecode 。现代高级语言的一个优势在于他们能够在比二进制机器代码更高级的层次上工作;中间文件包含实现程序功能所使用的标识符和算法。很明显,很难在隐藏这些基本构成元素的同时保持程序的灵活性和扩展性。
黑客可能会使用一些诸如 Reflector for .NET 反编译器 ( http://www.aisto.com/roeder/dotnet/ ) 或者 JAD Java 反编译器 ( http://kpdus.tripod.com/jad.html ) 来反编译中间语言。对 .NET 或 Java 实施反汇编会揭示出源代码中关键的组件,使黑客们可以查找到软件授权代码、版权保护机制或者私有的商务逻辑和其他的知识产权信息。这些信息任何人都可以加以利用。
开发者使用健壮的混淆技术来保护他的软件。 Obfuscators 能重命名程序集和类中的标志符并使用各种陷阱挫败反编译者。
TOP
Java 或 .NET Obfuscator 会影响性能吗?
软件 Obfuscators 并不会降低执行性能。实际上,成熟的 Java 或 .NET Obfuscator 可以通过压缩应用程序来提高性能。 Obfuscators 使用 overload induction (重载感知)的技术重用标志符的名称,它的另一个特点就是可以删除没有使用到的类、方法、局部变量和设计时产生的元数据。这使得应用程序的缩小率可以达到 20-40% 甚至更多。
精简后的程序通常会加载地更快并使用更少的内存。此外,因为程序小了,网络分布式组件程序将会更有效率。
TOP
哪些 Java 和 .NET 程序需要被模糊化?
以下几种情况下, .NET 或 Java 程序应该使用 Obfuscator :
- 源代码不是公开的;
- 代码中存在个人敏感信息,比如 SQL 语句,用户名和密码;
- 系统性能,带宽或者程序大小成为限制因素;
也就是说如果程序大小不是问题,源代码是公开的或者是开源软件,就不需要使用 Obfuscator 了。
对企业开发者来说,如果设定一个规范,明确使用 Obfuscator 作为标准的构建工具,而不是把精力放在针对单个具体的程序上,他们将获益良多。因为这做避免了对每个开发项目都花费时间去做重复的工作。
TOP
什么是软件水印?
软件的水印使用数字内容供应商保护歌曲、电影和画像相同的手段,来隐藏软件中顾客信息和著作版权信息。水印可以识别软件的所有者,隐蔽地识别出盗版拷贝的来源。
TOP
选择 Java 和 .NET Obfuscator 时,要考虑哪些问题呢?
性能,可靠性和技术支持都是重要的需要考虑的因素。
- 能够防止反编译技术得到有用的信息吗?
- 是否使用了基于 XML 的构架?
- 对 Java 和.NET 提供统一的部署环境,使之更易于学习吗?
- 是否提供了详细的配置选项以便用户可以根据自己软件来订制 Obfuscator 吗?
- 可以生成 map 文件以帮助进行堆栈跟踪吗?
- 是否提供了帮助发现问题和调试程序的工具吗?
- 是否使用重载感知技术重命名方法和字段吗?
- 是否具备增量混淆化能力使得发布补丁更容易吗?
- 使用控制流混淆技术破坏反编译者用来重新构建源码级控制结构的模式?
- 能通过修剪和重命名来缩小应用软件尺寸吗?
- 使用有效的字符串加密技术隐藏敏感信息吗?
- 很容易集成到自动化构建系统中吗?
- 能继续提供升级以增加产品功能吗?
除此以外,对于 .NET Obfuscators 来说,以下的事项也是要考虑的。
- Obfuscator 可以和 Visual Studio 无缝整合吗?
- Obfuscator 可以及时地升级以支持新版的 Visual Studio 和 .NET Framework 吗?
- Obfuscator 能让 .NET 的验证功能正常使用?
Obfuscator 通过了微软内部的安全检察和测试吗?
可靠性可以通过经销商过去的销售记录和业界的经验来判断。可以考虑以下的事项来评价。
- 经销商能提供现场支持吗?
- 经销商是否具备丰富的行业经验?
- 经销商可以持续经营多少年?
另外一个评估 .NET 和Java Obfuscator 的方法是考虑专家的意见,比如.NET Framework 的创造者。
- 对于 .NET Obfuscator ,它是否被微软采用并得到认可的?
- 对于 Java Obfuscator ,它是否被 Sun 公司采用并作为 JDK 库的一部分?
PreEmptive Solutions 提供的 Java Obfuscator : DashO 和 .NET Obfuscator : Dotfuscator 在大中国区由总代理 万里鹏翼公司 和台湾/香港/澳门地区代理 创毅科技有限公司 ,负责销售与技术支持。 DashO 和 Dotfuscator 在性能、可靠性、支持和业界的知名度方面具有非常好的可比性。而&# 19988;,该系列产品占据市场领导地位并包含多项专利技术。
分享到:
相关推荐
在嵌入式系统中, 如何保护核心的嵌入式软件代码, 对于保护公司的知识产权、延长产品的寿命, 提高公司的利润有着非常重要的意义。目前的嵌入式系统中, 软件代码一般存储在诸如EEPROM、F lash等存储器中, 但其中...
代码加密软件,保护您的代码代码加密软件,保护您的代码代码加密软件,保护您的代码
从使用角度触发,结合实例,介绍了软件代码常用的几种分析技术,进而利用强名称名称混淆,IL代码混淆夹克等保护技术,逐步给代码加上保护层,以增强软件代码被反编译的难度,从而实现软件代码的保护
本文设计的嵌入式软件代码保护系统, 已经成功地对国家半导体公司的CAT1026芯片存储器进行解/加密读写操作, 虽然基于TDES的加密和解密的过程降低了嵌入式系统的运行速度, 但是以少量降低性能换取更高的产品安全性...
Eziriz .NET Reactor 是一个强大的代码保护和软件防盗版工具,完全由.NET框架编写。.NET Reactor支持NET平台的软件许可系统,并支持NET程序集所有语言。当.Net编译器编译你的C#或VB.NET程序时,程序员的程序并不会...
软件保护及分析技术随书代码 软件保护及分析技术随书代码
为了阻止攻击者对本地代码的破坏,设计实现了一种 Android 平台本地代码保护方法. 在原始代码中插入多个冗余数据和完整性校验代码,并且对编译后的程序进行加密, 使本地代码具备了抵抗攻击 者静态分析和动态篡改...
嵌入式产品由于其独特的稳定性、低廉的成本优势以及优良的可移植性,已经在互联网、科学研究、军事技术...
特性: 1. Name Obfuscation 2. User Strings Encryption 3. Proxy for external/internal 4. constructors/methods 5. Adding Incorrect Metadata 6. Control Flow ...压缩包提供最新的源代码和一些说明
软件提供商开发的复杂中间件解决方案 (知识产权 (IP) 代码)需要进行保护。 这种 IP 代码必须能够以终端用户应用程序插件的形式来构建完整的解决方案。全局保护机 制会通过专用的应用程序编程接口 (API) 限制对该...
软件保护程序综合设计代码及报告 计算机信息安全技术
对软件的盗版、篡改和逆向工程使软件的安全受到了严重威胁。攻击者通过静态分析和动态跟踪来分析编程者的...文章从软件保护的方法出发,介绍和分析代码混淆技术的方法和目标,并指出了代码混淆技术的优势和发展趋势。
用VB来实现软件的注册保护源代码
PP防复制软件版权保护平台,VC++调用示例代码,VS2010工程,支持WindowsXP及以上,x86、x64平台
软件保护及分析技术(书籍配套源码) 软件保护及分析技术 原理与实践
就是一些源码,不是书籍,请仔细看描述,没有骗你下载的意思
《软件保护及分析技术——原理与实践》 [1] 对软件安全领域的保护与分析技术进行了全面的讨论和剖析,通过保护与分析的对比讲解,结合代码和操作流程,对软件安全领域的各种技术进行了详尽的讨论,并将理论与实践相...
在Safengine Licensor的基础上,我们推出了基于网络的授权验证平台: Safengine NetLicensor 它由三部分组成: ● Safengine Code Protection 软件代码保护(代码变形、虚拟化) ● Safengine Licensor本地授权...
最新 最强 金盾软件保护,欢迎下载交流!!
浅谈用于Java软件保护的代码混淆技术研究与实现.pdf