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