`
cjc
  • 浏览: 683373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
<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;,该系列产品占据市场领导地位并包含多项专利技术。

分享到:
评论
1 楼 yw10260609 2012-12-07  
斑竹觉得WinLicense怎么样,我觉得WinLicense对源文件的加密保护的效果挺不错的,就是保护后的文件比以前的略大一些。分享一个WinLicense加密授权专题,介绍的挺不错的。
http://www.evget.com/zh-CN/Info/Topic/Topic.aspx?id=20128698

相关推荐

    嵌入式系统/ARM技术中的嵌入式软件代码保护系统的设计方案

    为解决这一问题,本文提出了一种新的嵌入式软件代码保护系统设计方案,它不仅适用于I2C、SPI总线的EEPROM和Flash存储器,还能覆盖主流厂商的NAND-Flash。该系统由两个主要部分组成:在PC机上运行的TDES(Triple Data...

    嵌入式软件代码保护系统设计

    嵌入式软件代码保护系统设计是一项关键的技术,旨在保护知识产权并增强产品的安全性。该系统针对国家半导体公司的CAT1026芯片存储器进行了加密和解密的读写操作,采用了基于Triple Data Encryption Standard (TDES)...

    代码加密软件,保护您的代码

    代码加密软件,保护您的代码代码加密软件,保护您的代码代码加密软件,保护您的代码

    NET软件代码分析与保护

    从使用角度触发,结合实例,介绍了软件代码常用的几种分析技术,进而利用强名称名称混淆,IL代码混淆夹克等保护技术,逐步给代码加上保护层,以增强软件代码被反编译的难度,从而实现软件代码的保护

    Eziriz .NET Reactor 4.6.0.0 官方原版+破解补丁(强大的代码保护和软件防盗版工具)

    Eziriz .NET Reactor 是一个强大的代码保护和软件防盗版工具,完全由.NET框架编写。.NET Reactor支持NET平台的软件许可系统,并支持NET程序集所有语言。当.Net编译器编译你的C#或VB.NET程序时,程序员的程序并不会...

    软件保护及分析技术随书代码

    软件保护及分析技术随书代码 软件保护及分析技术随书代码

    STM32的专有代码保护概述

    本文将详细介绍STM32专有代码保护机制的工作原理、实现方式以及其对软件供应商的重要意义。 #### 一、代码保护概述 STM32专有代码保护机制主要由两部分组成:全局读出保护(Global Read Out Protection, Global ...

    .NET Reactor(.NET代码保护软件)破解版 v5.0.0

    .NET Reactor是一个强大的.NET代码保护和许可制度,允许.NET软件开发人员能够轻松,安全地保护他们的应用程序(兄弟下载站提供)。该方案是非常容易使用,清洁,良好的组织和直观的界面,帮助开发人员保护他们的.NET...

    嵌入式软件代码保护系统的设计方案

    嵌入式产品由于其独特的稳定性、低廉的成本优势以及优良的可移植性,已经在互联网、科学研究、军事技术...

    软件著作权代码整理工具

    在IT行业中,软件著作权是保护开发者创新成果的重要法律武器,它确保了软件作者对其创作的原创性代码享有权利。为了成功申请软件著作权,通常需要提交一份详尽的代码文档,以便证明代码的独特性和原创性。在这个过程...

    .net软件保护程序源代码

    特性: 1. Name Obfuscation 2. User Strings Encryption 3. Proxy for external/internal 4. constructors/methods 5. Adding Incorrect Metadata 6. Control Flow ...压缩包提供最新的源代码和一些说明

    STM32 专有代码保护概述

    软件提供商开发的复杂中间件解决方案 (知识产权 (IP) 代码)需要进行保护。 这种 IP 代码必须能够以终端用户应用程序插件的形式来构建完整的解决方案。全局保护机 制会通过专用的应用程序编程接口 (API) 限制对该...

    PP防复制软件版权保护平台Android库及示例代码 2020.03.26

    《PP防复制软件版权保护平台Android库及示例代码详解》 在当今信息化社会,软件版权保护变得至关重要。"PP防复制软件版权保护平台"针对Android应用提供了强大的保护措施,旨在防止恶意复制和盗版行为,确保软件...

    软件保护程序综合设计代码及报告

    软件保护程序综合设计代码及报告 计算机信息安全技术

    软件保护及分析技术(书籍配套源码)

    软件保护及分析技术(书籍配套源码) 软件保护及分析技术 原理与实践

    用于软件保护的代码混淆技术

    对软件的盗版、篡改和逆向工程使软件的安全受到了严重威胁。攻击者通过静态分析和动态跟踪来分析编程者的...文章从软件保护的方法出发,介绍和分析代码混淆技术的方法和目标,并指出了代码混淆技术的优势和发展趋势。

    用VB来实现软件的注册保护源代码

    用VB来实现软件的注册保护源代码

    计算机软件著作权登记-源代码范本.pdf

    计算机软件著作权登记是保护软件创作者权益的重要步骤,它确保了软件开发者对其创作的源代码、设计文档等享有法律上的权利。源代码是软件的核心部分,包含了程序的具体逻辑和实现细节。在提交计算机软件著作权登记时...

    代码混淆/代码保护工具

    ‌Eziriz .NET Reactor‌是一款功能强大的代码保护和软件防盗版工具,完全由.NET框架编写。它主要用于为.NET Framework编写的软件提供强大的代码保护和软件许可系统,并支持生成.NET程序集的所有语言。.NET Reactor...

Global site tag (gtag.js) - Google Analytics