阅读:2237回复:10
在文件头加入加密标志之后...请各位关注
我在文件头加入了自己的加密标志,长度为512,在irp_mj_read中通过改变IrpSp->Parameters.Read.ByteOffset.QuadPart +=512; 可以隐藏文件头,但是这时却读出了512字节的
00 ;通过softeice追踪 IrpSp->Parameters.Read.Length为4096,改变他起不到什么效果仍然返回 512字节 00; 我通过拦截 IRP_MJ_DIRECTORY_CONTROL,IRP_MJ_QUERY_INFORMATION,从资源管理器中查看大小为0字节,占用1k 请高手指教!!!! |
|
最新喜欢:rayyan... |
沙发#
发布于:2007-03-15 10:00
引用第0楼zjg1979于2007-03-15 09:38发表的“在文件头加入加密标志之后...请各位关注”: IRP_MJ_QUERY_Information拦截的不彻底。 AllInformation和StandarInformation都要拦。 |
|
|
板凳#
发布于:2007-03-16 10:05
多谢指导,我用记事本打开后可以拦截到irp_mj_query_information,能正确处理.
可是用editplus 或 UltraEdit 根本就拦截不到irp_mj_query_information. 不知道这两个软件是如何获得文件长度的,发送什么样的irp?????? |
|
地板#
发布于:2007-03-16 11:30
我用鼠标在文件上点一下,xp属性栏就能显示文件的真实大小,通过拦截我发现是
发送了 irp_mj_query_control ---> FILE_STREAM_INFORMATION StreamSize 并不是文件的实际大小,explore是如何知道文件大小的??? |
|
地下室#
发布于:2007-03-21 18:00
我也是碰到了同样的问题,用写字板和ultraedit打开的文件根本就没有发送irp_mj_query_information消息,但是调用了fastioquerystandardinfo,在这里改变大小也没有效果,不知道哪里还要做些处理。
|
|
|
5楼#
发布于:2007-03-21 18:04
在文件头加加密标识比较复杂,一旦你的加密标识被CACHED,处理就更复杂
|
|
|
6楼#
发布于:2007-03-22 08:18
请 "我最老实" 和实现的朋友关注一下!
|
|
7楼#
发布于:2007-03-22 08:21
在osc的坛子里,有一个帖子是这样的,看不太明白
Thank you! Indeed that was the missing piece. After making sure to properly lie about the file size in the fast paths (either cached IRP_MJ_Xxx or Fast I/O) and properly handling STATUS_BUFFER_OVERFLOW conditions in IRP_MJ_QUERY_INFORMATION everything worked like a charm. 另外irp_mj_set_information 什么时候调用?? |
|
8楼#
发布于:2007-03-22 09:17
不管多少条路径查询filesize 最后都是FSD从FCB中获取,所以你直接临时控制一下FCB,可以不用考虑有多少种方式获取FileSize。
|
|
|
9楼#
发布于:2007-03-27 14:01
对文件系统还不是很了解,很多东西都雾里看花!
|
|
10楼#
发布于:2007-03-27 14:17
多看nt文件系统内幕, 尤其是中文版:)
|
|
|