如何保护.net中的dll文件(防破解、反编译)
如何保护.net中的dll文件(防破解、反编译)
百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游戏
.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行。中间语言很容易被反编译,所以研究下如何有效的保护dll文件。
我大致的方法为 :强签名+混淆+加密。
强签名
强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。
强签名很简单,本站另一文章已经详细进行了讲解,请参考:http://www.cn-web.com/shtml/article/net/fxsj/2009/06/16/913.shtml
注:未签名的主程序可以引用已签名或未签名的程序集;而已签名的主程序不能引用未签名的程序集。(上述文章有相应解决办法)
混淆
混淆就是对编译生成的MSIL中间代码进行模糊处理,最简单的混淆是名称混淆,即将 命名空间名、类名、方法名、字段名等统统换成特殊符号或其它符号,目的就是让人看到晕为止,但是并不改变程序执行逻辑。
我这里使用的Dotfuscator进行混淆。
Dotfuscator混淆方法:
1.创建新工程;
2.选择要混淆的dll、exe文件;
3.在属性里选择Library属性(很重要,因为我这里要混淆的是dll文件,如果不选中,混淆后将不能被正确调用!),如下图所示:
4.选择bulid标签,点击bulid按钮进行混淆。
我们也可以选择其它标签进行加密字符串、增加水印等操作,我这里加密工作用另外的方法,所以没有选择操作。
OK,混淆完成后,我们可以用Reflector.exe来反编译下混淆后的dll文件,可以对比源码看下效果。
加密
接下来我们继续对混淆过的dll文件进行加密处理,进一步保护dll文件。
我使用的加密工具是MaxtoCode。
打开软件后,切换到中文,可以看到非常简单,添加上dll文件后,直接点击执行加密就可以。其他选项比如:加密字符串、强名称等都很简单,大家一试就知道,而且MaxtoCode的帮助做的非常友好,一看就会使用。
加密后的dll文件比先前大了一倍,用Reflector.exe反编译后,发现dll文件加密的更彻底,因为主体函数内容都隐藏了。
通过以上三步,使您的dll文件可免于一般人的破解,当然,不可能绝对防止被破解。
如何保护.net中的dll文件(防破解、反编译)的更多相关文章
- C#中使用DLL文件
首先,我们需要在C++程序中导出DLL文件.我使用的是Visual Studio开发,把项目"属性"中的“配置类型”改为"动态库dll",然后添加如下导出代码: ...
- [转载]解析WINDOWS中的DLL文件---经典DLL解读
[转载]解析WINDOWS中的DLL文件---经典DLL解读 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! ...
- JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
一.前言 我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候:有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的ja ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- 在VC中创建DLL文件的方法步骤
一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型. (2)MyDll ...
- 关于vs2012解决方案中项目DLL文件引用问题
今天用vs2012建了项目框架,老是出现说解决方案中的项目dll文件不存在,但是我按照路径去找是可以找到这个文件的,也就是说这个文件存在的.我按照引用顺序单个编译每个项目都是成功的,就是当我编译整个解 ...
- C#中修改Dll文件 (反编译后重新编译)
Dll文件生成后,如没有源代码,又要修改其中内容 可以用微软自带的ildasm和ilasm程序 先用ildasm将dll文件反编译成il文件 ildasm Test.dll /out=Test.il ...
- 如何在 C#中添加 dll 文件
按住鼠标左键,按住dll文件 ,然后将其拖动到工具箱里面 ,就出现了如图所示的控件
- vs2010中添加dll文件
1.更改设置 1.1 project->properties->configuration properties->C/C++->General->Addtional ...
随机推荐
- 迅达云s3cmd客户端mac平台部署说明
自己根据文档整理了下,在这里记下,免得其他兄弟走弯路. 1 下载最新的s3cmd代码 https://github.com/s3tools/s3cmd/archive/master.zip 2 解压缩 ...
- 修改phpcms会员登录后头部登陆条的会员名称不带括号
phpcms会员登录后显示会员名称是带括号的,现在把他修改成不带括号. 找到函数库libs/functions/global.func.php,修改如下即可: function get_nicknam ...
- 为windows应用程序提供托盘图标
1>包含头文件 #include "Shellapi.h" 2>相关结构体和函数: NOTIFYICONDATA WINSHELLAPI BOOL ...
- 人类大脑只开发了10%? I don't think so.
既然程序执行时有些部分是彼此互斥的(在程序的一次执行中,执行了这部分就不会去执行另一部分),那么所谓的 人类大脑只开发了10%? 是不是其实只是程序互斥的一种体现. 而往往"智商" ...
- strlen(); strcpy(); strcat(); strcmp() ---笔记
指针小知识点: int a =10; int *p=&a; int *q=p; //p中保存的是a的地址 int *q=p; //将p的值赋给q 作用是让q也指向a ...
- 手机设备连接eclipse的问题
因为现在测试到的机型也没几台,很多都是直接能连接上eclipse,但是有些Android太“个性”所以遇到有一两台手机直接插上是不能连接到eclipse的:好了:解决问题把:首先我们需要知道连接的前提 ...
- ie的不同版本测试
ie的11.0.9600.17728版本支持在开发者工具栏中导航中edge按钮支持测试在不同ie版本下的显示情况如ie7,8,9但不支持ie6
- javax.servlet.http.HttpServlet was not found
我们遇到的错误显示如下: 我们右击有错误提示的文件夹,如下: 我们点击"配置构建路径",如下: 我们再点击"添加库",如下: 我们选中上图中标出 ...
- iis 7.5 0x80004005 静态文件 html、js、css 500错误
环境:iis 7.5 win7 64位 vs2012 问题:本地环境F5直接运行,没有任何问题,发布到IIS,静态文件不能访问,出现500错误,网上找了一堆解决办法,排除路径不正确,iis全部功能勾了 ...
- Java基础进阶整理
Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...