【问题标题】:C# Find sequence of bytes in memoryC#在内存中查找字节序列
【发布时间】:2016-02-11 11:39:27
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 什么是 VA/RVA.... 无论如何你为什么不能使用 jetbrains.com/decompiler 之类的东西来查看 dll...这是因为你需要在运行时执行此操作吗?
  • 虚拟地址/相对虚拟地址.....是的,它要在运行时完成
  • 内容的 VA/RVA ......你没有多大意义......当然有一种更简单的方法......你想要实现的目标。您知道您可以将 .dll 动态加载到您的应用程序中,然后您可以搜索它...查看 eva 是否存在...然后您可以动态创建和实例...但这与 (虚拟地址/相对虚拟地址)

标签: c# memory bytearray dllimport bytestream


【解决方案1】:

我不知道你是如何访问内存的,但是如果你知道你搜索的东西的模式并且可以访问内存块,你几乎可以通过 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多