免费杀毒软件,全面病毒解决方案

投递文章  投稿指南 金山毒霸非官方通告:
搜索: 您的位置毒霸首页>安全防护>系统安全>阅读资讯:浅谈DotNet保护中字符串加密技术

浅谈DotNet保护中字符串加密技术

2008-06-17 08:12:28   来源:   作者:wz   【 评论:0

学习过了名称混淆,最近又看了一些字符串加密方面的东西。在混淆保护和加密壳中都有字符串加密保护功能。

反钓鱼

总体上字符串加密可以分为两类, 第一类是混淆保护中的字符串加密技术。主要特征是修改代码执行路径。大部分混淆保护工具的字符串加密都是这一类。 http://down.saodu.com

第二类就是加密壳中的字符串加密技术。这种不用修改IL代码,直接对元数据中的字符串加密。这一类以remotesoft,maxtocode为代表。

反木马

先看第一类,加密实现大致如下。 http://zhisao.saodu.com

加密前:

反流氓软件

MessageBox.Show("Hellow World!"); 扫毒

加密后: 反病毒

MessageBox.Show(Helper.Decode("A34579dfbbeyu346563345/==")); 杀毒

简单的说就是将原来使用字符串的地方,将直接使用字符串改为间接使用字符串。在这里保护软件将字符串 "Hellow World!" 进行加密 得到结果 "A34579dfbbeyu346563345/=="。 Helper.Decode 是保护软件提供的一个解密函数,它实现将 "A34579dfbbeyu346563345/==" 还原为 "Hellow World!" 。

http://down.saodu.com

因为是混淆保护,所以我们可以分析得到 Decode 的代码。然后直接用这个函数的代码写一个小工具将程序集中所有加密的字符串都还原。生成一个字符串对应表。以方便代码阅读和调试。

http://down.saodu.com

如果再深入,可以实现自动将字符串还原到原程序集中。 反流氓软件

再来看上面例子的IL代码。 扫毒

加密前:

反垃圾邮件

ldstr "Hellow World!"

反垃圾邮件

call MessageBox.Show(string) 反钓鱼

加密后: 反垃圾邮件

ldstr "A34579dfbbeyu346563345/=="

专杀工具下载

call string Helper.Decode(string) 扫毒网

call MessageBox.Show(string) 杀毒软件下载

怎么还原,其实很简单,我们已经知道了decode的代码,而且已经能实现字符串的解密了。得到了字符串的对应表。

反木马

直接将

http://zhisao.saodu.com

ldstr "A34579dfbbeyu346563345/=="

反病毒

call string Helper.Decode(string)

杀毒

替换为 反垃圾邮件

ldstr "Hellow World"

扫毒网

即可。写一个小工具使用正则表达式搜索替换就可以了。

反垃圾邮件

第二类字符串加密保护:

http://down.saodu.com

实现就是直接对元数据中的String流进行加密。

杀毒软件下载

这类保护有一个缺陷,程序运行后 元数据中的String流会解密后在内存中完整还原。在我前面的文章里面有介绍元数据的dump。这里就不重复罗嗦了。 http://down.saodu.com

对于第一类字符串加密保护,还有其它的形式,如 Helper.Decode这个函数可以是一个native的函数。或者是和流程混淆结合。

http://www.saodu.com




Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部 -