我如何读取程序存储器?

时间:2011-02-21 10:35:38

标签: c#

好的,我刚刚问过如何在我的C#应用​​程序中阅读两个变量。这是两个简单的变量int intfoo = 1234string strinfoo = "This is a test"

我现在明白为什么要问愚蠢,因为testapp是用c#编写的,因此托管代码。所以我修复了这个问题,我已经创建了一个包含两个相同变量的c ++应用程序:)

现在,使用C#,我如何遍历C ++测试应用程序以找到值“1234”和“这是一个测试”,它们是intfoo和stringfoo的值。

循环的开始和结束是什么?我读过某个地方,开始是0x00100000,其他地方是0x00400000?最终条件是什么?测试c ++应用程序在内存中使用388 kB。

如何循环查找int以及如何循环查找字符串?

提前感谢您的帮助: - )

3 个答案:

答案 0 :(得分:2)

您不想这样做,但有一个名为ReadProcessMemory的API函数。

答案 1 :(得分:1)

我们正在谈论虚拟内存,因此任何进程都看作是地址的私有空间,而进程无需任何努力就无法看到任何其他进程内存。通常使用一些定义良好的IPC策略(命名管道,内存映射文件等)进行twop进程通信

答案 2 :(得分:0)

使用不安全的C#。获取指向其中一个值的指针,您将获得一个起始地址。你应用程序中的第一个“对象”应该非常接近已用内存的开头。

现在你可以简单地使用你不安全的c#指针作为整数数组并“遍历”内存(我真的不知道它是否那么容易)。

请记住,垃圾收集可以随时在内存中移动对象!祝你好运。