总结:目前代码保护的主要方法(原创)
2007-05-25 21:48
405 查看
目前代码保护的方法主要有五种:
• 强名称签名
• 代码混淆
• 代码隐藏
• 代码加密
• 代码本地化
• 添加水印
强名称签名
• 原理:这种方法,用通俗的话说就是对文件按照Microsoft的算法对文件进行Hash,然后将hash出来的数据(publickeytoken )写入文件。在运行或者对文件进行调用的时候,SDK会检查publickeytoken ,若不符合则抛出异常,退出。
• 弱点:反编译后将publickeytoken 部分去掉即可。
代码混淆
• 表面混淆(layout)
把类或者变量的名字修改成晦涩的长名字、特别简单的单个字母或者不可显示的字符来实现
• 控制混淆(control)
<行号> br.s <行号+2>
<行号+1> break
<行号+2> …………
• 数据混淆(data)
对于字符串进行加密,在运行的时候再进行解密还原,从而增加破解的难度
弱点:无法隐藏调用的系统的函数
代码隐藏
.NET的程序集包括代码文件和资源文件两部分,此方案就是将代码文件的核心部分作为资源文件隐藏。运行时核心程序集不会在硬盘上留下任何痕迹,它只在内存中解密并被加载
弱点:内存有完整的代码,利用软件可以将内存dump出来,得到完整的代码
代码加密
• 原理:改变MSIL和JIT的通信,根据底层的需要来解密代码
• 优点:破解的难度大,较安全,内存无完整代码
• 缺点:编程的难度大,若利用专门的加密软件,则会加大系统的开发成本
代码本地化 及添加水印
• 代码本地化
将代码完全编译成本机代码,同win32下的应用程序一样,完全失去了.NET的优越性。
• 添加水印
简单的说,就是让特定的字符串以图片的形式,绘制在程序的界面上,用来提示软件是否注册,这种保护方法,关键的地方就是对图片绘制条件的判断,如果仅仅是用true 或者false 来判断,就形同虚设了。
• 强名称签名
• 代码混淆
• 代码隐藏
• 代码加密
• 代码本地化
• 添加水印
强名称签名
• 原理:这种方法,用通俗的话说就是对文件按照Microsoft的算法对文件进行Hash,然后将hash出来的数据(publickeytoken )写入文件。在运行或者对文件进行调用的时候,SDK会检查publickeytoken ,若不符合则抛出异常,退出。
• 弱点:反编译后将publickeytoken 部分去掉即可。
代码混淆
• 表面混淆(layout)
把类或者变量的名字修改成晦涩的长名字、特别简单的单个字母或者不可显示的字符来实现
• 控制混淆(control)
<行号> br.s <行号+2>
<行号+1> break
<行号+2> …………
• 数据混淆(data)
对于字符串进行加密,在运行的时候再进行解密还原,从而增加破解的难度
弱点:无法隐藏调用的系统的函数
代码隐藏
.NET的程序集包括代码文件和资源文件两部分,此方案就是将代码文件的核心部分作为资源文件隐藏。运行时核心程序集不会在硬盘上留下任何痕迹,它只在内存中解密并被加载
弱点:内存有完整的代码,利用软件可以将内存dump出来,得到完整的代码
代码加密
• 原理:改变MSIL和JIT的通信,根据底层的需要来解密代码
• 优点:破解的难度大,较安全,内存无完整代码
• 缺点:编程的难度大,若利用专门的加密软件,则会加大系统的开发成本
代码本地化 及添加水印
• 代码本地化
将代码完全编译成本机代码,同win32下的应用程序一样,完全失去了.NET的优越性。
• 添加水印
简单的说,就是让特定的字符串以图片的形式,绘制在程序的界面上,用来提示软件是否注册,这种保护方法,关键的地方就是对图片绘制条件的判断,如果仅仅是用true 或者false 来判断,就形同虚设了。
相关文章推荐
- 目前代码保护的主要方法
- ASP.NET前台代码绑定后台变量方法总结--收藏帖
- Android中使用代码截图的各种方法总结
- 编写高质量OC代码52建议总结:13.用“方法调配技术”调试“黑盒方法”
- handler looper代码总结(原创)精品推荐
- CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)
- 寻找两个值中更大值的方法总结c++代码
- 寻找两个值中更大值的方法总结c++代码
- java代码重构方法总结
- ASP.NET前台代码绑定后台变量方法总结
- asp下用实现模板加载的的几种方法总结 原创
- 搜索引擎查询层的主要检索质量优化的方法,在参加完google的互联网大会后的总结
- Android中使用代码截图的各种方法总结
- JQuery 各种选择方法代码总结
- 目前比较全的CSS重设(reset)方法总结
- XML解析方法总结(无代码)
- 【转】ASP.NET前台代码绑定后台变量方法总结
- ASP.NET前台代码绑定后台变量方法总结
- 【原创】Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- 编写高效Lua代码的方法 - 总结