上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 38 下一页
摘要: 在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装`Visual Studio 2013`这款功能强大的程序开发工具,在课件内请双击`ISO`文件并运行内部的`vs_ultimate.exe`安装包,`Visual Studio`的安装非常的简单,您只需要按照提示全部选择默认参数即可,根据机器配置不同可能需要等待一段时间; 阅读全文
posted @ 2023-03-13 14:30 lyshark 阅读(2196) 评论(2) 推荐(0)
摘要: 这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的,在Linux写代码不太舒服,所以最好在Windows上做实验,下载好虚拟机以后还需要下载Nasm汇编器,以及GCC编译器,为了能够使用DD命令实现磁盘拷贝,这里你可以安装windows 10 下面的子系统Ub 阅读全文
posted @ 2023-02-13 16:42 lyshark 阅读(499) 评论(0) 推荐(0)
摘要: 目前我们已进入保护模式,但依然会受到限制,虽然地址空间达到了4GB,但此空间是包括操作系统共享的4GB空间,我们把段基址+段内偏移地址称为线性地址,线性地址是唯一的,只属于某一个进程。在我们机器上即使只有512MB的内存,每个进程自己的内存空间也是4GB,这是指的虚拟内存空间。一直以来我们都是在内存 阅读全文
posted @ 2023-02-13 16:35 lyshark 阅读(504) 评论(0) 推荐(0)
摘要: 操作系统是用来管理与协调硬件工作的,开发一款操作系统有利于理解底层的运转逻辑,本篇内容主要用来理解操作系统是如何启动的,又是如何加载磁盘中的内核的,该系列文章参考各类底层书籍,通过自己的理解并加以叙述,让内容变得更加简单,一目了然,即可学到知识又能提高自己的表述能力。 注释: 该系列笔记是在学习《操 阅读全文
posted @ 2023-02-13 16:26 lyshark 阅读(458) 评论(0) 推荐(0)
摘要: Ajax是异步JavaScript和XML可用于前后端交互,在之前`《Flask 框架:运用Ajax实现数据交互》`简单实现了前后端交互,本章将通过`Ajax`轮询获取后端的数据,前台使用`echart`绘图库进行图形的生成与展示,后台通过`render_template`方法返回一串JSON数据集,前台收到后将其应用到绘图库上,实现动态监控内存利用率的这个功能。 阅读全文
posted @ 2022-11-08 10:44 lyshark 阅读(1078) 评论(0) 推荐(0)
摘要: 在上一篇文章`《驱动开发:内核封装WSK网络通信接口》`中,`LyShark`已经带大家看过了如何通过WSK接口实现套接字通信,但WSK实现的通信是内核与内核模块之间的,而如果需要内核与应用层之间通信则使用TDK会更好一些因为它更接近应用层,本章将使用TDK实现,TDI全称传输驱动接口,其主要负责连接`Socket`和协议驱动,用于实现访问传输层的功能,该接口比`NDIS`更接近于应用层,在早期Win系统中常用于实现过滤防火墙,同样经过封装后也可实现通信功能,本章将运用TDI接口实现驱动与应用层之间传输字符串,结构体,多线程收发等技术。 阅读全文
posted @ 2022-11-03 09:47 lyshark 阅读(1198) 评论(0) 推荐(0)
摘要: 本章`LyShark`将带大家学习如何在内核中使用标准的`Socket`套接字通信接口,我们都知道`Windows`应用层下可直接调用`WinSocket`来实现网络通信,但在内核模式下应用层API接口无法使用,内核模式下有一套专有的`WSK`通信接口,我们对WSK进行封装,让其与应用层调用规范保持一致,并实现内核与内核直接通过`Socket`通信的案例。 阅读全文
posted @ 2022-11-03 09:37 lyshark 阅读(1432) 评论(0) 推荐(0)
摘要: 内核中的`InlineHook`函数挂钩技术其实与应用层完全一致,都是使用劫持执行流并跳转到我们自己的函数上来做处理,唯一的不同只有一个内核`Hook`只针对内核API函数,虽然只针对内核API函数实现挂钩但由于其身处在最底层所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的,对于安全从业者来说学会使用内核挂钩也是很重要的。 阅读全文
posted @ 2022-10-31 17:11 lyshark 阅读(1490) 评论(1) 推荐(0)
摘要: 本章开始`LyShark`将介绍如何在内核中实现`InlineHook`挂钩这门技术,内核挂钩的第一步需要实现一个动态计算汇编指令长度的功能,该功能可以使用`LDE64`这个反汇编引擎,该引擎小巧简单可以直接在驱动中使用,LDE引擎是`BeaEngine`引擎的一部分,后来让`BeatriX`打包成了一个`ShellCode`代码,并可以通过`typedef`动态指针的方式直接调用功能,本章内容作为后期`Hook`挂钩的铺垫部分,独立出来也是因为代码太多太占空间一篇文章写下来或很长影响阅读。 阅读全文
posted @ 2022-10-31 11:01 lyshark 阅读(1208) 评论(0) 推荐(0)
摘要: 通常使用`Windows`系统自带的`任务管理器`可以正常地`结束`掉一般`进程`,而某些`特殊的`进程在应用层很难被结束掉,例如某些`系统核心进程`其权限是在`0环`内核态,但有时我们不得不想办法结束掉这些特殊的进程,当然某些正常进程在特殊状态下也会无法被正常结束,此时使用驱动前行在内核态将其结束掉就变得很有用了,驱动结束进程有多种方法。 阅读全文
posted @ 2022-10-29 10:18 lyshark 阅读(3035) 评论(0) 推荐(0)
摘要: 本篇文章与上一篇文章`《驱动开发:内核注册并监控对象回调》`所使用的方式是一样的都是使用`ObRegisterCallbacks`注册回调事件,只不过上一篇博文中`LyShark`将回调结构体`OB_OPERATION_REGISTRATION`中的`ObjectType`填充为了`PsProcessType`和`PsThreadType`格式从而实现监控进程与线程,本章我们需要将该结构填充为`IoFileObjectType`以此来实现对文件的监控,文件过滤驱动不仅仅可以用来监控文件的打开,还可以用它实现对文件的保护,一旦驱动加载则文件是不可被删除和改动的。 阅读全文
posted @ 2022-10-28 09:08 lyshark 阅读(1214) 评论(0) 推荐(0)
摘要: 在笔者前一篇文章`《驱动开发:内核枚举Registry注册表回调》`中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通过这两个函数可以在不劫持内核API的前提下实现对注册表增加,删除,创建等事件的有效监控,注册表监视通常会通过`CmRegisterCallback`创建监控事件并传入自己的回调函数,与该创建对应的是`CmUnRegisterCallback`当注册表监控结束后可用于注销回调。 阅读全文
posted @ 2022-10-27 10:56 lyshark 阅读(1787) 评论(0) 推荐(0)
摘要: 在笔者上一篇文章`《驱动开发:内核监视LoadImage映像回调》`中`LyShark`简单介绍了如何通过`PsSetLoadImageNotifyRoutine`函数注册回调来`监视驱动`模块的加载,注意我这里用的是`监视`而不是`监控`之所以是监视而不是监控那是因为`PsSetLoadImageNotifyRoutine`无法实现参数控制,而如果我们想要控制特定驱动的加载则需要自己做一些事情来实现,如下`LyShark`将解密如何实现屏蔽特定驱动的加载。 阅读全文
posted @ 2022-10-26 14:24 lyshark 阅读(1482) 评论(0) 推荐(0)
摘要: 在笔者上一篇文章`《驱动开发:内核注册并监控对象回调》`介绍了如何运用`ObRegisterCallbacks`注册`进程与线程`回调,并通过该回调实现了`拦截`指定进行运行的效果,本章`LyShark`将带大家继续探索一个新的回调注册函数,`PsSetLoadImageNotifyRoutine`常用于注册`LoadImage`映像监视,当有模块被系统加载时则可以第一时间获取到加载模块信息,需要注意的是该回调函数内无法进行拦截,如需要拦截则需写入返回指令这部分内容将在下一章进行讲解,本章将主要实现对模块的监视功能。 阅读全文
posted @ 2022-10-25 08:00 lyshark 阅读(1006) 评论(6) 推荐(0)
摘要: 在笔者前面有一篇文章`《驱动开发:断链隐藏驱动程序自身》`通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的驱动隐藏的,总体来说作者的思路是最终寻找到`MiProcessLoaderEntry`的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。 阅读全文
posted @ 2022-10-24 19:55 lyshark 阅读(2477) 评论(0) 推荐(0)
摘要: 在笔者上一篇文章`《驱动开发:内核枚举进程与线程ObCall回调》`简单介绍了如何枚举系统中已经存在的`进程与线程`回调,本章`LyShark`将通过对象回调实现对进程线程的`句柄`监控,在内核中提供了`ObRegisterCallbacks`回调,使用这个内核`回调`函数,可注册一个`对象`回调,不过目前该函数`只能`监控进程与线程句柄操作,通过监控进程或线程句柄,可实现保护指定进程线程不被终止的目的。 阅读全文
posted @ 2022-10-24 09:07 lyshark 阅读(1466) 评论(0) 推荐(0)
摘要: 在前面的文章中`LyShark`一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以`监控进程线程`创建为例,在`Win10`系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原理是创建一个回调事件,当有进程或线程被创建或者注销时,系统会通过回调机制将该进程相关信息优先返回给我们自己的函数待处理结束后再转向系统层。 阅读全文
posted @ 2022-10-23 11:05 lyshark 阅读(1445) 评论(0) 推荐(0)
摘要: 微软在`x64`系统中推出了`DSE`保护机制,DSE全称`(Driver Signature Enforcement)`,该保护机制的核心就是任何驱动程序或者是第三方驱动如果想要在正常模式下被加载则必须要经过微软的认证,当驱动程序被加载到内存时会验证签名的正确性,如果签名不正常则系统会拒绝运行驱动,这种机制也被称为驱动强制签名,该机制的作用是保护系统免受恶意软件的破坏,是提高系统安全性的一种手段。 阅读全文
posted @ 2022-10-22 21:38 lyshark 阅读(1463) 评论(0) 推荐(0)
摘要: 在笔者上一篇文章`《驱动开发:内核枚举Registry注册表回调》`中我们通过特征码定位实现了对注册表回调的枚举,本篇文章`LyShark`将教大家如何枚举系统中的`ProcessObCall`进程回调以及`ThreadObCall`线程回调,之所以放在一起来讲解是因为这两中回调在枚举是都需要使用通用结构体`_OB_CALLBACK`以及`_OBJECT_TYPE`所以放在一起来讲解最好不过。 阅读全文
posted @ 2022-10-22 09:51 lyshark 阅读(1099) 评论(0) 推荐(0)
摘要: 在笔者上一篇文章`《驱动开发:内核枚举LoadImage映像回调》`中`LyShark`教大家实现了枚举系统回调中的`LoadImage`通知消息,本章将实现对`Registry`注册表通知消息的枚举,与`LoadImage`消息不同`Registry`消息不需要解密只要找到`CallbackListHead`消息回调链表头并解析为`_CM_NOTIFY_ENTRY`结构即可实现枚举。 阅读全文
posted @ 2022-10-21 12:54 lyshark 阅读(901) 评论(0) 推荐(0)
摘要: 在笔者之前的文章`《驱动开发:内核特征码搜索函数封装》`中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核`LoadImage`映像回调,在Win64环境下我们可以设置一个`LoadImage`映像加载通告回调,当有新驱动或者DLL被加载时,回调函数就会被调用从而执行我们自己的回调例程,映像回调也存储在数组里,枚举时从数组中读取值之后,需要进行位运算解密得到地址。 阅读全文
posted @ 2022-10-20 19:11 lyshark 阅读(981) 评论(0) 推荐(0)
摘要: 在笔者上一篇文章`《驱动开发:Win10枚举完整SSDT地址表》`实现了针对`SSDT`表的枚举功能,本章继续实现对`SSSDT`表的枚举,ShadowSSDT中文名`影子系统服务描述表`,SSSDT其主要的作用是管理系统中的图形化界面,其`Win32`子系统的内核实现是`Win32k.sys`驱动,属于GUI线程的一部分,其自身没有导出表,枚举`SSSDT`表其与`SSDT`原理基本一致。 阅读全文
posted @ 2022-10-20 08:27 lyshark 阅读(1015) 评论(0) 推荐(0)
摘要: 在前面的博文`《驱动开发:Win10内核枚举SSDT表基址》`中已经教大家如何寻找`SSDT`表基地址了,找到后我们可根据序号获取到指定`SSDT`函数的原始地址,而如果需要输出所有`SSDT`表信息,则可以定义字符串列表,以此循环调用`GetSSDTFunctionAddress()`函数得到,当然在此之间也可以调用系统提供的`MmGetSystemRoutineAddress()`函数顺便把当前地址拿到,并通过循环方式得到完整的SSDT列表。 阅读全文
posted @ 2022-10-19 14:00 lyshark 阅读(1026) 评论(0) 推荐(0)
摘要: 三年前面朝黄土背朝天的我,写了一篇如何在`Windows 7`系统下枚举内核`SSDT`表的文章`《驱动开发:内核读取SSDT表基址》`三年过去了我还是个`单身狗`,开个玩笑,微软的`Windows 10`系统已经覆盖了大多数个人PC终端,以前的方法也该进行迭代更新了,或许在网上你能够找到类似的文章,但我可以百分百肯定都不能用,今天`LyShark`将带大家一起分析`Win10 x64`最新系统`SSDT`表的枚举实现。 阅读全文
posted @ 2022-10-19 10:47 lyshark 阅读(1303) 评论(0) 推荐(1)
摘要: 在笔者上一篇文章`《驱动开发:内核特征码搜索函数封装》`中为了定位特征的方便我们封装实现了一个可以传入数组实现的`SearchSpecialCode`定位函数,该定位函数其实还不能算的上简单,本章`LyShark`将对特征码定位进行简化,让定位变得更简单,并运用定位代码实现扫描内核PE的`.text`代码段,并从代码段中得到某个特征所在内存位置。 阅读全文
posted @ 2022-10-18 16:59 lyshark 阅读(1320) 评论(0) 推荐(1)
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 38 下一页