2014-03-29 56 views
0

我見過諸如Process Explorer之類的工具,它可以列出它正在存儲的進程中的所有字符串。我想在C/C++程序中模擬類似的行爲。我使用的是Windows計算機,所以我知道win32有一些函數可以瀏覽進程中堆的快照。我想知道的是,我應該如何有效地掃描內存中的字符串,如Process Explorer所能。如何高效地搜索進程中的字符串?

編輯:請沒有工具的建議。我想知道我應該如何編程。

回答

0

你想要一個工具,如「弦」。我認爲它包含在sysinternals包中。如果沒有,cygwin中可能有一個工具。

+0

嗯。這不是一個_tool_? – Deduplicator

+0

是的。也許我應該讀過這個問題...... – mjs

0

遵循以下步驟:

  • 得到「全面進入」令牌傳遞給目標進程。
  • 掛起它。
  • 讀取映射區域。
  • 閱讀記憶本身。使用的最可能的編碼:UTF-8和UTF-16。如果組成字節構建一個有效的以0結尾的字符串,並且只使用受限制的字母表(可能是空格,製表符,\ r \ n,字母,標點符號和數字),那麼您就有了字符串。打印它。
  • 恢復它。

編碼愉快。