程序集防篡改,进行程序集签名的问题

问题描述

对于.Net的客户端程序,总是那么不保险,想用程序集签名的方式防止客户端程序集被篡改。可是按照网上的步骤,先用公钥进行签名,为了项目可运行、可调试,勾选了延迟签名的选项,并通过命令sn-Vrxxx.dll将xxx.dll加入到信任列表内,最后发布的时候,再用私钥对发布的dll进行再次签名。但我觉得这一系列步骤好像不是那么科学。还是我的方法有误?!过程如下:在开发机内,将程序进行私钥签名后发布到虚拟机内。在虚拟机(有VisualStudio环境)里试了一下,将已通过私钥签名的程序放到虚拟机里,一切正常;然后用一个xxx.dll(经公钥签名,但无私钥签名),去替换xxx.dll(经私钥签名),程序运行异常,说明起到了防篡改的目的。但是,当我打开vs的命令行工具,一样通过sn-Vrxxx.dll,让程序运行时不去验证xxx.dll,这时候程序居然正常运行了,也就是说即使程序集已经经过私钥签名了,但是任然可以通过sn-Vr命令绕过签名验证。那这么一来,这个所谓通过签名防篡改不是成为一个摆设么?只要一个命令,就能击破,防篡改何从说起?

解决方案

本帖最后由 csz_1987 于 2015-02-12 09:17:28 编辑
解决方案二:
看来真的是鸡肋一个。上图来至MSDN。
解决方案三:
引用1楼csz_1987的回复:

看来真的是鸡肋一个。上图来至MSDN。

https://msdn.microsoft.com/zh-cn/library/t07a3dye(VS.80).aspx
解决方案四:
当你没有源码的时候怎么去篡改呢?
解决方案五:
防什么篡改?防止别人直接修改exe里面的二进制数据??
解决方案六:
引用3楼FoxDave的回复:

当你没有源码的时候怎么去篡改呢?

比如一个登录的逻辑写在login.dll里面。可通过Reflector看到login.dll里的源码,Reflector可将源码导出为项目,在源码里做些手脚(比如登录成功后将用户名密码发送到某个邮箱)重新编译一份login.dll(篡改)覆盖掉原客户端程序集login.dll(原版),那么这时候用户登录成功后,用户名密码就被偷偷的发送到某个指定的邮箱里了。我原本想用程序集签名的方式来避免这种dll被偷梁换柱。
解决方案七:
引用5楼csz_1987的回复:

Quote: 引用3楼FoxDave的回复:
当你没有源码的时候怎么去篡改呢?

比如一个登录的逻辑写在login.dll里面。可通过Reflector看到login.dll里的源码,Reflector可将源码导出为项目,在源码里做些手脚(比如登录成功后将用户名密码发送到某个邮箱)重新编译一份login.dll(篡改)覆盖掉原客户端程序集login.dll(原版),那么这时候用户登录成功后,用户名密码就被偷偷的发送到某个指定的邮箱里了。我原本想用程序集签名的方式来避免这种dll被偷梁换柱。

呵呵,真正的产品你用reflector是看不到源码的,都混淆了
解决方案八:
引用5楼csz_1987的回复:

Quote: 引用3楼FoxDave的回复:
当你没有源码的时候怎么去篡改呢?

比如一个登录的逻辑写在login.dll里面。可通过Reflector看到login.dll里的源码,Reflector可将源码导出为项目,在源码里做些手脚(比如登录成功后将用户名密码发送到某个邮箱)重新编译一份login.dll(篡改)覆盖掉原客户端程序集login.dll(原版),那么这时候用户登录成功后,用户名密码就被偷偷的发送到某个指定的邮箱里了。我原本想用程序集签名的方式来避免这种dll被偷梁换柱。

用户应该自己保证使用的客户端是官方下载,而不是从哪个网站随便下载的,否则里面有木马,也怪不得别人了
解决方案九:
引用6楼FoxDave的回复:

Quote: 引用5楼csz_1987的回复:
Quote: 引用3楼FoxDave的回复:
当你没有源码的时候怎么去篡改呢?

比如一个登录的逻辑写在login.dll里面。可通过Reflector看到login.dll里的源码,Reflector可将源码导出为项目,在源码里做些手脚(比如登录成功后将用户名密码发送到某个邮箱)重新编译一份login.dll(篡改)覆盖掉原客户端程序集login.dll(原版),那么这时候用户登录成功后,用户名密码就被偷偷的发送到某个指定的邮箱里了。我原本想用程序集签名的方式来避免这种dll被偷梁换柱。

呵呵,真正的产品你用reflector是看不到源码的,都混淆了

混淆是混淆,混淆是另一回事。我就想问做了签名后,还是可以通过一行sn-Vr命令绕过签名这不是白搭么。
解决方案十:
而如果黑客都直接黑进客户机去修改客户端了那还用改客户端吗直接监控用户到底在文本框里输入了啥不就得了而且很可能用户自己记不住密码,而是把密码写在了桌面上某个txt文本里,直接看不就得了
解决方案十一:
引用7楼Z65443344的回复:

Quote: 引用5楼csz_1987的回复:
Quote: 引用3楼FoxDave的回复:
当你没有源码的时候怎么去篡改呢?

比如一个登录的逻辑写在login.dll里面。可通过Reflector看到login.dll里的源码,Reflector可将源码导出为项目,在源码里做些手脚(比如登录成功后将用户名密码发送到某个邮箱)重新编译一份login.dll(篡改)覆盖掉原客户端程序集login.dll(原版),那么这时候用户登录成功后,用户名密码就被偷偷的发送到某个指定的邮箱里了。我原本想用程序集签名的方式来避免这种dll被偷梁换柱。

用户应该自己保证使用的客户端是官方下载,而不是从哪个网站随便下载的,否则里面有木马,也怪不得别人了

程序集签名的目的不是就是为了防篡改么?一个sn命令就可以绕过他了?
解决方案十二:
如果黑客已经破解了你的dll那么他再稍微多费点劲,把你整个程序集破解了不行?
解决方案十三:
纠结这个没什么意义我觉得
解决方案十四:
我觉得这就像一个卖烤地瓜的,每天回家都把地瓜放到保险柜里然后还纠结保险柜也可能会被撬开
解决方案十五:
世界上没有撬不开的锁只不过是撬锁需要花费的代价和里面的东西的价值相比,值得不值得的问题
其他方案:
引用13楼Z65443344的回复:

我觉得这就像一个卖烤地瓜的,每天回家都把地瓜放到保险柜里然后还纠结保险柜也可能会被撬开

哎,话是这么说。我就想知道是不是一个sn命令就绕开了,还是你们有更好的方法。结果你们扯东扯西的,我问签名是否有办法不被绕开,一个回答我混淆;一个回答我黑客地瓜云云。你们直接回答我无解不就行了,或者告诉我这条路走下去就是这个结果就行了。我当然知道没有最强的矛也没有最强的盾。你们歪楼的功夫正式够可以的。还是谢谢你们。
其他方案:
引用15楼csz_1987的回复:

Quote: 引用13楼Z65443344的回复:
我觉得这就像一个卖烤地瓜的,每天回家都把地瓜放到保险柜里然后还纠结保险柜也可能会被撬开

哎,话是这么说。我就想知道是不是一个sn命令就绕开了,还是你们有更好的方法。结果你们扯东扯西的,我问签名是否有办法不被绕开,一个回答我混淆;一个回答我黑客地瓜云云。你们直接回答我无解不就行了,或者告诉我这条路走下去就是这个结果就行了。我当然知道没有最强的矛也没有最强的盾。你们歪楼的功夫正式够可以的。还是谢谢你们。

你这话很有点道理,不知道不丢人.做技术谁敢说什么都精通.
其他方案:
一个sn命令就绕开了,是在你的dll已经被破解了的前提下既然dll已经被破解了,里程序集整个被破解还远吗所以纠结这个没啥意义贼已经进了家了,再纠结里面的门不是防盗的,已经晚了
其他方案:
再说sn命令是需要在vs的命令行工具里执行的小偷为了改别人电脑上的客户端程序,还得先给客户机安装个VS?
其他方案:
可以说强命名的功能一个是程序集版本标识的一部分,另一个是代表了发行方的身份。你也看msdn了,还有个有句话:"Donotrelyonstrongnamesforsecurity.Theyprovideauniqueidentityonly."。防篡改必须主动检查,大部分混淆工具都提供防篡改功能,不过其实意义不大。如果像你5楼说的那种情况,就算你避免了软件被篡改,也无法避免被重新打包发布,添加木马。那一样能够窃取用户信息。防止菜鸟reflector看代码,简单的混淆下就可以了。
其他方案:
可通过Reflector看到login.dll里的源码,Reflector可将源码导出为项目,在源码里做些手脚所以就不让别人看源码呗......就好像密道不是要弄几个防盗门啊大铁锁啊,先要想办法不让人发现才叫密道嘛
其他方案:
程序集签名本质上并不是用来防破解的,而是防止C++中的DllHell现象.如果你想防止破解,就用加密狗吧.
其他方案:
如果dll是经过签名然后被引用,那么这个dll如果被修改,但没有经过同一个key签名,是会引用出错的,这就是防篡改

时间: 2024-09-22 02:27:20

程序集防篡改,进行程序集签名的问题的相关文章

网站部署WEB应用防火墙防篡改的重要性

目前,利用网上随处可见的攻击软件,攻击者不需要对网络协议的深厚理解基础,即可完成诸如更换Web网站主页,盗取管理员密码,数据库注入和破坏整个网站数据等等攻击.而这些攻击过程中产生的网络层数据,和正常数据没有什么区别. 以下是国家计算机网络应急技术处理协调中心(CNCERT/CC)统计的2008年上半年我国国内网站被黑被篡改的统计图,在1月-7月内仅发现的被篡改的网站就多达41,000多个,平均每天就有近200个网站被篡改,这真是一个惊人的数字. 下图是某网站从2003-2007的被篡改网站的历史

教你使用防篡改和WAF保护网站安全

前几天也给大家说过WEB应用防火墙,包括软件的和硬件的,今天网路游侠再给大家推荐个产品,当然这个是二合一的,就是:网页防篡改+WEB应用防火墙.比较有特色,好了,废话不说,正文开始: 安装就跳过了,相信对本文感兴趣的人都可以按照说明书配置.下面只说一些功能. 产品本身有配置向导,可以让一个新手也可以在1分钟之内轻松的完成网站的默认防护,当然如果要求比较高,可以定制策略,下图就是对网站文件进行防护的一个设置: 可以看到,可以对文件操作权限进行设置,包括读取.写入.改名.删除等,禁止删除.改名.写入

Linux Sys Monitor系统运维监控器防篡改简介

黑客可能因为一些目的,而攻击您的服务器.常见的比如政府的官方网站首页被篡改. 不常见的比如维基解密创始人朱利安·阿桑奇曾入侵美国国防部等政府机构的网站,控制其两年之久才被发现. 黑客一般入侵之后会修改您的系统文件,为自己留下后门.下次不用再输入密码就能够登录. 比如登录程序:/bin/login文件. 或者修改/bin/ps文件,隐藏自己的木马进程. 为了发现这些系统文件是不是被篡改了,或者您的网站文件是不是被篡改了. 您就需要借助工具来发现它们. 通过此防篡改功能,可以快速的发现并还原它们.

烽火18台系列之九-防篡改“魔力三角”

今天借着烽火台系列写一篇关于网页防篡改的文章,因为小编平日里与客户交流发现,目前网页的篡改问题仍然是客户最为头疼的网络安全问题之一.而提到"防篡改",大多数人第一时间想到的是"防篡改系统".而小编要说的是: "防篡改系统"≠"防篡改" 防篡改系统的前世今生防篡改系统发展至今共经历了四代技术(每代技术各家叫法不同,但原理基本相同),而这四代技术在不同的年代都解决了一定的问题,但同时也因为暴露的缺陷而不断更迭. 第一代技术:时间轮

Chrome 加入防篡改系统,可抵御量子计算机攻击

不知道大家是否了解谷歌Chrome浏览器的金丝雀(Canary)版本,(目前仍是测试版)给用户提供了一个实验级别的特性--防篡改系统,它能保护用户加密传输的数据,抵御来自量子计算机的攻击. 量子计算机可解密Web加密流量 在过去的十年里,IBM.英特尔和微软等公司,一直致力于开发一个功能强大而全面的量子计算机,以便能够处理大规模的数据. 量子计算机,顾名思义,它的力量是以量子位或者量子比特来计量的.虽然目前我们只能处理少量的量子位,但是在不久的将来,这些量子计算机足够攻克用于保护HTTPS和TL

天融信深度解析:第三代网页防篡改技术

现在,互联网已经成为信息交流.传播和存储的重要手段,网站也成为政府职能部门的重要宣传手段,在树立政府形象.宣传新政策和引导舆论等方面发挥着重要的作用.随着网络信息量增长速度的加快,网站对我们生活的影响也逐渐加大,对网站信息的安全保护也就相当重要,但也更加困难.目前互联网是一个开放性的网络,网页信息都可以在一定时间内进行查询.下载.阅读或者转载.由于网站信息复制比较容易,使用比较广泛,如果网站信息被恶意篡改并大肆传播,将会严重影响政府.公众和企业的形象.可能会造成重大的经济损失以及比较恶劣的社会影

烟草网站如何实现防攻击、防病毒、防篡改

网站,作为企业网络公众形象的载体,承担了企业形象宣传的重任.在我国,烟草施行的是国家专卖制度,既关注行业行政管理,又关注企业的生产运营,烟草网站既担负着政策信息发布.政府信息公开的职责,又兼有面对烟草企业.消费者等进行信息交互的职责. 有鉴于此,2009年,国家烟草局下发<国家烟草专卖局办公室关于行业信息安全工作有关情况的通知>.该通知明确提出:"加强网站'三防'建设,提高重要信息系统安全防护能力,各单位要按照国务院办公厅文件要求,重点做好行业对外网站网页防攻击.防病毒.防篡改的安全

Silverlight中无法设置卫星程序集为中立资源程序集

  熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序集.因此显式指定一个中立资源程序集很重要. 在每个工程的Properties文件夹下都有一个AssemblyInfo.cs文件,打开此文件,添加以下代码: [assembly: NeutralResourcesLanguageAttribute("en", UltimateResour

防火防盗防篡改,驱动人生6帮您抵制恶意软件

当电脑里被误装了恶意软件,这些恶意软件会在用户不知情的情况下对驱动文件进行破坏和篡改,导致各种的驱动问题,实在令人很头疼.那么,我们该如何避免因电脑里的驱动文件被破坏和纂改而导致的各类驱动问题呢?让驱动人生6的"驱动保护"功能解决您的烦恼,全面保护您的驱动文件不受破坏! 在驱动人生6的界面右侧,我们可以看到"驱动保护"功能图标,点击"驱动保护"图标,进入到"驱动保护"界面,点击驱动实时保护即可,驱动人生6会即时将您电脑里相关设