tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
阅读:1605回复:12

找了整个论坛都没有找到,加密问题

楼主#
更多 发布于:2004-02-02 18:17
加密后数据变长了,写到文件里后发现增加的数据没有写入,哪位大虾能指点一下,谢谢!
我是用NOTEPAD打开的,只处理PAGING_IO,NOCACHE_IO,SYNCHRONOUS_PAGING_IO
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-03 09:15
你换一个加密算法,使得数据长度不变。
加密后数据变长会出现N多问题。
不限容量的免费邮箱 www.k65.net
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-03 09:51
都会出现哪些问题???
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-03 09:54
另外,NOTEPAD写数据的时候,io_stack->Parameters.Write.Length长度总是4096,但是实际写入的数据长度并不是4096,实际上写入的数据长度保存在什么地方??
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-27 16:14
另外,NOTEPAD写数据的时候,io_stack->Parameters.Write.Length长度总是4096,但是实际写入的数据长度并不是4096,实际上写入的数据长度保存在什么地方??

CompletionRoute的IoStatus.Information
不停学习
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-28 10:22
顺便问个问题,一下使我的irp_mj_write的代码,我参考论坛里面的方法加密文件,可是一存盘,硬盘上的密文反而被替换成了明文,不只是怎么回事??我在替换完了mdl后,检查过irp得mdl里面确实是密文,但是为什么没有存到硬盘上,反而把明文存上了,真奇怪,老大帮忙看看

KeInitializeEvent(&event, NotificationEvent, FALSE);
IoCopyCurrentIrpStackLocationToNext(Irp);
IoSetCompletionRoutine(Irp, ProcessReadCompletion, &event, TRUE, TRUE, TRUE);
IoCallDriver(DeviceExtension->FileSystem, Irp);
KeWaitForSingleObject(&event, Executive, KernelMode, TRUE, NULL);

if(( Irp->Flags & IRP_PAGING_IO || Irp->Flags & IRP_SYNCHRONOUS_PAGING_IO || Irp->Flags & IRP_NOCACHE))
{
if (Irp->MdlAddress)
{
testfilebuffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress,NormalPagePriority);
}
else
{
testfilebuffer = Irp->UserBuffer;
}

NewBuffer = ExAllocatePool(NonPagedPool,Irp->IoStatus.Information+1);
memcpy(NewBuffer,testfilebuffer,Irp->IoStatus.Information);
encbuffer(NewBuffer,Irp->IoStatus.Information);
RtlCopyMemory(testfilebuffer,NewBuffer,Irp->IoStatus.Information);
ExFreePool(NewBuffer);

IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}


if( Irp->PendingReturned ) {

IoMarkIrpPending( Irp );
return STATUS_PENDING;
}

IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-28 10:22
顺便问个问题,以下是我的irp_mj_write的代码,我参考论坛里面的方法加密文件,可是一存盘,硬盘上的密文反而被替换成了明文,不只是怎么回事??我在替换完了mdl后,检查过irp得mdl里面确实是密文,但是为什么没有存到硬盘上,反而把明文存上了,真奇怪,老大帮忙看看

KeInitializeEvent(&event, NotificationEvent, FALSE);
IoCopyCurrentIrpStackLocationToNext(Irp);
IoSetCompletionRoutine(Irp, ProcessReadCompletion, &event, TRUE, TRUE, TRUE);
IoCallDriver(DeviceExtension->FileSystem, Irp);
KeWaitForSingleObject(&event, Executive, KernelMode, TRUE, NULL);

if(( Irp->Flags & IRP_PAGING_IO || Irp->Flags & IRP_SYNCHRONOUS_PAGING_IO || Irp->Flags & IRP_NOCACHE))
{
if (Irp->MdlAddress)
{
testfilebuffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress,NormalPagePriority);
}
else
{
testfilebuffer = Irp->UserBuffer;
}

NewBuffer = ExAllocatePool(NonPagedPool,Irp->IoStatus.Information+1);
memcpy(NewBuffer,testfilebuffer,Irp->IoStatus.Information);
encbuffer(NewBuffer,Irp->IoStatus.Information);
RtlCopyMemory(testfilebuffer,NewBuffer,Irp->IoStatus.Information);
ExFreePool(NewBuffer);

IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
}


if( Irp->PendingReturned ) {

IoMarkIrpPending( Irp );
return STATUS_PENDING;
}

IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Irp->IoStatus.Status;
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-28 10:37
我的问题解决啦,谢谢大虾以前的帖子,给了我不少提示,不过原理还不太明白,我上面的代码里替换了mdl以后直接IoCompleteRequest,这样保存的就是明文拉,但是我改成iocalldriver,就行啦,大虾能不能解释一下为什么???
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
8楼#
发布于:2004-10-28 11:31
你自己不是说了吗?
IoCompleteRequest
iocalldriver
函数名就体现了吧!
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-28 11:50
就是不明白阿,为什么我自己完成就不能写到硬盘上啊,calldriver就行啊,
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-28 11:51
好像明白啦,是不是因为我自己完成了,所以没有写到硬盘上啊,
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-11-04 16:53
我也遇到相同的问题啦,但是osr上的兄弟们都建议不要改变文件大小,具体会发生什么他们也没说,我决定试一次,看看把文件变大了到底会有什么恶果,佛说,我不蓝屏谁蓝屏。。。。
gongbin_net
驱动牛犊
驱动牛犊
  • 注册日期2003-06-18
  • 最后登录2005-06-07
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-03-15 14:26
因为你的去驱动是上层过滤驱动,需要传递到下层磁盘驱动才可以写入文件中的,不过我觉得你的加密有问题,你如果加密很大的文件,我想可能bugcheck
游客

返回顶部