我目前正在学习MSIL并希望尝试,如果我可以"破解"程序集仅通过Notepad ++编辑字节代码(使用Hex-Editor插件)。所以我编写了一个简单的控制台应用程序,它接受一个参数,哈希它(SHA256),将它与已设置的哈希进行比较并编写"右键#34;或"错误"到控制台。我用ildasm.exe打开了这个小应用程序,看到我只需要更改2个字节就可以让我的应用程序说出#34;对"每次。所以我在Notepad ++中打开它,更改了这两个字节并且它工作正常。现在我想尝试保护我的应用程序免受我试过的攻击。我遇到了强名称密钥文件,但我仍然可以将这些更改为字节2使我的应用程序说"对"每次。
所以我的问题:有没有办法保护.NET程序集不被编辑操作码?我不是要保护它免于在Notepad ++中打开,但我的意思是一种机制允许我的应用程序检测对可执行文件所做的更改(不检查文件的修改日期)。我知道没有完全保护,每次都会有差距,但必须有一种方法给应用程序至少一点点修改保护。
例如:我可以尝试从我的应用程序中创建哈希值并与给定的哈希值进行比较,但这不起作用,因为当我创建哈希并将此哈希值放入我的应用程序时,应用程序&#39 ; s哈希值会改变。