40楼#
发布于:2010-04-25 23:30
回 35楼(ander5115) 的帖子
想请问ander5115是否实现对已有的文件(驱动安装之前已有的)进行加解密? |
|
41楼#
发布于:2010-04-26 11:42
回 40楼(yiyi507) 的帖子
不好意思,没有,这个需要在应用里面实现,在应用里面扫描硬盘文件,合乎规则的进行加密。 |
|
42楼#
发布于:2010-04-29 16:59
回 35楼(ander5115) 的帖子
为什么要不断更新呢?只在程序初始化是传入要监控的进程不就行了吗? |
|
43楼#
发布于:2010-05-10 17:00
楼主太厉害了,呵呵,学习一下代码,不懂再来讨论
|
|
44楼#
发布于:2010-05-10 22:19
我去掉了用///注释掉的加密代码,但是编译不通过。220多个error。如果能发一份完整的,我不胜感激!
pencil###yeah.net |
|
45楼#
发布于:2010-05-10 22:28
回 44楼(bilaopao) 的帖子
呵呵,这个函数所有权不在我,所以不能公开,见谅。如果是测试使用,建议你可以用一个简单的异或算法进行加解密即可。 |
|
|
禁止发言
|
46楼#
发布于:2010-05-11 00:19
用户被禁言,该主题自动屏蔽! |
47楼#
发布于:2010-05-11 10:25
pVolumeDevObj = IoGetDeviceAttachmentBaseRef(FileObject->DeviceObject) ;
if (NULL == pVolumeDevObj) { return STATUS_UNSUCCESSFUL ; } pFileSysDevObj = pVolumeDevObj->Vpb->DeviceObject ; pNextDevObj = pFileSysDevObj ; 请问楼主,这里pVolumeDevObj 是什么设备啊? 如果直接发IRP读写文件,为什么不是vpb-》RealDevice呢? 谢谢! |
|
48楼#
发布于:2010-05-11 11:19
回 42楼(chenhongwu) 的帖子
原因是我还没找到在驱动里面获取进程全名的方法,现在获取进程名的方式为驱动启动是通过查找System的位置初始化偏移量,然后利用这个偏移量来得到进程名,这种方法只能得到最长15位进程名,如果进程名超过15位就只能得到前半部分(前15位)。所以我只能用笨办法,利用应用不断更新进程ID对应的进程名,而驱动里每个地方都可以得到进程ID。如果你有办法能在驱动内得到进程全名,请你告诉我,谢谢。 |
|
49楼#
发布于:2010-05-11 12:51
回 47楼(crazy4stef) 的帖子
这里因为是对文件的读写,所以先得到文件系统的设备对象,然后发请求给对应的文件系统。 |
|
|
50楼#
发布于:2010-05-11 12:57
回 48楼(ander5115) 的帖子
你可以到OSR上找一下Obtaining A Useful Name for the Executable Image in a Process这篇文章,应该会有很大帮助。 |
|
|
51楼#
发布于:2010-05-11 12:59
或者直接google也可以找到:)
|
|
|
52楼#
发布于:2010-05-11 14:03
谢谢楼主,原来是你哦,我都加过你qq的,看你的签名才想起来是你,你真的很厉害,有问题还来请教你
|
|
53楼#
发布于:2010-05-11 14:24
回 40楼(yiyi507) 的帖子
对已有文件加密不是在改写的时候加密比较好吗?我觉得一个可行的办法是不是如果有FILE_WRITE_DATA | FILE_APPEND_DATA标记的打开文件,这时候把文件加密一次 这样不知道是否可行? |
|
54楼#
发布于:2010-05-11 15:59
// sometimes paging/nocached write request is lauched by read-only file object and only
// write parital data of the file, under this condition, if the file has not been encrypted, // encryption will lead to corrupt of file 楼主可以帮忙解释一下,这个是什么情况吗 还有就是为什么在PostSetInfo中要更新文件名啊? |
|
55楼#
发布于:2010-05-11 16:53
fat32下运行到
PreCleanup时 蓝屏。 f81882e4 efaadd7b f8188740 00000001 00000000 engine!Cc_ClearFileCache+0xf7 [c:\users\administrator\desktop\encryption_on-the-fly\engine\cache.c @ 50] f8188344 f83e1888 81e96894 f8188364 f8188394 engine!PreCleanup+0x16b [c:\users\administrator\desktop\encryption_on-the-fly\engine\main.c @ 753] 我自己加了个异或加密 代码如下 在PreWrite中 pch = ExAllocatePoolWithTag( NonPagedPool, writeLen, "pch1" ); RtlCopyMemory( pch, origBuf, // data need to be decrypted writeLen ); for(i=0;i<writeLen;i++) pch^=0x07; 在PostRead中: length = Data->IoStatus.Information; pch = ExAllocatePoolWithTag( NonPagedPool, length, "pch" ); RtlCopyMemory( pch, origBuf, // data need to be decrypted length ); for(i=0;i<length;i++) pch^=0x07; RtlCopyMemory( origBuf, pch, // data need to be decrypted Data->IoStatus.Information ); |
|
56楼#
发布于:2010-05-11 17:51
很不错,顶起
|
|
57楼#
发布于:2010-05-11 23:27
回 54楼(crazy4stef) 的帖子
1. 对于ppt来说,点save按钮进行保存和点close进行保存效果是不一样的。点save只会将修改的一部分数据写入磁盘,点close保存则是将整个文件重新写到磁盘一遍。2. postset更新文件名只是习惯。 |
|
|
58楼#
发布于:2010-05-11 23:28
回 55楼(bilaopao) 的帖子
有可能,我也偶尔遇到过这个问题。你的机器上有没有装杀软? |
|
|
59楼#
发布于:2010-05-12 09:17
回 58楼(shenhui) 的帖子
干净的xp虚拟机 |
|