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

时间:2014-03-29 21:43:01

标签: c++ windows memory process

我见过Process Explorer之类的工具可以列出它正在存储的进程中的所有字符串。我想在C / C ++程序中模拟类似的行为。我正在使用Windows计算机,因此我知道win32中的函数可以在进程中遍历堆的快照。我想知道的是我应该如何在Process Explorer中有效地扫描字符串。

编辑:请不要使用工具建议。我想知道如何以编程方式执行此操作。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

请按照以下步骤操作:

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

快乐的编码。