C# 检查加载内存后是否更改了DLL
我正在尝试找到一种快速有效的方法,允许dll检查内存中的代码是否已更改 我想在THISLIB.DLL类中插入一个函数,该函数使用如下内容:C# 检查加载内存后是否更改了DLL,c#,visual-studio,dll,process,hook,C#,Visual Studio,Dll,Process,Hook,我正在尝试找到一种快速有效的方法,允许dll检查内存中的代码是否已更改 我想在THISLIB.DLL类中插入一个函数,该函数使用如下内容: var assembly = Assembly.GetExecutingAssembly(); Module[] thisModule = assembly.GetLoadedModules(); foreach (Module i in thisModule) { if (i.Name == "THISLIB.dll") {
var assembly = Assembly.GetExecutingAssembly();
Module[] thisModule = assembly.GetLoadedModules();
foreach (Module i in thisModule)
{
if (i.Name == "THISLIB.dll")
{
ModuleHandle m= i.ModuleHandle;
byte[] dllMemory = new byte[??? HOW GET THISLIB.DLL MEMORY SIZE ???];
dllMemory = ??? HOW GET THISLIB.DLL MEMORY DATA ???
}
}
我需要检查HASH(内存THISLIB.DLL)是否等于HASH(文件系统THISLIB.DLL) 使用filesystemwatcher检查dll文件更新。将文件作为ByTestStream读入以访问字节。您不能只检查文件访问/创建时间吗?或者使用一些FileSystemWatcher?这已经内置到CLR中,它可以验证程序集的强名称。只需使用Project+属性和签名。如果您在完全信任的情况下运行,并且仍然希望验证强名称,请使用google strongNameSignatureReferenceEx。我需要一个解决方案,为我提供加载到内存中的DLL字节数组。。。