如何计算父应用程序EXE的校验和以进行篡改检测?
是否像将EXE加载到内存并在其上运行CRC32一样简单?是否有更好的方法或内置机制为每个构建/版本的EXE生成唯一ID,以便您可以检测它是否已被篡改,或者模块是否在原始父进程中执行它是否已编译为?
答案 0 :(得分:2)
您可以使用CodeAccessPermission
和权限要求:
http://msdn.microsoft.com/en-us/library/3e879fzy.aspx
Demand()
方法抛出SecurityException
异常
在运行时如果调用堆栈中的所有调用者都更高 尚未被授予当前实例指定的权限。
此外,您需要阅读代码签名:
以下是如何检查程序集签名的示例:
http://blogs.msdn.com/b/shawnfa/archive/2004/06/07/150378.aspx
签署父程序集。为子程序集提供父程序集的公钥。如果使用正确的公钥对父程序集进行签名,那么您就是好的。如果没有,请失败。