C#在内存中查找字节序列

C#在内存中查找字节序列,c#,memory,bytearray,dllimport,bytestream,C#,Memory,Bytearray,Dllimport,Bytestream,我想知道是否有一种简单的方法可以在程序内存中搜索字节序列。更具体地说,我想搜索加载到内存中的dll,并找到这些字节所在地址的VA/RVA。这可能吗 我知道我可以读取dll的内容,然后进行搜索,但我不确定如何获取该位置的VA/RVA 谢谢我不知道您是如何访问内存的,但如果您知道您搜索的内容的模式,并且可以访问内存块,那么您几乎可以通过ORegex找到所有内容 var memory_bytes = new byte[] {0, 0, 0, 0, 254, 255, 254, 0, 0, 0, 254

我想知道是否有一种简单的方法可以在程序内存中搜索字节序列。更具体地说,我想搜索加载到内存中的dll,并找到这些字节所在地址的VA/RVA。这可能吗

我知道我可以读取dll的内容,然后进行搜索,但我不确定如何获取该位置的VA/RVA


谢谢

我不知道您是如何访问内存的,但如果您知道您搜索的内容的模式,并且可以访问内存块,那么您几乎可以通过ORegex找到所有内容

var memory_bytes = new byte[] {0, 0, 0, 0, 254, 255, 254, 0, 0, 0, 254};

var oregex = new ORegex<byte>("{0}{1}{0}",x=> x==254, x=> x==255);
var matches = oregex.Matches(memory_bytes);

///OUTPUT: [254,255,254]
var memory_bytes=新字节[]{0,0,0,0,254,255,254,0,0,0,254};
var-oregex=new-oregex(“{0}{1}{0}”,x=>x==254,x=>x==255);
var matches=oregex.matches(内存字节);
///输出:[2542554]

什么是VA/RVA。。。。不管怎样,为什么你不能使用类似的东西来查看dll。。。您是否需要在运行时执行此操作?虚拟地址/相对虚拟地址。。。。。是的,它必须在内容的运行时VA/RVA完成。。。你没什么道理。。。。当然有更简单的方法。。。无论你想实现什么。你知道你可以将.dll动态加载到你的应用程序中,然后你可以在其中搜索。。。为了让eva知道它是否存在。。然后,您可以动态地创建和创建实例。。。但这与(虚拟地址/相对虚拟地址)有什么关系