阅读:1366回复:3
怎么取得ntvdm加载的程序全路径?
执行dos程序或win16程序时通常是由ntvdm加载。如果没指定seperate参数则ntvdm为每个dos/win16程序创建一个线程。通过拦截NtCreateThread服务和NtCreateSection服务我发现每次执行win16程序(DOS程序没试过)都多次调用NtCreateSection(好几次调用的文件都是所执行的程序文件)。
我的目标是只允许ntvdm执行若干程序,对于其他dos/win16一律不允许执行。怎么办?哪种方法才能做到?我目前只能考虑到以下: (1)在NtCreateSection中判断当前进程是否ntvdm,如果是则判断文件是否是允许执行的文件,如果是则继续执行,否则终止执行。 (2)在NtCreateThread中根据PCONTEXT查找ntvdm所加载的程序。 方法(1)可能不够合理,因为如果ntvdm调用NtCreateSection不能确定是否一定是加载可执行文件。 方法(2)无法找到加载什么程序,从vdmdbg和winnt.h ntdef.h等文档都无法得知。 |
|
沙发#
发布于:2004-05-24 10:07
我也想知道!
|
|
|
板凳#
发布于:2005-01-26 12:56
等待高人讲讲!
|
|
地板#
发布于:2005-01-28 09:25
大大们讲讲啊!
|
|