c# - C# .NET 读取所有进程的问题
问题描述
我正在使用我正在研究的扫描引擎,并且正在尝试读取进程的内存。我的代码在下面(有点乱),但是由于某种原因,如果我读取处于不同状态的应用程序的内存,或者在它有很多东西加载到内存之后,无论如何我都会得到相同的内存大小。我的入口点地址和长度不正确吗?
如果我使用内存编辑器,我不会得到与此相同的结果。
Process process = Process.GetProcessesByName(processName)[0];
List<Byte[]> moduleMemory = new List<byte[]>();
byte[] temp;
//MessageBox.Show(pm.FileName);
temp = new byte[pm.ModuleMemorySize];
int read;
if (ReadProcessMemory(process.Handle, pm.BaseAddress, temp, temp.Length, out read)) {
moduleMemory.Add(temp);
}
}
//string d = Encoding.Default.GetString(moduleMemory[0]);
MessageBox.Show("Size: " + moduleMemory[0].Length);
解决方案
正如我所看到的,这段代码只不过是读取为其创建进程的可执行模块(.exe 文件)的内存布局。所以难怪你总是得到相同的尺寸。
我假设您已准备好阅读该过程的“操作”内存。如果是这样,你应该看看这个讨论。
推荐阅读
- amazon-cloudwatch - Amazon Cloudwatch Logs Insights 可以访问 json 字段吗?
- mysql - 像查询 JPA 中枚举类型的列
- python - 如何在不重写的情况下更新文本文件
- arrays - 有没有办法对这种数组进行排序?
- vba - MS Access:CurrentDb.OpenRecordset 返回多个值
- c - C中的链表仅显示最后2个元素
- excel - Excel 使用图形趋势线公式从 x 值计算 y 值
- javascript - .getDay() 在将日期转换为特定时区时不起作用
- python - 在 Debian 10 上安装 python-pcl:libpcl_keypoints 导入错误
- css - 下拉菜单显示在导航栏中