对指定进程的内存进行搜索

来源:赵克立 分类: 网络安全 标签:无发布时间:2018-09-16 15:09:23浏览:145
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
温馨提示:
技术类文章有它的时效性,请留意文章更新时间以及软件的版本
更新时间:
2018-09-16 15:09:23

1、搜索内存的工具用的最多的 也就是CE(Cheat Engine),这款工具是 delphi 编写的, 用到的API有 OpenProcess,ReadProcessMemory,WriteProcessMemory,VirtualQueryEx 这几个API,

OpenProcess是必须的(不讲R0),MSDN上说,Read/Wirte一个进程虚拟内存时, 要先打开进程, 带有读写虚拟内存权限才行,VirtualQueryEx 函数是用来检查内存属性,因为并不是所有的内存地址都是可读可以写, 所以使用的顺序应该是,OpenProcess  ->VirtualQueryEx-> ReadProcessMemory(WriteProcessMemory), 

2、还有个问题, VirtualQueryEx 是检查内存属性的, 那么应该从那个地址检查呢??Windows 32位 系统, 内存寻址范围是 2 的32次方, 4G左右, 也就是要寻址4G的地址??? 这个地址非常的大, 看MSDN, 发现 内存地址分成了两部分, 用户空间 和 内核空间(本文里不讲内核空间), 各用了2G的空间, 而且用户空间是不能直接访问内核空间的, 所以确定了搜索范围是 2G 内,即 0x7FFFFFF 个地址, 好,这个范围不会错误了, 问题又来了, 2G的地址, 我怎么知道那个地址是可读, 那个地址是可写???, VirtualQueryEx函数MSDN上说了  VirtualQueryEx  是可以检查出一个内存页面的属性,也就是要读写内存,属性就得是有读写属性(PAGE_READWRITE,PAGE_WRITECOPY,PAGE_EXECUTE_READWRITE,PAGE_EXECUTE_WRITECOPY), CE是从 0x0400000这个地址开始搜索, 为什么从这个地址开始搜索呢?? 这里不多说, 请去了解下PE结构, 



微信号:kelicom QQ群:215861553 紧急求助须知
留下一点心意, :)
点击更换验证码
留言