总结:目前代码保护的主要方法(原创)

 

目前代码保护的方法主要有五种:
 •          强名称签名
          代码混淆

          代码隐藏

          代码加密

          代码本地化

          添加水印

强名称签名

          原理:这种方法,用通俗的话说就是对文件按照Microsoft的算法对文件进行Hash,然后将hash出来的数据(publickeytoken )写入文件。在运行或者对文件进行调用的时候,SDK会检查publickeytoken ,若不符合则抛出异常,退出。

 

          弱点:反编译后将publickeytoken 部分去掉即可。

代码混淆

          表面混淆(layout)

       把类或者变量的名字修改成晦涩的长名字、特别简单的单个字母或者不可显示的字符来实现

          控制混淆(control)

       <行号>   br.s       <行号+2>

       <行号+1>      break

       <行号+2>      …………

          数据混淆(data)

       对于字符串进行加密,在运行的时候再进行解密还原,从而增加破解的难度

弱点:无法隐藏调用的系统的函数

代码隐藏

.NET的程序集包括代码文件和资源文件两部分,此方案就是将代码文件的核心部分作为资源文件隐藏。运行时核心程序集不会在硬盘上留下任何痕迹,它只在内存中解密并被加载

 

弱点:内存有完整的代码,利用软件可以将内存dump出来,得到完整的代码

代码加密

          原理:改变MSILJIT的通信,根据底层的需要来解密代码

          优点:破解的难度大,较安全,内存无完整代码

          缺点:编程的难度大,若利用专门的加密软件,则会加大系统的开发成本

代码本地化 及添加水印

          代码本地化

         将代码完全编译成本机代码,同win32下的应用程序一样,完全失去了.NET的优越性。

          添加水印

          简单的说,就是让特定的字符串以图片的形式,绘制在程序的界面上,用来提示软件是否注册,这种保护方法,关键的地方就是对图片绘制条件的判断,如果仅仅是用true 或者false 来判断,就形同虚设了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值