首页
社区
课程
招聘
如何拦截Autocad2005的CreateFile ?[求助]
发表于: 2007-2-8 17:55 4473

如何拦截Autocad2005的CreateFile ?[求助]

2007-2-8 17:55
4473
我试着拦截 CreateFile,用Jeffrey Richter修改输入节的办法挂接API,发现Autocad2005文件存盘时未调用该函数。

我怀疑该方法可能不能拦截COM组件或动态加载的DLL对API的调用,经过实验可以排除这种可能性。

现在只有两种可能性:
(1)Autocad未采用CreateFileA或CreateFileW创建dwg文件(因为创建dwl文件时能够被拦截);
(2)Autocad采取了反Hook技术,在存盘时绕过了Hook函数。

到底是怎样一回事,希望高手指点!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
NTSTATUS  
  ZwCreateFile(
    OUT PHANDLE  FileHandle,
    IN ACCESS_MASK  DesiredAccess,
    IN POBJECT_ATTRIBUTES  ObjectAttributes,
    OUT PIO_STATUS_BLOCK  IoStatusBlock,
    IN PLARGE_INTEGER  AllocationSize  OPTIONAL,
    IN ULONG  FileAttributes,
    IN ULONG  ShareAccess,
    IN ULONG  CreateDisposition,
    IN ULONG  CreateOptions,
    IN PVOID  EaBuffer  OPTIONAL,
    IN ULONG  EaLength
    );
拦截这咯  所有的文件操作都要经过Ring3-->Ring0 的 SystemEnter的
2007-2-8 21:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 foxabu 发布
NTSTATUS
ZwCreateFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
........

谢谢foxabu,能否辛苦一下给俺解释一下这个函数的参数和CreateFile的关系?
2007-2-9 12:15
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
4
CreateFile是由  kernel32.dll 导出的函数,属于用户级函数。
而Nt/ZwCreateFile 是由ntdll.dll和内核文件导出的函数,属于内核级函数。(Ring0 和Ring3 都有)
也就是说如果跟踪kernel32.dll会发现 其实CreateFile这个函数 最终还是会调用Nt/ZwCreateFile的。
而且文件操作可能是CreateFileA也可能是CreateFileW。 无论是哪种都会处理后调用Nt/ZwCreateFile。
而且如果你看ntdll.dll导出的这个函数 会发现其实只有几行代码。。
就是一个SystemEnter的作用 把用户态的上下文传到驱动里 然后由驱动执行相关的操作后返回到用户态。
2007-2-9 17:39
0
游客
登录 | 注册 方可回帖
返回
//