问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何对编译的dll文件进行加密来防止反编译?

发布网友 发布时间:2022-04-23 18:42

我来回答

4个回答

懂视网 时间:2022-05-19 17:18

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

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

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

然后新建立类库ClassLibrary1,里面只有个类文件Class1.cs,代码如下:
代码如下:
using System;
namespace ClassLibrary1
{
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
 
public string Insert()
{
return "ok";
}
}
}

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()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
 
public string Insert()
{
return "ok";
}
}
}

然后再编译后运行windowapplication调用class1中的方法就会出错。

这里的StrongNameIdentityPermissionAttribute是NET提供的CAS(Code Access Security)中的1个类,具体可参考MSDN,SecurityAction.LinkDemand 是要求直接调用方已被授予了指定的权限,这里即windowapplication要授予了权限才行,如果使用SecurityAction.Demand要求调用堆栈中的所有高级调用方都已被授予了当前权限对象所指定的权限。他们的区别是:如果windowapplication已授权访问,而还有个windowapplication2(未授权访问)通过调用windowapplication中的button1_Click方法来调用class1,这个时候如果使用SecurityAction.LinkDemand就能成功调用,而使用SecurityAction.Demand windowapplication2就不能调用,windowapplication 在这2种情况下都能调用。

说到这里大家一定再问PublicKey=后面一串那么长的字符串怎么来。PublicKey后面的字符串是你开始生成的c: est.snk文件中保存的公钥。那怎么才能看到这个公钥了,照样是用SN.EXE。

输入sn -p c: est.snk c:publicKey.snk (从 test.snk 中提取公钥并将其存储在 publicKey.snk 中)

再输入sn -tp c:publicKey.snk (显示公钥信息)
上面这个命令就能看到PublicKey后面的字符串了,还想什么啊,把那字符串copy下来啊。

最后大家一定在关心这个时候windowapplication 要怎么调用class1了,其实也简单,只要把windowapplication 的AssemblyInfo.cs修改为:
[assembly: AssemblyKeyFile("c:\test.snk")]

到这里就一切OK了,大家都看到最关键的就是test.snk文件了,所以一定要保护好你自己的test.snk文件。

热心网友 时间:2022-05-19 14:26

使用过.NET的程序员都知道,.NET是一个巨大的跨时代进步,它开发效率高、功能强、界面美观、耐用、新的语言C#已经提交为行业规范、CLR共公运行库资源丰富,这所有的特点标志着它成为主流编程语言是必然的。
可是他也有一个缺点,那就是编译好的程序集可以完全被反编译成源代码,这给一些不法份子提供了很好的机会,试想想,您辛苦的劳动成果就这样轻易的给别人利用,是多么不公平的事阿?所以如何保护我们的知识产权成了一个大问题。
MAXTOCODE 已经完全超越了传统的混淆手段来保护源代码的方式,他将完全加密您的代码,使您的代码完全没有办法反编译。保护强度已经不是混淆器可以与之抗衡,是目前保护强度最大,最完美的.NET产品保护方案。
MAXTOCODE 是 Aiasted.SOFT 完全自主开发的一款 .NET 代码保护工具。它是目前世界上高强度保护工具之一。
第一种代码保护方案是混淆,这是一个不错的方案,可惜强度还是无法保证,如果要做一个大的逆向工程有一定困难,但针对某个算法或功能进行解读还是很容易的。反观混淆原理则发现,混淆其实只是一个与障眼法差不多的技术。第二种就是MAXTOCODE的保护技术了,MAXOTCODE 采用了难以理解的机器语言来加密您的.NET程序集,(特别注意:MAXTOCODE的强度建立在加密算法之上,而不上简单的混淆。)在程序集运行时运态解放源代码,所以在原理上已经比混淆强度提高了许多。我们保护您所有的代码,不让不法份子看到您任何一个有效的代码,使不法份子完全无法被反编译。

热心网友 时间:2022-05-19 15:44

为防止这类反向工程的威胁,最有效的办法是模糊。
模糊工具运用各种手段达到这一目标,但主要的途径是让变量名字不再具有指示其作用的能力、加密字符串和文字、插入各种欺骗指令使反编译得到的代码不可再编译。
例子:
对未经模糊处理的代码执行反向工程:
Private Sub CalcPayroll(ByVal employeeGroup As SpecialList)
While employeeGroup.HasMore
employee = employeeGroup.GetNext(True)
employee.updateSalary
DistributeCheck(employee)
End While
End Sub

同样的代码,经过模糊处理再执行反向工程:
Private Sub a(ByVal b As a)
While b.a
a = b.a(True)
a.a
a(a)
End While
End Sub

显然,两段代码的处理逻辑相同。但是,要说清楚第二段代码到底在做些什么极其困难,甚至要判断它正在访问哪些方法、哪些变量也很困难。
  这种改变变量名称的功能是可配置的,例如,假设正在构造一个DLL,可以要求不改动API,有趣的是,这一处理过程显然只是简单地把大量变量的名称简缩成单个字符,但获得了非常好的模糊效果。

热心网友 时间:2022-05-19 17:18

使用WinRAR压缩,顺便加一个16位的密码,然后把压缩得到的文件再压缩一次,设置20位的密码,反复几次,让别人花上个几年破解去吧
如何对编译的dll文件进行加密来防止反编译?

第二种就是MAXTOCODE的保护技术了,MAXOTCODE 采用了难以理解的机器语言来加密您的.NET程序集,(特别注意:MAXTOCODE的强度建立在加密算法之上,而不上简单的混淆。)在程序集运行时运态解放源代码,所以在原理上已经比混淆强度提高了许多。我们保护您所有的代码,不让不法份子看到您任何一个有效的代码,...

C#编写的DLL如何加密?

c# dll 加密最快的方法使用加壳工具Virbox Protector,直接加密,Virbox Protectorke可以对dll进行性能分析,分析每个函数的调用次数,对每个函数选择保护方式如:混淆/虚拟化/碎片化/代码加密等;每种加密方法的特点是什么呢?代码加密(X86):针对X86汇编代码:一种代码自修改技术(SMC)保护代码。把当前代...

如何对一个lib静态库保护起来不被反编译?

回答:这个太麻烦了吧,除非他反编译成汇编,读懂全部汇编语言,然后用c去实现。逆向工程量太大。我们做一般是加花指令,迷宫函数来混淆代码。

C# DLL如何保护防止被破解

所以要想不被破解,一是不能被反编译看到源码,二是不能被随意调用。什么混淆加壳加密等,都是可逆的。鉴于.net代码可以包含非托管代码,我们可以用C++解析C#代码生成DLL,这个DLL在被调用时验证调用者信息,就可以解决针对C#的破解,以及非授权调用了。参考链接:http://blog.csdn.net/qwsf01115/articl...

C#如何防止被别人反编译

方法一:防止 Ildasm.exe(MSIL 反汇编程序) 反汇编程序集 方法很简单在项目文件AssemblyInfo.cs中增加SuppressIldasm属性。当项目中增加SuppressIldasm属性后在使用ildasm.exe反编译代码,会提示:"受保护的模块 -- 无法进行反汇编"ildasm.exe 读取项目中包含 SuppressIldasm 属性就不对此程序集进行反编译。但...

如何防止Unity3D代码被反编译

根本的解决办法是:先对DLL加密,然后在Unity的源码中加载程序DLL之前进行解密。这就需要通过逆向工程获得相应的Unity源码或者是直接向Unity购买Source Code License。

如何防止程序员反编译?

在编译代码时(如使用ant或maven),使用插件将代码进行加密(加密方式自己选),将class文件里面的内容读取成byte[],然后进行加密后再写回到class文件(这时候class文件里面的内容不是标准的class,无法被反编译了) 在启动项目代码时,指定使用我们自定义的ClassLoader就行了,而自定义的部分,主要就是在这里做解密工作! 如此...

如何让C++写的dll不被反编译?

1、以当前的技术来说,理论上,所有的程序都存在被反编译的可能。2、但是反编译出来的代码并不一定能被技术不高的人看懂,因为反编译出来的“源代码”与编写者写出的原代码在80%以上是不同的。这是因为反编译的原理是根据机器码(或中间码),让机算机进行反向生成高级语言,而不是找出编写者原有的...

dll如何防止反编译

1 将你要破解的DLL文件放在C盘 2 执行 开始》所以程序》Microsoft Windows SDK v6.0A》tools》IL 反汇编程序 3 找到放在C盘的DLL文件 4 然后 文件》转储》确定位置并确认 5 好了 看看C盘是否多了 两个文件 xxx.il xxx.res 6 修改 xxx.il 文件内的代码 7 修改完成后将xxx.il和 xxx.res 把...

asp.net的这种dll文件是通过什么加密的啊?

可以通过软件来加密 推荐用文件夹加密超级大师,安全易用的文件夹加密软件。支持所有windows系统。可以加密文件夹,加密文件,加密磁盘,安全易用。加密后的资料防删除,复制。下载文件夹加密超级大师。安装后,在需要加密的文件夹上单击右键选择加密。然后设置密码就OK了。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
针对孩子,家长的需求,能开发孩子的智力。要投资什么项目能赚钱_百度知 ... ...有好几个故事,现在只记得《纸飞机》,《七号凶楼》,《凶婴》,求书名... 中考成绩400分能上普通高中吗? cad绘图哪个版本好 怎样使用AutoCAD ZBBZ坐标插件呢? 138个AutoCAD最新绘图插件,绘图效率提升80%,内附详细使用教程 我喜欢在QQ浏览器上面的QQ空间里登录我前任的账号密码!登过很多次了... 宝宝吐不拉稀是肠炎吗 小孩腹痛呕吐无腹泻能否自愈 ...今年供暖半月发现一路地暖管漏水、漏到楼下住户、需要破坏柜和地板砖... 如何加密解密DLL文件 夜钓灯哪个牌子好 十大品牌是什么? 什么是夜钓灯,钓鱼灯? 晚上钓鱼最好用什么颜色的灯光? 顶点夜钓灯H5s和H8s那个好 夜钓是钓鱼灯好还是激光炮好 夜钓鲫鱼为什么要用氙气灯 夜钓选用什么颜色灯光 夜钓用什么灯光好 晚上垂钓为何要用蓝光灯: 晚上钓鱼用蓝灯好,还是用白色的灯好? 夜间钓鲤鱼灯什么样的好? 晚上钓鱼夜钓灯如何选择? 夜钓灯什么牌子好 夜钓用紫光灯好还是蓝光灯好 夜钓灯哪个牌子好? 夜钓用什么样的灯好? Normal.dotm是什么文件? “dotx格式为启用宏的模板格式,而dotm格式无法启用宏” 改成对的句子是什么? 模板是一种特殊的word文档,它的后缀名是什么? DLL文件能加密吗 如何将DLL格式的文件进行加密 怎样加密dll文件 有没有DLL应用程序加密授权工具,一机一码的防止被人复制软件, 新手请教加密的DLL文件怎么解密 油漆沾上了,用什么洗的干净? dll文件求大神破,.dll加密的文件。 有加密狗的安装dll文件,怎么安装加密狗 用.NET做了一个dll文件,我想对dll文件加密(不能让该文件被反编译成代码... vb.net如何写DLL来加密ASP,解决即追100分 油漆弄衣服上用什么可以洗掉 C#.net dll文件如何混淆或者加密。在网上找了很久,没有合适的工具。混淆... 如何判断一个DLL的加密方式 c# .dll文件加密问题! 请问VBA的代码用VB封装成DLL文件,如何对该文件进行加密保护呢? 如何运用dll对ex4文件加密 易语言DLL防止别人调用易语言DLL 怎么才可以把自己做的DLL 只有自己可以用 比如,需要在调用的时候提交相关 php如何利用组件加密,就是第三方dll加密 win10ie浏览器无响应怎么回事 win10中 ie浏览器不能用怎么办
  • 焦点

最新推荐

猜你喜欢

热门推荐