首页 / C# / c# – 验证当前正在运行的可执行文件
c# – 验证当前正在运行的可执行文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 验证当前正在运行的可执行文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2399字,纯文字阅读大概需要4分钟。
内容图文
![c# – 验证当前正在运行的可执行文件](/upload/InfoBanner/zyjiaocheng/816/aa437c458ec6450c9f54d2cac15b7853.jpg)
我正在寻找正确的方法来验证该可执行文件中当前正在运行的可执行文件.
我已经找到了一种为当前运行的文件计算(SHA256)哈希的方法.
问题是:我在哪里安全地存储这个哈希?如果我将它存储在配置文件中,恶意用户可以只计算自己的哈希并替换它.如果我将它存储在可执行文件本身中,它可能会被十六进制编辑器覆盖.
我读到的一个建议是做一个不对称的en-(或者它是de-)加密,但我怎么会这样做呢?
要求是可执行代码在不同的计算机上进行哈希和/解密完全相同,否则我无法正确验证.计算机将运行相同的操作系统,即Windows XP(嵌入式).
我已经签署了所有程序集,但是我需要一些额外的安全性来成功通过我们的安全目标.
对于那些知道的人,它涉及FPT_TST.1.3:TSF应为授权用户提供验证存储的TSF可执行代码的完整性的能力.
解决方法:
所有评论,特别是Marc的评论都是有效的.
我认为你最好的办法是看看authenticode签名 – 这就是他们的意思.关键是exe或dll是用证书签名的(将你的组织的信息标记在其中,很像SSL请求)和修改后的版本不能(理论上加上所有正常的安全警告)重新签名证书.
根据要求(我说这是因为这个’安全目标’有点粗糙 – 验证代码完整性的能力就像在Windows资源管理器中检查文件一样容易),这已经足够了本身(Windows具有显示证书中的发布者信息的内置功能),或者您可以编写例程来验证authenticode证书.
请参阅此SO Verify whether an executable is signed or not (signtool used to sign that exe),最常见的答案链接到一篇关于如何以编程方式检查authenticode证书的文章.
更新
接下来马克所建议的 – 如果需要进行自我编程检查,即使这样也是不够的.可以修改可执行文件,删除检查,然后在没有证书的情况下进行部署.因此杀了它.
说实话 – 主机应用程序/环境确实应该有自己的检查(例如,需要有效的authenticode证书) – 如果代码没有被修改是如此重要,那么它应该有自己的步骤来执行此操作.我想你可能真的在疯狂追逐.
只要把任何检查代表你做出最少的努力,而不必担心它显然提供的实际安全性 – 因为我认为你是从一个不可能的点开始.如果真的有任何人想要破解你所编写的代码的真正原因,那么它不仅仅是一个试图破解它的男生.因此,任何可用的解决方案(评论中提到的那些)都将被轻易破坏.
Rent-a-quote最后一句解释我的’野鹅追逐’评论
遵循最薄弱的链接原则 – 可执行文件的完整性仅与运行该可执行文件的主机的安全性要求一样有效.
因此,在打开UAC并打开所有安全功能的现代Windows机器上;例如,安装或运行未签名的代码非常困难.用户必须真的想要运行它.如果你把所有东西都降到零,那就相对简单了.在扎根的Android手机上,可以轻松运行可以杀死手机的东西.还有许多其他例子.
因此,如果您的代码将部署到的XP嵌入式环境中,首先没有运行时安全检查它实际运行的内容(例如,需要所有应用程序的authenticode证书的策略),那么您从一个继承的点开始安全性低于实际应该提供的安全级别.没有多少安全原语和例程可以恢复它.
内容总结
以上是互联网集市为您收集整理的c# – 验证当前正在运行的可执行文件全部内容,希望文章能够帮你解决c# – 验证当前正在运行的可执行文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。