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的
  • 0
    点赞
  • 3
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

<p> 现在的网络在线教学会教你写驱动、写应用层代码、写界面、还会教你玩逆向、以及一些调试技巧。但在安全软件开发领域,却没有教程会教你从实际的项目角度去切入,如何灵活的应用这些知识,最终打造一款安全产品出来。它涵盖了通过对安全趋势感受选择方向,确定后分析威胁(分析大部分样本)归纳其共性后,进而推导出防御思路,单调的防御思路还不足以形成产品,此时需要思考还需添加哪些功能才能使其足够成熟,能够满足基本产品级要求。再对所有功能进行归纳划分,最后产生成熟的架构。再根据架构开始进行驱动、应用层、界面的代码编写,这中间踩过的坑,遇到的坎,我都将一一为大家呈现。看到这里,估计你的心中也有点了然了。<br /> 是的,这真的可能是目前网络安全开发领最硬核的在线教程了。那么你准备好了吗?<br /> <br /> 本课程的前面两章,讲解如何感受与判断当前的安全趋势,如何判断某一种威胁是否具有流行的潜力;如何产生对抗思路;如何产生最终安全产品的技术架构并梳理出核心流程。虽然只有两章,但其实关于设计模式,技术选型的批判与自我批判将贯穿本课程所有章节。<br /> <br /> 第三章讲解应用层核心服务模块设计与实现,包括与各模块间的互交通讯、握手处理等;也将重点讲解在安全产品通讯设计中,如何抉择哪些通讯需加密,哪些无需,为什么?当然还包括核心服务模块的日常事物的处理等。核心模块是整个产品架构的通讯中枢,乃重中之重,通过学习核心模块设计实现便可掌握整个安全软件的具体运作流程(套路)。为自己将来设计安全软件打个基础。同时也会涉及到逆向工程,讲解当你需要一个功能但手上没有相关代码,并且网络上给出的代码都不成熟的情况下,如何去寻找合适的成熟产品进行逆向。<br /> <br /> 第四章的重点在于探讨在加密算法的安全性问题。在特定的环境下,原来安全的加密算法可能变得不安全,同样的原来不安全的加密算法也可能变得安全。本节会告诉你如何灵活的去理解并运用。<br /> <br /> 第五章前十节是讲解驱动基本知识,开发环境搭建、windbg使用(有彩蛋)、编写windbg高级调试脚本、Verifier使用技巧等。然后对内核hook安装与卸载的稳定性进行深入探讨与论证实验(包括了普通hook和inlinehook),最后得出第一手结论(说它是第一手是因为目前网络上的资料还没有人给出这样的结论),此过程中深入分析了360对KiFastCallEntry(高频函数)进行hook时分别使用两种模式的原因。前十章能使你的驱动代码稳定性上升到一个新台阶。后面则讲解终结者的sfilter框架,包括如何在驱动中使用各种数据结构:链表、延展树、资源锁、消息传递注意点等等。因为目前网络上的资料,对内核中的各种小花招讲的很多,但是对各种数据结构设计、消息的处理与衔接之类的讲的太少,或者说压根就没讲。而本章会也会重点讲解这一块,因为这才是安全软件稳定性的第一保障!<br /> <br /> 第六章是探讨面对安全威胁时,如何针对实际情况设计相应的清除思路,然后讲解守护模块在安装时如何启动服务,以及在安装后是如何与服务实现互相守护。<br /> <br /> 第七章前五节是对SOUI这个界面库进行介绍,并且讲解了布局,系统控件,自定义控件的使用方法。同时也会讲解选择SOUI界面库的原因,这是一个及其简单易用的界面库(比qt之类的简单多了),你只要会点MFC的基本知识就能写个炫酷界面。然后讲解终结者【引导页】的布局设计与源码剖析、【主界面】与【威胁消息回调页面】布局与源码剖析;最后讲多种启动模式的设计与处理,接口的处理等。<br /> <br /> 第八章讲解安全类软件在编写卸载程序与安装包时的一些注意事项,当然也包括了这两类模块的编写方法。<br /> <br /> <br /> <br /> 预备知识<br /> <br /> 预备知识的最低要求是必须熟练掌握C语言。<br /> 什么?你对windows api不熟,没事,我们有源码!<br /> 什么?你对内核api不熟,没事,我们有源码!<br /> 什么?你对界面编程不熟,没事,我们有源码!<br /> 我们不仅有源码,我们还管售后,我们是三人团队,一个日常事务,两个技术售后(包括我)。大家购买课程以后,可以加下这个qq群:698220527【安全软件开发实战】 群主是【铁汉】,QQ号:66854746 看仔细了哈。<br /> 我们首先会把源码发你,如果你有学不明白的地方可以在里面提出来,大家互相切磋。<br /> <br /> 注意<br /> <br /> 每位学员送一套【勒索软件终结者】源码,可以看着源码跟着课程进行学习!关键章节都带有课后作业,分为必做题和非必做题。我对必做题也进行了“爱”设计,它可以确保一个事情:如果你做得出来,就代表你一定看懂了整体框架和运作流程。做不出来那一定是没看懂!不会存在看懂了但做不出来,或者做出来了但没看懂的情况。作业的设计,本身也是一种攻防嘛。<br /> <div> <br /> </div> </p> <p> <span></span> </p>
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

xianghb

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值