iamwuge
驱动牛犊
驱动牛犊
  • 注册日期2002-01-07
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1366回复:3

怎么取得ntvdm加载的程序全路径?

楼主#
更多 发布于:2003-04-16 18:20
   执行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等文档都无法得知。
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-24 10:07
我也想知道!
这件事很难
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-26 12:56
等待高人讲讲!
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-28 09:25
大大们讲讲啊!
游客

返回顶部