0

您如何计算父应用程序 EXE 的校验和以进行篡改检测?

是否像将 EXE 加载到内存中并在其上运行 CRC32 一样简单?是否有更好的方法或内置机制可以为每个构建/版本的 EXE 生成唯一 ID,以便您可以检测它是否被篡改,或者模块是否未在为其编译的原始父进程中执行?

4

1 回答 1

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

签署父程序集。给子程序集的父程序集的公钥。如果父程序集使用正确的公钥签名,那就很好。如果没有,失败。

于 2013-03-28T18:43:32.180 回答