All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
HTML 初学者指南(1)_[Html教程]
IIS中Sql,server数据库的安全问题_[SQL,Server教程]
ASP.NET中MD5和SHA1加密的几种方法_.net资料_编程技术
三个SQL视图查出所有SQL Server数据库字典_[SQL Server教程]
结合AJAX进行PHP开发之入门_php资料_编程技术
PHP入门需要掌握的几种功能代码_[PHP教程]
Asp.Net实例:根据IP获取当地天气预报的实现_[Asp.Net教程]
SQL Server中如何用通配符搜索TEXT栏_[SQL Server教程]
javascript+XML,操作_JavaScript技术_编程技术
visual c++中的画刷类CBrush使用实例
Reading number is top 10 pictures
A man's favorite things2
身材野火台灣美女2
人美胸美腿更美2
So beauty, will let you spray blood7
影评-疯子,我爱你
2012 national geographic daily picture2
Very beautiful interior decoration
什么叫国家
到底是谁撞谁呀?
八个盛产美女的国家1
Download software ranking
Tram sex maniac 2 (H) rar bag16
linux安装大全
功夫熊猫2(上集)
Boxer vs Yellow1
传奇私服架设教程
jdk1.6 for windows
VC++6.0简体中文版
The Bermuda triangle3
linux高级编程
天龙八部最新服务端
aaa published in(发表于) 2013/12/15 8:53:54 Edit(编辑)
浅谈,DotNet,保护中字符串加密的技术_.net资料_编程技术

浅谈,DotNet,保护中字符串加密的技术_.net资料_编程技术

浅谈 DotNet 保护中字符串加密的技术_.net资料_编程技术-你的首页-uuhomepage.com

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

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

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

先看第一类,加密实现大致如下。

加密前:






MessageBox.Show("Hellow World!");

加密后:






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

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

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

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

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

加密前:






ldstr "Hellow World!" 
call MessageBox.Show(string)

加密后:






ldstr "A34579dfbbeyu346563345/==" 
call string Helper.Decode(string)
call MessageBox.Show(string)

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

直接将






ldstr "A34579dfbbeyu346563345/==" 
call string Helper.Decode(string)

替换为






ldstr "Hellow World"

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

第二类字符串加密保护:

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

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

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





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.