首页
社区
课程
招聘
打开文件时ntcreatefile与ntopenfile的操作
发表于: 2014-7-16 09:55 9045

打开文件时ntcreatefile与ntopenfile的操作

2014-7-16 09:55
9045
1、当在资源管理器打开一个文件,会发生多次调用ntcreatefile与ntopenfile,这是打开C:\test\123.txt 的日志

00000001        0.00000000        \??\C:\test\123.txt   (null)  Enter MyNtOpenFile       
00000002        0.01416660        \??\C:\test\123.txt   (null)  Enter MyNtCreateFile       
00000003        0.02561593        \??\C:\test\123.txt   (null)  Enter MyNtCreateFile       
00000004        0.03675520        \??\C:\test\123.txt:Raec25ph4sudbf0hAaq5ehw3Nf:$DATA   (null)  Enter MyNtCreateFile       
00000005        0.05019390        \??\C:\test\123.txt   (null)  Enter MyNtCreateFile       
00000006        0.06172406        \??\C:\test\123.txt:Raec25ph4sudbf0hAaq5ehw3Nf:$DATA   (null)  Enter MyNtCreateFile       
00000007        1.20266438        \??\C:\test\123.txt   (null)  Enter MyNtOpenFile       
00000008        1.23106229        \??\C:\test\123.txt   (null)  Enter MyNtCreateFile       
00000009        1.24321294        \??\C:\test\   (null)  Enter MyNtCreateFile       
00000010        1.46120310        \??\C:\test\123.txt   (null)  Enter MyNtOpenFile       
00000011        1.47944844        \??\C:\test\123.txt   (null)  Enter MyNtCreateFile       
00000012        1.49211121        \??\C:\test\123.txt   (null)  Enter MyNtOpenFile       
2、如果在应用层使用createfile或者openfile打开文件,则只调用一次createfile。

问题:
1、为什么会出现这样的现象呢?
2、当在资源管理器打开一个文件,会发生多次调用ntcreatefile与ntopenfile。请问有什么规律么?

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

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
虽然我不知道原因,但这种问题真的没必要问。 你在  MyNtOpenFile  把参数打印出来不就知道了么?

资源管理器打开txt  会调用notepad 或者 其他的程序。  一旦调程序就会涉及到打开程序文件。也就是notepad.exe 然后notepad.exe 可能又要加载dll .   一串下来就是一堆。
2014-7-16 10:10
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
up 这是进程和线程的信息

00000001        0.00000000        \??\C:\test\1   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000002        0.00114159        0       
00000003        0.01284898        \??\C:\test\1\1.txt   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000004        0.02371445        0       
00000005        0.03692894        \??\C:\test\1\1.txt   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000006        0.04815324        0       
00000007        0.05981578        \??\C:\test\1\1.txt   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000008        0.07061990        0       
00000009        0.08194691        \??\C:\test\1\1.txt:Raec25ph4sudbf0hAaq5ehw3Nf:$DATA   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000010        0.09322483        c0000034       
00000011        0.10467251        \??\C:\test\1\1.txt   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000012        0.11659848        0       
00000013        0.12814717        \??\C:\test\1\1.txt:Raec25ph4sudbf0hAaq5ehw3Nf:$DATA   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000014        0.13940752        c0000034       
00000015        0.39654809        \??\C:\test\1   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000016        0.40782446        0       
00000017        0.41977468        \??\C:\test\1\1.txt   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000018        0.43123281        0       
00000019        0.44324383        \??\C:\test\1   (null)  Enter MyNtOpenFile. CurrentProcessId:1008, GetCurrentThreadId:924       
00000020        0.45444921        0       
00000021        0.47763282        \??\C:\test\1\1.txt   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000022        0.48922393        0       
00000023        0.50066388        \??\C:\test\1\   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000024        0.51182622        c00000ba       
00000025        0.52280772        \??\C:\test\1\   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000026        0.53413242        0       
00000027        0.54560220        \??\C:\test\1\   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000028        0.55650324        0       
00000029        0.61625761        \??\C:\test\1   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000030        0.62767196        0       
00000031        0.63928980        \??\C:\test\   (null)  Enter MyNtCreateFile. CurrentProcessId:1672, GetCurrentThreadId:2000       
00000032        0.65022701        0       
00000033        0.84337902        \??\C:\test\1\1.txt   (null)  Enter MyNtOpenFile. CurrentProcessId:1008, GetCurrentThreadId:924       
00000034        0.85423434        0       
00000035        0.86680222        \??\C:\test\1\1.txt   (null)  Enter MyNtCreateFile. CurrentProcessId:1008, GetCurrentThreadId:924       
00000036        0.87878573        0       
00000037        0.88129079        \??\C:\test\1\1.txt   (null)  Enter MyNtOpenFile. CurrentProcessId:1008, GetCurrentThreadId:924       
00000038        0.89379406        0       
00000039        1.09582496        \??\C:\test\1\1.txt   (null)  Enter MyNtOpenFile. CurrentProcessId:1672, GetCurrentThreadId:440       
00000040        1.10705018        0
2014-7-16 12:31
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
资源管理器有很多组件的,在你打开之前,选择一个文件就可能触发其他组件打开文件判断文件类型什么的。
你可以程序调用GetOpenFileName试试,这个枚举完文件会尝试去打开一次然后再显示的
2014-7-16 12:41
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
怎么没人啊
2014-7-16 14:09
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主你是低能儿吗?  马比的最烦你这种人了。 给你回答了,指了方向了,理都不理。 然后还来一句”怎么没人啊“ 。 你眼睛瞎了吗?
2014-7-16 14:14
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你是撒刁么。不是因为多进程调用的。不会问一下,怎么了。骂人就有理了么,,撒刁
2014-7-16 14:20
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你找找。这楼上哪里有人说是多进程了? 真是智商低下。。 叫你打印参数你也不打。  就你这种 骂你怎么了? 低能儿。  
2014-7-16 14:22
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
恩。。应该是这样子的,先试试吧,实在不知道怎么判断
2014-7-16 14:23
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
撒刁。看下另外一个日志文件,就知道了。自己没看,怪别人。逗
2014-7-16 14:25
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
傻笔。真是没救了。   你的日志文件能说明个j8?

都他妈一开始跟你讲了资源管理器里面直接打开txt 文件会调用 另外的程序。  你还说跟多进程没关系 。 智商真是硬伤。

前面 的资源管理器会去读notepad.exe  然后再读dll 这个也要调。 低能儿,叫你打参数你是不是不懂什么叫参数啊。
2014-7-16 14:27
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
撒刁,你倒像个J8,就这样吧,不想扯了,浪费时间。拜拜
2014-7-16 20:09
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
两位再吵版主过来封号了
2014-7-17 08:53
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
要同时调用很多组件呀?怪不得我感觉我hook了ZwCreateFile函数,就老是输出一些内部调用的一些文件名字,其实我都没做什么操作。比如说C:/Windows中的。
2014-8-5 10:17
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主,我目前在做hook ZwCreateFile函数,遇到了和你一样的问题呢?请问你解决了吗?
2014-8-5 10:19
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
后来你用了什么方法呢??
2014-8-6 08:31
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
minifilter。。。
2014-8-6 08:53
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
其实还有其他的,fsd hook,sfilter,  r3也可以做。。
2014-8-6 09:01
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
fsd hook 是什么?sfilter好像更难呢?是不是?minifilter听说简单一些,不过我的目标操作系统是Win Xp/2003,不支持minifilter
2014-8-6 09:16
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
新人看着前辈对话,只有羡慕的份。
2014-8-6 13:30
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
你懂这个,需要学什么课程啊
2014-8-6 21:29
0
游客
登录 | 注册 方可回帖
返回
//