song1484
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1623回复:4

fidisk加密的问题,有答案就散分!!!

楼主#
更多 发布于:2003-07-06 17:35
帮忙回答一下有答案就散分!
我在fidisk的基础上做加密,处理IRP_MJ_READ,IRP_MJ_WRITE
我对读取,写入的数据简单的取反没有问题,可当我使用分组加密时总是一加载
虚拟硬盘就重起,或者无法格式化,我知道由于分组处理后数据长度有变化,可是该怎样处理分组对
齐的问题呢?谢谢!

[编辑 -  7/7/03 by  song1484]
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-09 23:30
无法格式化可能是你没有解密你加密后的那段内存。

            case IRP_MJ_READ:
pBuf = MmGetSystemAddressForMdl(irp->MdlAddress);
Len = io_stack->Parameters.Read.Length;
                ZwReadFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
                    pBuf,
                    Len,
                    &io_stack->Parameters.Read.ByteOffset,
                    NULL
                    );
decrypt(pBuf,Len);
                break;

            case IRP_MJ_WRITE:
pBuf = MmGetSystemAddressForMdl(irp->MdlAddress);
Len  = io_stack->Parameters.Write.Length;
encrypt(pBuf,Len);
                ZwWriteFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
                    pBuf,
                    Len,
                    &io_stack->Parameters.Write.ByteOffset,
                    NULL
                    );
decrypt(pBuf,Len);
                break;

else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-09 23:32
最好不要让数据长度有变化。
song1484
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-10 09:35
else老兄,谢谢你的回复,加密时我并没在原始数据上处理而是分配了另外的内存,
CurrentAddress = MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority);
buf=ExAllocatePool(NonPagedPool,io_stack->Parameters.Write.Length);
RtlCopyMemory(buf,CurrentAddress,io_stack->Parameters.Write.Length);
应该不存在对该内存解密的问题。加密时我用简单的取反操作都正常。
另外分组加密算法不可能不改变数据的长度呀!
assert&chuip
驱动牛犊
驱动牛犊
  • 注册日期2003-02-19
  • 最后登录2008-06-02
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-15 10:46
不知道分组算法的密钥如何传递给FILEDISK的驱动程序。
游客

返回顶部