会员
周边
新闻
博问
闪存
赞助商
YouClaw
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
LYSHARK
首页
联系
订阅
管理
上一页
1
···
15
16
17
18
19
20
21
22
23
···
38
下一页
2022年10月18日
驱动开发:内核枚举Minifilter微过滤驱动
摘要: Minifilter 是一种文件过滤驱动,该驱动简称为微过滤驱动,相对于传统的`sfilter`文件过滤驱动来说,微过滤驱动编写时更简单,其不需要考虑底层RIP如何派发且无需要考虑兼容性问题,微过滤驱动使用过滤管理器`FilterManager`提供接口,由于提供了管理结构以及一系列管理API函数,所以枚举过滤驱动将变得十分容易。
阅读全文
posted @ 2022-10-18 08:22 lyshark
阅读(1890)
评论(0)
推荐(0)
2022年10月17日
驱动开发:内核特征码搜索函数封装
摘要: 在前面的系列教程如`《驱动开发:内核枚举DpcTimer定时器》`或者`《驱动开发:内核枚举IoTimer定时器》`里面`LyShark`大量使用了`特征码定位`这一方法来寻找符合条件的`汇编指令`集,总体来说这种方式只能定位特征较小的指令如果特征值扩展到5位以上那么就需要写很多无用的代码,本章内容中将重点分析,并实现一个`通用`特征定位函数。
阅读全文
posted @ 2022-10-17 11:40 lyshark
阅读(1273)
评论(0)
推荐(0)
2022年10月16日
驱动开发:内核枚举PspCidTable句柄表
摘要: 在上一篇文章`《驱动开发:内核枚举DpcTimer定时器》`中我们通过枚举特征码的方式找到了`DPC`定时器基址并输出了内核中存在的定时器列表,本章将学习如何通过特征码定位的方式寻找`Windows 10`系统下面的`PspCidTable`内核句柄表地址。
阅读全文
posted @ 2022-10-16 16:05 lyshark
阅读(1185)
评论(0)
推荐(0)
驱动开发:内核枚举DpcTimer定时器
摘要: 在笔者上一篇文章`《驱动开发:内核枚举IoTimer定时器》`中我们通过`IoInitializeTimer`这个API函数为跳板,向下扫描特征码获取到了`IopTimerQueueHead`也就是IO定时器的队列头,本章学习的枚举DPC定时器依然使用特征码扫描,唯一不同的是在新版系统中DPC是被异或加密的,想要找到正确的地址,只是需要在找到DPC表头时进行解密操作即可。
阅读全文
posted @ 2022-10-16 04:50 lyshark
阅读(1245)
评论(0)
推荐(0)
2022年10月14日
驱动开发:如何枚举所有SSDT表地址
摘要: 在前面的博文《驱动开发:Win10内核枚举SSDT表基址》中已经教大家如何寻找SSDT表基地址了,找到后我们可根据序号获取到指定SSDT函数的原始地址,而如果需要输出所有SSDT表信息,则可以定义字符串列表,以此循环调用GetSSDTFunctionAddress()函数得到,当然在此之间也可以调用
阅读全文
posted @ 2022-10-14 13:05 lyshark
阅读(415)
评论(0)
推荐(0)
驱动开发:内核枚举IoTimer定时器
摘要: 今天继续分享内核枚举系列知识,这次我们来学习如何通过代码的方式枚举内核`IoTimer`定时器,内核定时器其实就是在内核中实现的时钟,该定时器的枚举非常简单,因为在`IoInitializeTimer`初始化部分就可以找到`IopTimerQueueHead`地址,该变量内存储的就是定时器的链表头部。枚举IO定时器的案例并不多见,即便有也是无法使用过时的,此教程学到肯定就是赚到了。
阅读全文
posted @ 2022-10-14 11:24 lyshark
阅读(856)
评论(3)
推荐(0)
2022年10月13日
驱动开发:内核遍历进程VAD结构体
摘要: 在上一篇文章`《驱动开发:内核中实现Dump进程转储》`中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍`VAD`结构,该结构的全程是`Virtual Address Descriptor`即`虚拟地址描述符`,VAD是一个`AVL`自`平衡二叉树`,树的每一个节点代表一段虚拟地址空间。程序中的代码段,数据段,堆段都会各种占用一个或多个`VAD`节点,由一个`MMVAD`结构完整描述。
阅读全文
posted @ 2022-10-13 13:30 lyshark
阅读(1509)
评论(0)
推荐(0)
2022年10月11日
驱动开发:内核中实现Dump进程转储
摘要: 多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导出,从而更好的对样本进行分析,当然某些加密壳可能无效但绝大多数情况下是可以被转存的。
阅读全文
posted @ 2022-10-11 18:34 lyshark
阅读(1255)
评论(0)
推荐(0)
驱动开发:内核R3与R0内存映射拷贝
摘要: 在上一篇博文`《驱动开发:内核通过PEB得到进程参数》`中我们通过使用`KeStackAttachProcess`附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离,此类功能的实现依附于MDL内存映射机制实现。
阅读全文
posted @ 2022-10-11 11:47 lyshark
阅读(1691)
评论(2)
推荐(2)
2022年10月10日
驱动开发:内核通过PEB得到进程参数
摘要: PEB结构`(Process Envirorment Block Structure)`其中文名是进程环境块信息,进程环境块内部包含了进程运行的详细参数信息,每一个进程在运行后都会存在一个特有的PEB结构,通过附加进程并遍历这段结构即可得到非常多的有用信息。
阅读全文
posted @ 2022-10-10 16:32 lyshark
阅读(1353)
评论(0)
推荐(0)
2022年10月9日
驱动开发:内核取应用层模块基地址
摘要: 在上一篇文章`《驱动开发:内核取ntoskrnl模块基地址》`中我们通过调用内核API函数获取到了内核进程`ntoskrnl.exe`的基址,当在某些场景中,我们不仅需要得到内核的基地址,也需要得到特定进程内某个模块的基地址,显然上篇文章中的方法是做不到的,本篇文章将实现内核层读取32位应用层中特定进程模块基址功能。
阅读全文
posted @ 2022-10-09 14:33 lyshark
阅读(1230)
评论(0)
推荐(0)
驱动开发:内核取ntoskrnl模块基地址
摘要: 模块是程序加载时被动态装载的,模块在装载后其存在于内存中同样存在一个内存基址,当我们需要操作这个模块时,通常第一步就是要得到该模块的内存基址,模块分为用户模块和内核模块,这里的用户模块指的是应用层进程运行后加载的模块,内核模块指的是内核中特定模块地址,本篇文章将实现一个获取驱动`ntoskrnl.exe`的基地址以及长度,此功能是驱动开发中尤其是安全软件开发中必不可少的一个功能。
阅读全文
posted @ 2022-10-09 09:58 lyshark
阅读(1677)
评论(6)
推荐(0)
2022年10月8日
驱动开发:判断自身是否加载成功
摘要: 在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态,这个功能看似没啥用实际上在某些特殊场景中还是需要的,如下代码实现了判断当前驱动是否加载成功,如果加载成功, 则输出该驱动的详细路径信息。
阅读全文
posted @ 2022-10-08 20:28 lyshark
阅读(1053)
评论(0)
推荐(0)
2022年10月6日
Flask 框架:运用SocketIO实现WebSSH
摘要: Flask 框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个`flask_socketio`库该库可以直接通过pip仓库安装,如下内容将重点简述SocketIO库在Flask框架中是如何被应用的,最终实现WebSSH命令行终端功能,其可用于在Web浏览器内实现SSH命令行执行。
阅读全文
posted @ 2022-10-06 18:28 lyshark
阅读(1276)
评论(1)
推荐(0)
2022年10月5日
Flask 框架:运用Echarts绘制图形
摘要: echarts是百度推出的一款开源的基于`JavaScript`的可视化图表库,该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与`Flask`结合,前台使用`echart`绘图库进行图形的生成与展示,后台则是Flask通过`render_template`方法返回一串JSON数据集,前台收到后将其应用到绘图库上,实现动态展示Web服务日志状态功能。如下案例中将分别展示运用该绘图库如何绘制(饼状图,柱状图,折线图)这三种最基本的图形。
阅读全文
posted @ 2022-10-05 18:26 lyshark
阅读(1356)
评论(0)
推荐(2)
2022年10月4日
Python 实现Tracert追踪TTL值
摘要: Tracert 命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以获取到目标主机的IP地址,如下我们通过scapy构造一个路由追踪工具并实现一次追踪。
阅读全文
posted @ 2022-10-04 15:42 lyshark
阅读(1054)
评论(0)
推荐(0)
Python 检测PE所启用保护方式
摘要: Python 通过pywin32模块调用WindowsAPI接口,实现对特定进程加载模块的枚举输出并检测该PE程序模块所启用的保护方式,此处枚举输出的是当前正在运行进程所加载模块的DLL模块信息,需要用户传入进程PID才可实现输出。
阅读全文
posted @ 2022-10-04 14:47 lyshark
阅读(465)
评论(0)
推荐(0)
2022年10月3日
驱动开发:应用DeviceIoContro开发模板
摘要: 内核中执行代码后需要将结果动态显示给应用层的用户,DeviceIoControl 是直接发送控制代码到指定的设备驱动程序,使相应的移动设备以执行相应的操作的函数,如下代码是一个经典的驱动开发模板框架,在开发经典驱动时会用到的一个通用案例。
阅读全文
posted @ 2022-10-03 20:11 lyshark
阅读(800)
评论(0)
推荐(1)
驱动开发:通过Async反向与内核通信
摘要: 在前几篇文章中给大家具体解释了驱动与应用层之间正向通信的一些经典案例,本章将继续学习驱动通信,不过这次我们学习的是通过运用`Async`异步模式实现的反向通信,反向通信机制在开发中时常被用到,例如一个杀毒软件如果监控到有异常进程运行或有异常注册表被改写后,该驱动需要主动的通知应用层进程让其知道,这就需要用到驱动反向通信的相关知识点,如下将循序渐进的实现一个反向通信案例。
阅读全文
posted @ 2022-10-03 15:47 lyshark
阅读(1150)
评论(0)
推荐(0)
2022年10月1日
驱动通信:通过PIPE管道与内核层通信
摘要: 在本人前一篇博文《驱动开发:通过ReadFile与内核层通信》详细介绍了如何使用应用层ReadFile系列函数实现内核通信,本篇将继续延申这个知识点,介绍利用PIPE命名管道实现应用层与内核层之间的多次通信方法。 什么是PIPE管道? 在Windows编程中,数据重定向需要用到管道PIPE,管道是一
阅读全文
posted @ 2022-10-01 08:33 lyshark
阅读(393)
评论(0)
推荐(0)
驱动开发:通过PIPE管道与内核层通信
摘要: 在本人前一篇博文`《驱动开发:通过ReadFile与内核层通信》`详细介绍了如何使用应用层`ReadFile`系列函数实现内核通信,本篇将继续延申这个知识点,介绍利用`PIPE`命名管道实现应用层与内核层之间的多次通信方法。
阅读全文
posted @ 2022-10-01 08:33 lyshark
阅读(1303)
评论(0)
推荐(0)
2022年9月30日
驱动开发:通过ReadFile与内核层通信
摘要: 驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如下先来介绍通过ReadFile系列函数实现的通信模式。
阅读全文
posted @ 2022-09-30 16:23 lyshark
阅读(1242)
评论(0)
推荐(4)
ImGUI 1.87 绘制D3D外部菜单
摘要: ImGUI 它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,该框架通常会配合特定的D3Dx9等图形开发工具包一起使用,ImGUI常用来实现进程内的菜单功能,而有些辅助开发作者也会使用该框架开发菜单页面,总体来说这是一个很不错的绘图库,如下将公开新版ImGUI如何实现绘制外部菜单的功能。
阅读全文
posted @ 2022-09-30 09:54 lyshark
阅读(3301)
评论(0)
推荐(4)
2022年9月29日
驱动开发:内核字符串拷贝与比较
摘要: 在上一篇文章`《驱动开发:内核字符串转换方法》`中简单介绍了内核是如何使用字符串以及字符串之间的转换方法,本章将继续探索字符串的拷贝与比较,与应用层不同内核字符串拷贝与比较也需要使用内核专用的API函数,字符串的拷贝往往伴随有内核内存分配,我们将首先简单介绍内核如何分配堆空间,然后再以此为契机简介字符串的拷贝与比较。
阅读全文
posted @ 2022-09-29 13:21 lyshark
阅读(1410)
评论(0)
推荐(1)
2022年9月28日
驱动开发:内核字符串转换方法
摘要: 在内核编程中字符串有两种格式`ANSI_STRING`与`UNICODE_STRING`,这两种格式是微软推出的安全版本的字符串结构体,也是微软推荐使用的格式,通常情况下`ANSI_STRING`代表的类型是`char *`也就是ANSI多字节模式的字符串,而`UNICODE_STRING`则代表的是`wchar*`也就是UNCODE类型的字符,如下文章将介绍这两种字符格式在内核中是如何转换的。
阅读全文
posted @ 2022-09-28 20:33 lyshark
阅读(1985)
评论(8)
推荐(0)
上一页
1
···
15
16
17
18
19
20
21
22
23
···
38
下一页
公告