求教,如何可以防止引用的DLL文件被替换.

386computer 2008-05-27 08:56:45
例:我在项目a中写了一个判断是否注册成功的类,并生成a.dll。在项目b中对a.dll进行引用,并通过a.dll中的方法判断是否注册成功后,再进行后继操作。

问题是:我再重新编写一个项目a,并包括供给项目b调用的判断方法,但该方法我只返回一个注册成功的值。并生成一个a.dll
而后手动的把该DLL文件,覆盖掉原先项目b中引用的a.dll,,结果,,就跳过了正常的判断。。。。。。


有什么好方法可以解决,,,,,大家帮忙。。。。
...全文
384 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnsky_hzbw 2008-05-29
  • 打赏
  • 举报
回复
嗯,又学了一招,程序破解!
allanli 2008-05-29
  • 打赏
  • 举报
回复
在今天的.NET下面是没有任何秘密的,取消这个念头吧,就算你采用强名签名,一样可以破解

而且太容易了,如果我破解你的程序的话,我根本不用去编写一个新的a.dll去替换原来的

而是直接修改你的程序,把调用a.dll的地方注释掉直接跳过就可以了,那用这么麻烦啊!

把注册代码写复杂一点,在程序中多个地方调用,再结合混淆器混淆一下代码也许更有效

但也不能杜绝你的程序被破解的,只是难度大一点而已
386computer 2008-05-29
  • 打赏
  • 举报
回复
但其它项目对有强名称程序集进行引用,应该怎么做。。?步骤是?最好给个详细点的例子
a523194491 2008-05-29
  • 打赏
  • 举报
回复
强名称工具 (Sn.exe)

sn -k outfile
生成一个新的密钥对并将其写入指定的文件。

在AssemblyInfo.cs文件中指定AssemblyKeyFile
[assembly: AssemblyKeyFile(outfile)]

这样只要你的签名文件不丢失,别人就没有办法生成一个跟你一样签名的DLL
a523194491 2008-05-28
  • 打赏
  • 举报
回复
强名称由以下几部分组成:程序集的标识(即它的简单文本名称),版本号和区域性信息(如果提供的话),以及公钥和数字签名。强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。Microsoft® Visual Studio .NET® 和在 .NET Framework SDK 中提供的其他开发工具能够将强名称分配给一个程序集。强名称相同的程序集应该是相同的。

通过签发具有强名称的程序集,您可以确保名称的全局唯一性。强名称还特别满足以下要求:

强名称依赖于唯一的密钥对来确保名称的唯一性。任何人都不会生成与您生成的相同的程序集名称,因为用一个私钥生成的程序集的名称与用其他私钥生成的程序集的名称不相同。
强名称保护程序集的版本沿袭。强名称可以确保没有人能够生成您的程序集的后续版本。用户可以确信,他们所加载的程序集的版本出自创建该版本(应用程序是用该版本生成的)的同一个发行者。
强名称提供可靠的完整性检查。通过 .NET Framework 安全检查后,即可确信程序集的内容在生成后未被更改过。但请注意,强名称中或强名称本身并不暗含信任级别,例如由数字签名和支持证书提供的信任。
在引用具有强名称的程序集时,您应该能够从中受益,例如版本控制和命名保护。如果此具有强名称的程序集以后引用了具有简单名称的程序集(后者没有这些好处),则您将失去使用具有强名称的程序集所带来的好处,并依旧会产生 DLL 冲突。因此,具有强名称的程序集只能引用其他具有强名称的程序集。

386computer 2008-05-28
  • 打赏
  • 举报
回复
具体如何使用,,??对强名称程序集进行引用,,的步骤是??我指的是bs结构的项目。。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧