DLL如何防止被调用?

liduoduo 2011-08-14 07:45:48
使用VC做了个DLL,想通过C#调用,由于C#通过反编译就很容易看到代码,那么DLL的函数及参数都暴露了,我现在想了一个
办法,在C#项目里生成一个项目的唯一序列号,这个序列号其他人是无法生成相同的,通过向DLL传送这个序列号参数,DLL判断这个参数是否有效,有效就可被调用。不知道是否可以?

现在问题是,C#是否能生成一个项目唯一的标识号?
...全文
595 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
crackdung 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 isjoe 的回复:]

引用楼主 ivanl 的回复:
使用VC做了个DLL,想通过C#调用,由于C#通过反编译就很容易看到代码,那么DLL的函数及参数都暴露了,我现在想了一个
办法,在C#项目里生成一个项目的唯一序列号,这个序列号其他人是无法生成相同的,通过向DLL传送这个序列号参数,DLL判断这个参数是否有效,有效就可被调用。不知道是否可以?

现在问题是,C#是否能生成一个项目唯一的标识号?


第……
[/Quote]

這個方法比傳統的dll更容易被破解
crackdung 2011-08-15
  • 打赏
  • 举报
回复
任何dll都會被破解,,,浪費時間
isjoe 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 ivanl 的回复:]
使用VC做了个DLL,想通过C#调用,由于C#通过反编译就很容易看到代码,那么DLL的函数及参数都暴露了,我现在想了一个
办法,在C#项目里生成一个项目的唯一序列号,这个序列号其他人是无法生成相同的,通过向DLL传送这个序列号参数,DLL判断这个参数是否有效,有效就可被调用。不知道是否可以?

现在问题是,C#是否能生成一个项目唯一的标识号?
[/Quote]

第一、你可以将调用VCDLL的C#程序进行混淆,网上有混淆器可以下载
第二、也可以将调用VCDLL的C#代码进行加密、加壳。
inttoint 2011-08-14
  • 打赏
  • 举报
回复
C#都破译了,自然生成规则也看见了
想不叫人用就加点特出的东西,而且要加在vc里面
比如在调用方法钱要验证,做一个全局函数,只有这个通过了才可以
什么,你的密码也被破译了,我没方法了
一休宗纯 2011-08-14
  • 打赏
  • 举报
回复
这样是不可能做到的。

你只能在被调用的DLL里检测当前运行环境,从而进行相应的处理来实现。

不可能做到让别人根本无法调用你的DLL。
liduoduo 2011-08-14
  • 打赏
  • 举报
回复
我意思是生成项目的唯一标识,不是唯一序列号。也就是通过我项目编译,才能调用这个DLL,其他程序就调用不了
一休宗纯 2011-08-14
  • 打赏
  • 举报
回复
你这个思路不对。
你可以生成一个序列号,但是,别人也可以获得你的序列号,用你相同的序列号来使用DLL。

在实际中,有一个办法就是与硬件绑定。如果序列号与硬件不匹配,就拒绝运行。

feixuyue 2011-08-14
  • 打赏
  • 举报
回复
我也不晓得,生成标示,guid

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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