NTFS磁盘解析,检测Ak922.sys

来源:互联网 发布:推荐书目 知乎 编辑:程序博客网 时间:2024/03/29 20:51

完整源码下载: 基于NTFS磁盘格式的解析/删除/读写破坏.完整源码  

--------------------------------------------------------------------------------------------------------------------------------

     人家07年就把 NTFS解析/ 删除/ 增加/ 恢复 这些搞过了. 我现在才学习,吐血了. 菜就是菜,也只能跟在大牛们的后面学人家早就fuck过的东西了...

       最近一直瞎忙,随便做做. 能解析/ 破坏/ 删除 NTFS下的文件. 不过文件创建/重命名这块儿还有些BUG,创建出来的文件(夹)是坏的. Ak922.sys 在DISK级做了过滤,那就发scsi passthrough吧. 哈哈,弄弄还是能发现它的.

文件解析 ---- 是最简单的了. 挂接相应的分区,校验NTFS的合法性,解析MBR & BPB ,校验$MFT的完整性, 分析系统的那几个元数据($Bitmap $UpCase $Volume $VOLUME_INFORMATION $AttrDef ),保存一些信息. 这些初始化工作完成后,就可以解析指定目录的文件了. 比如在此目录对应的MFT中90H属性(索引根), A0H属性. 分别出 流文件(80H属性中的name等) 和普通文件. 分析INDEX_BLOCK下的所有Index_entry, 而每个Index_entry对应一个文件/文件夹. 所以根据其MFT号. 得到对应的MFT,再跟进去,读其90H属性,判别偏移10H的地方是否为30(即判断是否为文件夹). 最后即可正确显示出当前目录的所有文件信息了... [可以做个递归遍历]

文件删除 ---- 和金山的文件粉碎机差不多. 清掉MFT本身的30H属性, 设置偏移16H的地方为0, 将$MFT:$bitmap中这个文件的MFT的标记为0, 然后有运行数据的话,得到其LCN,在$bitmap中找到对应的位置,清0. 最后在给80H属性或者AOH指向的run data进行覆盖式的填充垃圾数据. 但是金山粉碎机是删除后马上能在explorer中看到效果. 我做的必须重启后才会看到效果. 因为直接操作的是磁盘, 没有刷新cache, 逆了一下金山粉碎机, 看不出来它调用的哪个API来刷新系统缓存的. 有知道的还请指点一番~~

文件增加 ---- 是比较麻烦的一项工程,大体步骤是: (1) 在$MFT:$bitmap中找到一个空闲位.设置为1.并在这个所指向的空闲区域分配一个新的MFT;(2) 创建 & 写入标准属性(10H) / 文件名属性(30H) / 安全描述符属性(50H)/ . ( 若是创建文件,加入80H属性 若是创建文件夹,需要新增 INDEX_ROOT(90H)属性 ). 再将 FILE_NAME 属性加入其根目录的Index中.(3) 填充这个新MFT的2个必要的值: 硬连接数 && 目录标志(0x3). (4) 写$logfile (5) 其他....

文件恢复 要简单可以很简单,要做好也不容易,我是菜鸟就不多提了,可以参考codeproject上的源码,还有这个连接:【献丑】本人突破性进展,NTFS分区数据静态恢复

差不多就这些啦. fat格式太简单就不提及了. ntfs的组织结构还是很复杂的,可以结合nt4src + windbg进行学习. MJ, AZY, gz1x,狙剑作者等诸位大牛N年前就搞过了, 想起来就汗颜, 所以虽是老技术但是不可不学,各位还没搞过的同学可以考虑空闲时间学习一下,相信会有所获.

附上一个检测ak922.sys的动画, 和其他大牛N年前就已经检测出来的连接:

ShitSword vs AK922 beta2
ShitSword VS unreal rootkit
AK922 VS系统安全软件


原创粉丝点击