ASP.NET防止DLL被反编译

.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行。中间语言很容易被反编译,所以研究下如何有效的保护dll文件。
我大致的方法为 :强签名+混淆+加密。强签名
强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。
未签名的主程序可以引用已签名或未签名的程序集;而已签名的主程序不能引用未签名的程序集。(上述文章有相应解决办法)
混淆就是对编译生成的MSIL中间代码进行模糊处理,最简单的混淆是名称混淆,即将 命名空间名、类名、方法名、字段名等统统换成特殊符号或其它符号,目的就是让人看到晕为止,但是并不改变程序执行逻辑。
在属性里选择Library属性(很重要,因为我这里要混淆的是dll文件,如果不选中,混淆后将不能被正确调用!),

选择bulid标签,点击bulid按钮进行混淆。
我们也可以选择其它标签进行加密字符串、增加水印等操作,我这里加密工作用另外的方法,所以没有选择操作。
OK,混淆完成后,我们可以用Reflector.exe来反编译下混淆后的dll文件,可以对比源码看下效果

接下来我们继续对混淆过的dll文件进行加密处理,进一步保护dll文件。
我使用的加密工具是MaxtoCode。
打开软件后,切换到中文,可以看到非常简单,添加上dll文件后,直接点击执行加密就可以。其他选项比如:加密字符串、强名称等都很简单,大家一试就知道,而且MaxtoCode的帮助做的非常友好,一看就会使用。
加密后的dll文件比先前大了一倍,用Reflector.exe反编译后,发现dll文件加密的更彻底,因为主体函数内容都隐藏了。
通过以上三步,使您的dll文件可免于一般人的破解,当然,不可能绝对防止被破解。

不要每一次都“new Random()”,这多么浪费心情啊。应该在class层次声明

然后程序中直接使用Rnd这个变量来计算Next。

效果是一样的,new的时候创建了一个数组,每次从数组中选取一个,乘一个数得到某个范围内的“随机数”。仅此而已。至少也要写成
只是new Random()创建的数组是根据某个种子创建的不连续的数组,然后从这个数组中选取。

比如你要80以内的整数随即次序出现,这是“洗牌”,而不是产生随机数。

跑题了,题目是不同的随机数,Randome比较容易产生重复的随机数。不同的随机数我认为就是最小值到最大值之间的这些数洗牌后取指定个数。符合题目要求。这显然不是一个伪随机算法。
9楼给你的方法你测试过?返回的不符合要求?
我用楼主的代码,试了一下,生成的random数都不一样呀,怎么楼主说是一样的?
用时间做种子 一秒内生成这么多当然会差不多...
我觉得是我的电脑运算速度太快 出来的基本都是一样的
永远都不相同的随机数, 够你用了吧?
怎么同时产生N个不同的随机数呢?
就是这N个数还不能重复。。
我也有同样的问题。有一点点的区别
你看看你自己的代码,这些随机数的数量很大,而取值范围又很小,很容易就会造成重复。抽屉原理
老师让设计一个,但我从来没见过这个软件,不知道应该怎么设计,不知道应该实行什么功能
谁有类似的啊,拿来让我改一下
小弟之前一直都在搞C++,最近想往.net这方面转一下,因为C++开发和维护的成本确实高了点儿。
不过我之前一点都没接触过.net,是从0学起。
而我这个人又有个“毛病”,学什么东西都爱刨根问底,所以想先把.net框架运行的机制了解个大概,再开始学C#的语法以及应用。
发这个帖子就是想问一下过来的朋友们,什么书比较适合0基础的c#新手
来源: 足球直播



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值