我在很大程度上了解使用 Microsoft signtool 签署 exe 的工作原理。我有一个 exe (C#),我只想在文件未被修改的情况下运行它,如果我理解正确,这可以验证。我不明白的是如何验证文件。如果我验证文件的代码是在我正在验证的 exe 中构建的,难道不能反编译 exe,删除检查文件的代码,然后重新编译吗?
我对代码签名的理解基本上是这样的:
但是我不明白为什么不能完全从文件中取出检查文件完整性的机制,并在修改后运行程序。
我在很大程度上了解使用 Microsoft signtool 签署 exe 的工作原理。我有一个 exe (C#),我只想在文件未被修改的情况下运行它,如果我理解正确,这可以验证。我不明白的是如何验证文件。如果我验证文件的代码是在我正在验证的 exe 中构建的,难道不能反编译 exe,删除检查文件的代码,然后重新编译吗?
我对代码签名的理解基本上是这样的:
但是我不明白为什么不能完全从文件中取出检查文件完整性的机制,并在修改后运行程序。
是的,有人可能会这样做,但您不负责验证代码。CLR 会自动为具有公钥令牌的 dll 执行此操作。如果公钥与文件哈希不匹配,CLR 将不会加载文件。只需给您的 exe 起一个强名称,您就会很安全。
如果我理解你的话,你想在现有的 exe 应用程序中注入一些代码,对吧?如果是这样,最好是了解更多关于代码注入,如何使用 exe 文件进行操作(通常这很容易,因为在应用程序中向现有代码添加新代码不需要像它需要的那样大惊小怪改变现有的)。是的,您必须学习汇编程序,因为它是与现有 exe 通信的唯一方法。您不必编译任何东西,因为 exe 是以这种方式形成的,它仅充当其中的对象/代码的包装器和启动器(这就是为什么输入新代码比使用现有的,如果您弄乱了代码,则不会发生错误)。首先,