我正在尝试根据开发人员的意愿加载并执行动态外部程序集。它对GetCallingAssembly()进行哈希检查。位置并关闭。
程序集经常更新,因此可以编辑IL代码以绕过此检查,但需要在加载之前以编程方式完成。这将是不可靠的,我找不到任何可用于轻松修补它的工具的充分文档。如果我可以从程序集中解析几个字符串,我也可以直接调用后面的函数来完全绕过检查。这会更容易,但是最不可靠,如果有任何重大改变我的代码会破坏。
AFAIK没有简单的方法可以控制GetCallingAssembly()返回的内容。子进程的位置。如果有帮助,我对正在执行的计算机拥有完全权限。
否则我希望我可以使用某种钩子或Windows 7功能来将C#FileStream从一个文件重定向到另一个文件,但我不知道我该怎么做。
请指出一些想法。我知道这种检查是愚蠢的,应该很容易绕过正确的知识。
由于
答案 0 :(得分:3)
这个网站可能不是最好的地方,因为我们都是开发人员,所以这是针对作家的愿望。
但是,如果我因为 legal 原因(研究,旧软件等)而不得不绕过某些东西,我需要在这样的情况下修补它。由于调用是在系统.net库中,因此如果不使用运行时加载程序在系统库中修补该函数,或者在生成的程序集中修补函数,则无法控制返回。有办法挂钩系统库,但我不确定这里的目的是否合法,所以我不会发表评论。