常用软件 > 正文

引起代码混淆加密后出错的一些项

亮术网 2013-11-30 本网原创

  代码混淆软件一般是对代码中的方法名称、变量、字符串、控件等进行混淆加密。为了软件源码安全,我们都希望对尽可能多的变量、方法名称等加密,但对一些变量、字符串等加密后,却会引发代码运行错误,所以还要适当选择。

  代码混淆软件也有很多款,以下将探讨使用 Xenocode Postbuild 2010 for .NET 混淆什么变量、字符串、控件后,会引发代码错误。

 

  1、混淆循环中的变量、字符,代码执行效率会明显下降

  这只会出现在循环次数很多的情况,例如循环几十万、几百万次,循环几百次、甚至几千次可忽略不计。本人开发过一款软件,循环次数约130万次,在未混淆加密之前,执行完所有任务只需要26秒;加密之后,执行完所有任务却翻倍,52秒以上;后来把循环中的所有变量和字符串都不加密,效率才恢复原来的水平。

 

  2、写代码方式引发混淆错误

  在软件中打开网页时,如果按如下方式写代码:

  System.Diagnostics.Process.Start("网址");

 

  用 Xenocode Postbuild 2010 for .NET 混淆加密后无法打开网页,提示代码出错,如果把它改为:

  using System.Diagnostics;

  Process.Start("网址");

  混淆后不会出错,能正常打开网页。

 

 

  3、控件名混淆后引发代码出错

  1)混淆 Listview 控件名称后,Listview 的鼠标响应事件失效

  未混淆加密之前,鼠标移到 Listview 每项的文本上,都会自动响应 SelectIndexChangeed 事件;但使用 Xenocode Postbuild 2010 for .NET 混淆 Listview 控件名称后,就不能再响应;后来加密字符串时,不勾选 Listview 名称,问题解决。

 

  2)混淆进度条控件 ProgressBar,进度条不显示

  没有混淆加密 ProgressBar 名称前,进条能正常反应代码执行进度;混淆后,进度条不显示了,加密字符串不勾选 ProgressBar 名称,进度条又回来了。

 

 

  4、重命名方法(函数)名称也会引起代码出错,即在 Xenocode Postbuild 2010 for .NET 的“工程”选项卡中勾选方法名称。

 

  除上面探讨的几点之外,可能还有其它混淆因素也会引发代码错误,因此,混淆加密好之后,一定要认真测试每一个功能,不要心存侥幸,否则就有可能有错误,发布后再改就麻烦了。

本文浓缩标签:代码Xenocode错误