zoukankan      html  css  js  c++  java
  • [转]sfilter动态加解密吐血总结

    晕了好几天,总算把Ifs的动态加解密给闹明白了。
    为了后来者不再晕,总结如下:

    1.加密在SfWrite(IRP_MJ_WRITE)中,而不是完成例程,
    解密在SfRead(IRP_MJ_READ)中,而不是完成例程,

    3.只要处理IRP_NOCACHE|IRP_PAGING_IO|IRP_SYNCHRONOUS_PAGING_IO

    2.加密简单过程:
    a.得到Windows传下来的Buffer Address,
    if (Irp->MdlAddress)
    {
    SysDataBuf = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);
    }
    else
    {
    SysDataBuf = Irp->UserBuffer; 

    b.保存明文SysDataBuf 在SysDataBufFirst

    c.用你强大的算法加密SysDataBuf -->> MyBuf

    d.把MyBuf Copy到 SysDataBuf,

    e.IoCallDriver 把密文向下传,写入HardDisk。

    f.恢复内存的明文 RtlCopyMemory(SysDataBuf,SysDataBufFirst, ulWriteLen);.

    3.解密的大致过程:
    a.IoCallDriver 读到密文
    b,解密
    c。IoCompleteRequest 搞定

    我的开发环境:
    IFS2600,SFilter的代码却是for XP SP1的

  • 相关阅读:
    UVa532 Dungeon Master 三维迷宫
    6.4.2 走迷宫
    UVA 439 Knight Moves
    UVa784 Maze Exploration
    UVa657 The die is cast
    UVa572 Oil Deposits DFS求连通块
    UVa10562 Undraw the Trees
    UVa839 Not so Mobile
    327
    UVa699 The Falling Leaves
  • 原文地址:https://www.cnblogs.com/adylee/p/2971505.html
Copyright © 2011-2022 走看看