ak922.sys分析

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02 编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2. 阅读详情

-*- begin -*-
 
这是一个 C 语言编写的驱动级的 rootkit 程序。这个驱动可以隐藏名为 AK922.SYS 的文件。

 

该驱动加载后首先获取 nt!IofCompleteRequest 函数的地址。以及在 kpeb 中定位进程名的偏移。之后,该驱动会依次完成以下操作:

 

1、通过 nt!ObReferenceObjectByName 打开磁盘驱动 /Driver/Disk,并遍历该驱动创建的所有设备对象,该驱动会保存 Disk 创建的名字以 '/DR' 开头并且类型为磁盘设备类型的设备对象指针,最多可以存 8 个设备对象指针。该驱动记录这些设备对象的地址用来在将来进行文件隐藏操作时用。

2、创建一个名为 /Device/AzyKit922 的设备,目前截获的版本没有创建符号链接,或许以后的版本会进行创建符号连接以便可以通过用户态程序控制来灵活地控制要隐藏的文件。

 

3、设置 irp 处理回调以及卸载驱动的回调例程。

 

4、通过把 nt!IofCompleteRequest 函数的入口前 6 个字节替换成 push hook_IofCompleteRequest / ret 实现对该函数的挂钩。该驱动对文件的隐藏操作全部在 nt!IofCompleteRequest 的钩子处理例程中完成。

 

完成上述操作后,该驱动会保存自身的驱动对象以及设备对象指针并返回成功给 i/o 管理器。当系统中发生的文件 i/o 操作完成时,rootkit 的钩子会被激活,并依次完成以下操作:

 

1、关闭可屏蔽中断。
2、对已经完成的 irp 进行修改来实现文件隐藏。
3、恢复 eflags 并跳回执行 nt!IofCompleteRequest 的原入口代码。

 

以下是 rootkit 实现文件隐藏的流程分析:

 

流程1、判断该 i/o 请求是否为 IRP_MJ_DIRECTORY_CONTROL,并且 MinorFunction 为 IRP_MN_QUERY_DIRECTORY。如果不是则转入下一个流程;如果是,则判断传入的请求结构类型,并查找文件系统返回的遍历结果,如果发现文件系统遍历到的结果为 'AK922.sys',则对结果进行修改(根据该结构在整个结构链中的位置决定是截断该链还是只断开一个节点)。

 

流程2、依次执行以下操作:
1、如果 i/o 请求不是 IRP_MJ_READ,则该 rootkit 不再进行处理,并直接返回。

 

2、检查传入的设备对象指针是否是之前保存的 8 个 /Driver/Disk 创建的设备对象之一,如果不是则不再进行处理,直接返回。

 

3、判断是否当前在 system 进程下运行,如果是则直接返回。

 

4、检查当前的 irql,如果不在 DISPATCH_LEVEL 则直接返回不进行下一步处理。

 

5、排队一个 WorkItem 来对磁盘驱动读出的 AK922.SYS 文件记录的元数据进行修改实现磁盘级的隐藏。

 

该驱动隐藏的文件可以躲过目前绝大多数安全检测工具,包括类似 WinHex 的基于磁盘分区格式遍历的工具。

Delphi驱动开发实战指南:系统级编程与项目结构解析 const$800,也许你会问:既然有C/C++和WDK,为什么还要费劲用Delphi?原因很简单:团队已有大量Delphi积累,学习成本更低;Object Pascal语法比C更清晰,减少低级错误;结构化异常处理理念更适合复杂逻辑封装;在某些嵌入式或工控场景中,Delphi仍是主力语言。当然,我们也必须承认局限:无法直接使用WDF/KMDF高级框架;缺乏官方支持,文档稀少;调试环境搭建较复杂。但正如一位老工程师所说:“ 阅读详情

相关推荐

NTFS分区DBR汇编代码

NTFS文件系统分区DBR的汇编引导代码

AK922: 突破磁盘低级检测实现文件隐藏

AK922: 突破磁盘低级检测实现文件隐藏作者:Azyemail: Azy000@gmail.com完成于:2007-08-08   目前,一些已公开的主流anti-rootkit检测隐藏文件主要有两种方法:第一种是文件系统层的检测,属于这一类的有icesword,darkspy,gmer等。第二种便是磁盘级别的低级检测(Disk Low-Level Scanning),属于这一类的ark也很多,

1369

国央企创新负责人如何提升企业创新与技术合作的精准度?.docx

国央企创新负责人如何提升企业创新与技术合作的精准度?

突破磁盘低级检测实现文件隐藏

作者:Azy完成于:2007-08-08目前,一些已公开的主流anti-rootkit检测隐藏文件主要有两种方法:第一种是文件系统层的检测,属于这一类的有icesword, darkspy,gmer等。第二种便是磁盘级别的低级检测(Disk Low-Level Scanning),属于这一类的ark也很多,典型代表为rootkit unhooker,filereg(is的插件),rootkit r

1252

优化求解器性能:当分支切割算法中的gap停滞不前时如何应对

本文深入探讨了当分支切割算法求解复杂整数规划问题时,gap停滞不前的根本原因与应对策略。文章指出gap停滞源于上界(找不到更优整数解)或下界(证明过程缓慢)提升受阻,并提供了从模型改写、自定义割平面、调整搜索策略到参数调优等一系列实战方法,帮助优化工程师有效打破求解僵局,推动gap下降。

weixin_29294597的博客 381

OnlyOffice Docker部署踩坑实录:解决Nginx反向代理导致的editor.bin下载失败

本文详细解析了在Docker中部署OnlyOffice时,因Nginx反向代理配置不当导致editor.bin下载失败的常见问题。通过分析问题根源,提供了从Nginx代理配置、Docker网络设置到OnlyOffice容器内部调整的完整解决方案,并分享了实战调试技巧与性能优化建议,帮助用户彻底解决这一部署难题。

wine的专栏 524

摘除过滤驱动

转自:http://hi.baidu.com/_achillis/blog/item/cc9cf925c23260064d088d05.html 开始本文之前先膜拜一下老V~“无法F5的驱动,不是好驱动啊~不是好驱动啊~ ”            -----killvxk语录这两天下午的时间,破解那个驱动保护搞得好痛苦,每次关机都要蓝一次,有时候设备还不工作,郁闷...

wowbell的专栏 1383

零基础搭建机械零件检测系统:基于YOLOv8的PySide6可视化开发全攻略

本文详细介绍了如何从零开始搭建基于YOLOv8的机械零件检测系统,涵盖环境配置、数据集准备、模型训练优化及PySide6可视化界面开发全流程。通过实战案例展示YOLOv8在工业检测中的高效应用,帮助开发者快速实现自动化零件检测解决方案。

weixin_28455801的博客 309

ARP欺骗学习以及mj的hook代码还原

ARP欺骗学习以及mj的hook代码还原文章作者:zhuwg信息来源:邪恶八进制信息安全团队(www.eviloctal.com)ARP协议是建立在信任局域网内所有结点的基础上的,它很高效,但却不安全。它是无状态的协议,不会检查自己是否发过请求包,也不管(其实也不知道)是否是合法的应答,只要收到目标MAC是自己的ARP reply包或arp广播包(包括ARP request和ARP reply

井底之蛙 1719

基于逆向工程的中国裁判文书网爬虫技术深度解析:从反爬破解到合规抓取

最近承接了一个法律大数据分析的项目,需要获取某类合同纠纷的裁判文书数据,用于分析不同地区的判决规律、法官的裁判倾向以及法条适用情况。原本以为用常规的Python爬虫就能搞定,结果刚对着中国裁判文书网发了几个请求,就遭遇了“滑铁卢”:要么请求直接返回403 Forbidden,要么触发滑块验证码,甚至连IP都被临时封禁了。普通的requests+BeautifulSoup组合在裁判文书网面前完全失效,这也让我意识到,想要获取这里的数据,必须先通过逆向工程拆解网站的请求逻辑和反爬机制。经过一周的摸索,从抓包分析

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3173

AM芯片性能测试

目前车载FM&AM没有明确的国标,因此各家测试项目可能不同,最主要测试标准比较混乱,多是根据具体芯片的规格书以及与芯片厂商协商。信号发生器:R&S SMCV100B音频分析仪:R&S UPV AUDIO AYALYZER DC 250KHZ(AP的也可以)专用USB-I2C控制模块(不同芯片控制模块不同,例如SPI或UART的控制模块)卡农线(针对模拟声道输出,+接左/右声道,-接GND,地可接GND也可悬空)

qflook的博客 903

IRP完成函数:IofCompleteRequest

IRP完成函数:IofCompleteRequest 一.IRP的完成 1.IRP完成后,做些什么(简单描述)? A.执行完成Routine> B.释放(有可能要复制还给“用户层”,见下面详细)缓冲区 C.删除IRP   2.怎么完成一个IRP? A.调用IoCompleteRequest,而IoCompleteRequest是一个“宏”== IofCompleteReques

qq350625238的专栏 2668

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 549

NTFS磁盘解析,检测Ak922.sys

完整源码下载: 基于NTFS磁盘格式的解析/删除/读写破坏.完整源码   --------------------------------------------------------------------------------------------------------------------------------      人家07年就把 NTFS解析/ 删除/ 增加/ 恢

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 959

2024 年 9 月青少年软编等考 C 语言三级真题解析

2024 年 9 月青少年软编等考 C 语言三级真题解析。

发布少儿编程考级的真题和优秀竞赛题解析,以及一些讲义。 1742

浏览器解析HTML的过程及编程实现

需要注意的是,上述示例代码只是简化的演示,并未涵盖浏览器解析HTML的所有细节和复杂性。实际上,浏览器的HTML解析引擎还会处理一系列的特殊情况、错误容错和性能优化等方面的内容,以确保能够正确解析各种类型的HTML代码。HTML(超文本标记语言)是构建网页的基础语言,浏览器负责将HTML代码解析并渲染成可视化的网页。本文将详细介绍浏览器解析HTML的过程,并提供相应的编程示例代码。希望以上内容能帮助您理解浏览器解析HTML的过程,并通过提供的示例代码更好地了解如何在编程中实现这一过程。

ByteJolt的博客 322

IopfCompleteRequest函数代码分析

·确定此I/O请求是否是一个要在发起者线程环境中完成的同步I/O,若是, 则IopfCompleteRequest 函数立即返回,而由该I/O请求的发起者来完成它。 在这种情况下,当前线程必定是发起者线程,因而可以避免使用APC机制来通知完成, 从而消除了由APC机制带来的额外开销(包括软中断、处理器的线程切换等)。 注意,发起者线程需要调用IopCompleteRequest函数,以进一步完成此I/O请求, 读者可以参考IopSynchronousServiceTail函数中IoCallDriv

linux-0.11调试教程 937

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IRP请求的完成与返回

 IRP请求的完成与返回    每当完成了一个以IRP为代表的I/O操作请求的时候,就要执行IRP的善后操作IoCompleteRequest(),这是个宏操作,定义为函数IofCompleteRequest()。#define  IoCompleteRequest  IofCompleteRequest    如前所述,以IRP为代表的I/O操作请求的执行可以是同步的,也可以是异步的,所以一

博文视点(北京)官方博客 1940

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

对内核函数IoCompleteRequest的分析

该文来自看雪   对内核函数IoCompleteRequest的分析 作 者: RYYMike 原文地址 http://bbs.pediy.com/showthread.php?t=109018 今天是我的18周岁生日,突然就想发表篇文章,而前几天刚好在做IopfCompleteRequest的分析,所以今天就赶赶急,把分析做做完,发表出来。       我在网上认识的一个前辈说

sqqsongqiqi的专栏 1481

I/O管理器执行IO完成

IO管理器的任务就是管理IO,本质上windows的IO操作都是异步的,这是由IO流的分层下递和IRQL共同决定的,效果就是IO流被处 理的每一个步骤都可能在任意线程上下文中进行,那么如果最下面的驱动完成了一个irp,这个怎么让上面的驱动知道呢?当然方法很多,比如上层驱动等待在一 个event上,而microsoft的作法显然更好,就是为每一个irp流经的每一个设备提供了一个选择,该设备的驱动可以

TCP/IP 4741

IopfCompleteRequest源码

不知道哪位大神的 正需要 转载在这里 VOID FASTCALL IopfCompleteRequest( IN PIRP Irp, IN CCHAR PriorityBoost )

sqqsongqiqi的专栏 1514

[原创]基于NTFS磁盘格式的解析/删除/读写破坏.完整源码

基于NTFS磁盘格式的解析/删除/破坏完整源码 记得2008年10月左右刚进公司时学习NTFS,胡乱弄的; 基于Unix下开源的ntfs-3g,移植到Windows下修正了几个BUG; R3负责解析/读写等操作,R0负责atapi层读写数据;整个工程较为庞大,主要是ntfs-3g代码量比较大.里面基本每个函数都有较为详细的注释,对于新手,阅读代码并无障碍. MFC界面是因为毕设时要展示效果临时

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1881

windows的IO管理器内核实现机制原理分析

IO管理器的任务就是管理IO,本质上windows的IO操作都是异步的,这是由IO流的分层下递和IRQL共同决定的,效果就是IO流被处理的每一个步骤都可能在任意线程上下文中进行,那么如果最下面的驱动完成了一个irp,这个怎么让上面的驱动知道呢?当然方法很多,比如上层驱动等待在一个   event上,而microsoft的作法显然更好,就是为每一个irp流经的每一个设备提供了一个选择,该设备的驱动可

qiaoli的知识备忘录 1521

IoCompleteRequest函数

一个 IRP 在过滤驱动中,把它分为需要安装 CompleteRoutine 的与无需安装 CompleteRoutine 的。那么在不需要安装 CompleteRoutine 的有以下几类情况。 (1) 拿到这个 IRP 后什么都不做,直接调用 IoCompleteRequest() 来返回。 (2) 拿到这个 IRP 后什么都不做,直接传递到底层设备,使用IoSkipCurrentIrpS

blackbean的专栏 1366
上一篇: IceSword&Rootkit Unhooker驱动简析
下一篇: Object-Level Deceiving / Detouring
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值