关于VirtualQueryEx的问题
hex 2000-10-03 07:31:00 上次我曾问过有关内存修改器的工作原理,FireAngel大哥提供了如下回答
“
1.用Process32First和Process32Next可以玫举所有的进程(Window95/98实现了,WINNT4.0以及一下没有实现,Win2000实现了,如果是用NT4的话,就比较麻烦了,要用Performanance Data,太麻烦了,不说了。)
2.用VirtualQueryEx可以得到一个进程的内存的信息,如开始地址等(95/98/NT4/2000都实现了,就NT3.5没实现,要自己写,很麻烦的,不说了,如果感兴趣,给你源代码。)
3.然后用ReadProcessMemory和WriteProcessMemory就可以实现对某一进程内存的修改,这两个函数95/98/NT4/2000都实现了,读和写的方式是通过ReadPorcessMemory将内存块读到本进程中,就是在本进程上的一个拷贝,然后对这个拷贝执行各种操作,反正是在本进程中地一个拷贝(本进程中的一片内存),随你怎么操作啦,再将内存块用WriteProcessMemory写回去,就实现了对该内存数据的修改,象金山游侠、FPE那样的操作实际都是先对在本进程中的拷贝进行操作,然后将拷贝写回去。
”
我回去试了一下,的确,用Process32First和Process32Next可以玫举所有的进程;但当我进行下一步即用VirtualQueryEx得到进程的内存的信息时,又出现了问题。简单来说,就是VirtualQueryEx的第一第二和第四个参数代表什么意思,并且他们是如何确定的。
另外,ReadPorcessMemory的几个参数又是如何确定的?希望能给出一个简单的例子。
谢谢