c# – 有效扫描进程的内存
最近我组装了一个C#类,可以使用API??调用等来读取和写入另一个进程内存中的字节,因为我确信你以前都看过.
然而,我的问题涉及到如何有效扫描另一个进程的记忆?我知道测试每组4个字节的基本方法,直到您达到Int32.MaxValue,但是我发现它是(可想而知)令人难以置信的时间和资源消耗. 从我所看到的,通过执行“HeapWalk”,可以确定进程的分配地址.任何人都可以向我提供一些代码示例和/或有关这方面的信息,什么是最好的方式呢? 解决方法
您正在寻找的是内存区域列表,它基本上是一对内存地址/区域大小的列表.
你必须做的是: >使用 使用lpAddress启动VirtualQueryEx为0x0.这将返回一个包含BaseAddress和RegionSize属性的MEMORY_BASIC_INFORMATION结构(这表示可以读取的内存空间).然后使用RegionSize值增加lpAdress参数,因此下一次调用VirtualQueryEx将返回下一个区域…等. Google OpenProcess,CloseHandle,VirtualQueryEx和MEMORY_BASIC_INFORMATION,因此您可以找到要使用的不同的P / Invoke声明,因此您可以从C#调用这些Win32函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby – 我在哪里可以找到Hpricot文档?
- Swift 集合类型(Collection Type) 之 数组(array)(官方文档
- c – 使用动态插件处理Qt5中的QMetaType注册
- Oracle单行函数笔记
- c# – 无法打开物理文件操作系统错误32
- ios – Xcode Storyboard textview错误在中间切入
- postgresql – 如何从较新版本导入Postgres中的转储?
- SQLite Class - Easier Database Stuff
- MTD(3)---nand flash的erase,read,write接口函数代码分析 .
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(6)---cocos内