阅读:2364回复:3
谁能说一下WriteProcessMemory的工作原理
这个函数是导致我的程序在98下崩溃的祸根,我想在vxd中实现同样的功能,我打算将WriteProcessMemory(GetCurrentProcess(),ppfn,&(pfnDummyFuncAddress),
sizeof(pfnDummyFuncAddress),NULL)里面的参数都在应用层中得到,然后通过DeviceIoControl传入到vxd中,vxd中只要完成WriteProcessMemory函数的功能。 大家说这样做可行吗? |
|
|
沙发#
发布于:2004-06-04 15:25
既然APP中已经实现了该函数,你为什么还需要在vxd中其实现?有什么特别原因吗?
我没有去反汇编过WriteProcessMemory,也没有去跟踪过。 但我想他的原(技术点)来应该是地址转换问题,当然这比普通地址转换要复杂因为他需要将一个进程空间映射到另外进程的地址空间。不是简单的ring0――》ring3或physical――》virtual |
|
|
板凳#
发布于:2004-06-04 17:23
一个字:烂
|
|
|
地板#
发布于:2004-06-04 18:32
前文
我想在ring0做那些被ring3级认为是违法的行为。 不瞒你说,这几天脑袋都想大了。 我做了一个截获打印的钩子程序,在附件里。你只要关心其中的windows update 和hook start按钮就行。如果有打印机就能测试,运行程序后,点击windows update按钮能得到当前运行的程序名称,如word1.doc等,选中其中之一,然后点击hook start按钮,这时钩子启动,然后你回到被钩程序如word1.doc,选择file->print菜单,就汇弹出can not print 信息,这是因为我截获了它的打印api,即 gdi32.dll中的StartDocA和StartDocW 程序在NT和XP下看起来很完美,除了一些响应和异常没有完成之外,但是有一个问题,就是程序在98下运行时,如果hook start后,开启任何其他的程序都会弹出”你做了非法操作”的信息,说明程序崩溃了。比如,你点击windows update 选择一个如word1.doc,然后点击hook start,然后你试试看能不能启动一个新的程序,比如ie,比如outlook,或其他。你可以多试两次,需要安装打印机,多试两次就知道我说的什么意思。 打击。。。 再传一个 [编辑 - 6/4/04 by yetty] |
|
|