我在很大程度上理解如何使用Microsoft signtool签署exe。我有一个exe(C#),我想只在文件没有被修改时运行,如果我理解正确,这可以验证。我不明白的是如何验证文件。如果我验证文件的代码是在我验证的exe内部构建的,那么是不是只能反编译exe,删除检查文件的代码,然后重新编译它?
我对代码签名的理解基本上是这样的:
但是我不知道怎么不能完全采用从文件中检查文件完整性的机制,并在修改后运行程序。
答案 0 :(得分:1)
是的,有人可能会这样做,但您不负责验证代码。 CLR会自动为具有公钥令牌的dll执行此操作。如果公钥与文件哈希不匹配,则CLR将不加载该文件。 只需给你的exe一个强有力的名字,你就会安全。
答案 1 :(得分:-2)
如果我理解得很好,你想在现有的exe应用程序中注入一些代码,对吧?如果是这样,最好的是学习更多关于代码注入,如何使用exe文件进行操作(通常这很容易,因为在应用程序中向现有代码添加新代码并不需要太多关于它的问题,因为它需要改变现有的)。是的,你必须学习汇编程序,因为它是与现有exe进行通信的唯一方法。你不必编译任何东西,因为exe是以这种方式形成的,它只是作为它内部的对象/代码的包装器和启动器(这就是为什么输入新代码要容易得多,而不是用它来操作现有的,如果你搞砸了你的代码,就不会发生任何错误)。首先,获取一些关于汇编程序的好书,或者参考IDA并检查你所拥有的应用程序的一些代码。