Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16254711
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 14:20:13

下载本文示例代码

大家做项目开发一般都是分层的,比如UI层,业务层,数据访问层。业务层引用数据访问层的DLL(比如dataAccess.dll),并使用dataAccess.dll中的方法。当项目完成并给客户用了,可有些心里BT的客户这个时候也可以请个稍微懂NET的人来引用你的dataAccess.dll并调用其中的方法搞破坏。比如可以直接使用里面的ChangePwd(string UserName,string Pwd)方法把其他用户的密码改了,这个时候就你就.......

好了,该开始说怎么保护我们的代码了:

首先我们需要把我们的程序集做成强命名的程序集。

这里我们在.NET 命令提示中输入sn -k c:\test.snk 创建一个新的随机密钥对并将其存储在 c:\test.snk 中

然后新建立类库ClassLibrary1,里面只有个类文件Class1.cs,代码如下:

以下为引用的内容:
1using System;
2
3namespace ClassLibrary1
4{
5 public class Class1
6 {
7 public Class1()
8 {
9 //
10 // TODO: 在此处添加构造函数逻辑
11 //
12 }
13
14 public string Insert()
15 {
16 return "ok";
17 }
18 }
19}
20
AssemblyInfo.cs代码:
//............其他的就用默认

[assembly: AssemblyKeyFile("c:\\test.snk")] // 连接上面用强命名工具SN.exe生成的文件

接着创建个WindowApplication来调用我们的ClassLibrary1,代码:

以下为引用的内容:
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(new ClassLibrary1.Class1().Insert());
}不修改WindowApplication的AssemblyInfo.cs。

在这里就可以直接运行了,不过大家都看的出来,这样是能成功调用Class1中的方法的。

现在让我们来修改下Class1.cs,代码:

以下为引用的内容:

using System;
using System.Security.Permissions;


namespace ClassLibrary1
{
[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand, PublicKey =
"00240000048000009400000006020000002400005253413100040000010001000551684edd1600"
"8ccbdd337b1cf1490490d97fe0048c5f3629cc4f5104578499eace9b2a94115022edd620def472"
"8b4f088291cfa77a40659afba611fdafbb7894b93a64049d439936bd0cd8dc0704625aeb735892"
"e9eb3f910a49a2925af10515d935654d7adac5567ff6d780d23d587de0ff4d271da7b30680fa88"
"a47a4ba4")]
public class Class1
{
public Class1()
{
//

大家做项目开发一般都是分层的,比如UI层,业务层,数据访问层。业务层引用数据访问层的DLL(比如dataAccess.dll),并使用dataAccess.dll中的方法。当项目完成并给客户用了,可有些心里BT的客户这个时候也可以请个稍微懂NET的人来引用你的dataAccess.dll并调用其中的方法搞破坏。比如可以直接使用里面的ChangePwd(string UserName,string Pwd)方法把其他用户的密码改了,这个时候就你就.......

好了,该开始说怎么保护我们的代码了:

首先我们需要把我们的程序集做成强命名的程序集。

这里我们在.NET 命令提示中输入sn -k c:\test.snk 创建一个新的随机密钥对并将其存储在 c:\test.snk 中

然后新建立类库ClassLibrary1,里面只有个类文件Class1.cs,代码如下:

以下为引用的内容:
1using System;
2
3namespace ClassLibrary1
4{
5 public class Class1
6 {
7 public Class1()
8 {
9 //
10 // TODO: 在此处添加构造函数逻辑
11 //
12 }
13
14 public string Insert()
15 {
16 return "ok";
17 }
18 }
19}
20
AssemblyInfo.cs代码:
//............其他的就用默认

[assembly: AssemblyKeyFile("c:\\test.snk")] // 连接上面用强命名工具SN.exe生成的文件

接着创建个WindowApplication来调用我们的ClassLibrary1,代码:

以下为引用的内容:
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(new ClassLibrary1.Class1().Insert());
}不修改WindowApplication的AssemblyInfo.cs。

在这里就可以直接运行了,不过大家都看的出来,这样是能成功调用Class1中的方法的。

现在让我们来修改下Class1.cs,代码:

以下为引用的内容:

using System;
using System.Security.Permissions;


namespace ClassLibrary1
{
[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand, PublicKey =
"00240000048000009400000006020000002400005253413100040000010001000551684edd1600"
"8ccbdd337b1cf1490490d97fe0048c5f3629cc4f5104578499eace9b2a94115022edd620def472"
"8b4f088291cfa77a40659afba611fdafbb7894b93a64049d439936bd0cd8dc0704625aeb735892"
"e9eb3f910a49a2925af10515d935654d7adac5567ff6d780d23d587de0ff4d271da7b30680fa88"
"a47a4ba4")]
public class Class1
{
public Class1()
{
// 下载本文示例代码


保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用保护你封装的DLL文件和代码不被别人破解使用
阅读(1079) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~