如何在进程中有效地搜索字符串

How to search for strings in a process efficiently?

本文关键字:有效地 搜索 字符串 进程      更新时间:2023-10-16

我见过一些工具,如进程资源管理器,可以列出它正在存储的进程中的所有字符串。我想在C/c++程序中模拟类似的行为。我使用的是Windows计算机,所以我知道win32中有一些函数可以遍历进程中的堆快照。我想知道的是我应该如何有效地扫描内存中的字符串,就像进程资源管理器可以。

编辑:请不要提出工具建议。

你需要一个像"strings"这样的工具。我想它包含在sysinternals bundle中。如果没有,cygwin中可能有一个可用的工具。

按以下步骤操作:

  • 获取目标进程的"完全访问"令牌
  • 暂停它。
  • 读取映射区域。读取内存本身。最可能使用的编码:UTF-8和UTF-16。如果组成字节构建了一个有效的以0结尾的字符串,并且只使用受限制的字母表(可能是空格、制表符、r n、字母、标点符号和数字),那么就得到了字符串。打印出来。
  • 简历。

快乐编码。