驱动学习
文章平均质量分 70
zhuhuibeishadiao
这个作者很懒,什么都没留下…
展开
-
LLVM编译Windows驱动(goron/obfuscator)
1.LLVM安装:Download LLVM releases(用于编译混淆后替换bin) 设置下环境变量: version见lib\clang下的文件夹名set LLVMInstallDir=C:\Program Files\LLVM set LLVMToolsVersion=12.0.0 rem LLVMToolsVersion = name of the last subfolder in the path C:\Program Files\L...原创 2021-08-25 23:19:52 · 4395 阅读 · 3 评论 -
在>=win10 17134枚举驱动的另一种方法
首先枚举驱动的方法很多,这里不做过多介绍,此文仅简单说明x64系统,x86结构和偏移需重新收集.在17134版本中,MI_SYSTEM_IMAGE_STATE结构新增了一个成员 即以下的最后一个成员ImageTree,此树保存驱动LdrSection题外话:MI_SYSTEM_IMAGE_STATE是_MI_SYSTEM_INFORMATION的子结构,_MI_SYSTEM_INFORMATION是nt!MiStatent!_MI_SYSTEM_IMAGE_STATE +0x000 Fi原创 2021-01-16 05:47:13 · 1246 阅读 · 2 评论 -
[记录]开始进行 64 位 Windows 系统编程之前需要了解的所有信息
https://www.microsoft.com/china/MSDN/library/Windev/64bit/issuesx64.mspx?mfr=true转载 2016-05-02 05:26:53 · 648 阅读 · 0 评论 -
使用NtUserBuildHwndList遍历窗口_win7x64
在我的上一篇文章中讲到http://blog.csdn.net/zhuhuibeishadiao/article/details/51604788枚举窗口 使用EnumWinodws是调用内核中NtUserBuildHwndList 这个函数最后2个参数必须是R3的地址不然会返回0xC0000008错误,并且如果使用控制台窗口测试,这时ETHREAD下的win32Thr原创 2016-06-08 22:15:59 · 5849 阅读 · 1 评论 -
[持续更新] 编程札礼
写这篇文章的起因是 参加了一个公司的笔试 发现考的都是很细节的东西 所以在学习中遇到这样的问题就记录一下.1.指针在申请/释放后置NULL 防止野指针;2. delete一个不是new出来的地址会导致堆破坏;3.WIN7上系统自带程序 入regedit或calc taskmgr 弹出错误对话框的函数是DialogBoxIndrectParamW;4.务必检测内存分布失败情况mall原创 2016-03-31 16:26:28 · 902 阅读 · 0 评论 -
使用EPROCESS下Win32Process枚举进程
此方法硬编码很多!!!EPROCESS下win32Process其实是一个tagPROCESSINFO 结构 typedef struct _tagPROCESSINFO // 55 elements, 0x300 bytes (sizeof) {原创 2016-06-08 22:50:33 · 3978 阅读 · 7 评论 -
检测当前进程是否被挂起
KTHREAD的结构: +0x16c SuspendApc : _KAPC +0x19c SuspendSemaphore : _KSEMAPHORE +0x1b0 ThreadListEntry : _LIST_ENTRY +0x1b8 FreezeCount : Char +0x1b9 SuspendCount : Char原创 2016-06-04 23:37:20 · 7695 阅读 · 0 评论 -
更安全的MmIsAddressValid
代码来着开源工具CheatEngine在初始化是先调用InitMemSafe()然后就可以使用IsAddressSafe来代替MmIsAddressValid了int PTESize;UINT_PTR PAGE_SIZE_LARGE;UINT_PTR MAX_PDE_POS;UINT_PTR MAX_PTE_POS;struct PTEStruct{ un原创 2016-06-05 01:48:07 · 4290 阅读 · 0 评论 -
x64通过PspCidTable遍历进程
PspCidTable可以在PsLookupProcessByProcessId下寻找我这硬编码了 只适用于win7 x64 其它版本需要自己改下特征码#include extern "C" NTKERNELAPI PVOID NTAPI ObGetObjectType( IN PVOID pObject ); extern "C" N原创 2016-06-05 03:10:21 · 2863 阅读 · 1 评论 -
勘误 win7x64下对OpenProcedure的ObjectHook
那个时候刚接触ObjectHook我对进程对象下的OpenProcedure进行HOOK 保护程序typedef LONG32 (NEAR CDECL FUNCT_005B_0FC1_OpenProcedure) (enum _OB_OPEN_REASON, CHAR, UINT64 /*struct _EPROCESS**/, UINT64 /*VOID**/, UINT64 /*ULONG原创 2016-06-10 17:22:08 · 2765 阅读 · 0 评论 -
VT系列:将代码移植到多核模式
本文只是学习此视频后的一些总结 不当之处还请指出视频作者:小宝来了视频连接:http://bbs.pediy.com/showthread.php?t=211973 遇到的问题大概为以下4个1. 如何让代码执行在指定CPU2. 虚拟机内存重叠问题3. 保存虚拟机寄存器结构内存重叠问题4. IRQL、多线程问题5. 如果获取当前代码执行的CPU6. 有原创 2016-09-23 10:33:25 · 2439 阅读 · 2 评论 -
多线程 以及多线程安全
线程的运行级别(IRQL)中断是指在CPU接到这个请求后停止手上的工作来处理我们的工作(指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程)中断优先级是指为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。引用来自http://blog.csdn.net/fengkuan原创 2016-04-04 01:51:55 · 1854 阅读 · 1 评论 -
ARK之杀进程这点小事-有线程补充
A.NtTerminateProcessB.涂改内存 //内存清0C.卸载模块 //free ntdll.dll或主模块D.窗口攻击 //发close quit 洪水 或 SetParant这里演示SetParant R3 如果要这么做的话最好在内核中使用更底层的函数这里提一下枚举窗口 使用EnumWinodws是调用内核中NtUserBuildHwndList 这个函数原创 2016-06-07 16:49:23 · 3125 阅读 · 0 评论 -
再次深入理解IRP
过滤驱动与IRP处理方式我们关系这个IRP的处理结果 就用这个a.Pending完成例程IoCopyCurrentIrpStackLocationToNext +完成例程Pending完成例程KEVENT event;KeInitializeEvent(&event, NotificationEvent, FALSE);IoCopyCurrentIrpStackLocat原创 2016-04-18 13:47:59 · 1388 阅读 · 0 评论 -
废掉Minifilter和Sfilter 支持x64
在学习Minifilter和sfilter后明白了一点,这两个文件过滤都是attach到设备上那么我们废掉的方法就很明显了,将文件系统上attach的所有设备清零怎么得到attach的所有设备呢?我们通过ObReferenceObjectByName或得到文件驱动对象地址得到的对象中有一个成员DeviceObject就得到了文件设备对象这里还有一个链表,保存着下一个对象原创 2016-05-03 03:19:44 · 3579 阅读 · 2 评论 -
R3全盘毁坏数据
打开物理磁盘或者打开分区符号(这个需要循环)然后使用下发IOCTL_DISK_DELETE_DRIVE_LAYOUT请求,删除分区表一般杀软也不会阻止不要在真机中实验!代码:#include#include#includeint main(){ DWORD lpBytesReturned; OVERLAPPED lpOverlapped={0}原创 2016-05-03 03:47:33 · 849 阅读 · 1 评论 -
内核提权,任意地址写任意数据/固定数据模型
实验环境 xp sp3此实验将一个不常用的内核函数置0,然后R3申请了0地址的指针,将shellcode拷到此内存,内核并没有做ProbeForRead /Write检查直接对传入的数据进行了修改,造成了任意地址写任意数据漏洞 ,提权了R3程序为system权限R3代码主要获得一个函数的地址,将函数地址传入R0 R0将此函数地址置0,然后R3申请了一个0地址,将shel原创 2016-05-14 02:27:27 · 4886 阅读 · 2 评论 -
内核枚举进程总结
我知道的有三种方法这里的第三种和第二种是一样的 隐藏进程也可以在这么做手脚但需要注意多线程,在操作前,理应加锁可以参考这篇文章http://blog.csdn.net/zfdyq0/article/details/418137471.暴力枚举进程 通过PsLookupProcessByProcessId获得EPROCESS第一个参数我们使用循环 填入0~6553原创 2016-05-02 03:17:05 · 3609 阅读 · 0 评论 -
无硬编码获取所有对象类型地址
NTKERNELAPI PVOID NTAPIObGetObjectType( IN PVOID pObject );void GetObjectTypeWin7x86(){ BOOLEAN i = 2; ULONG j= 2; ULONG64 ObjectType; // while (ObGetObjectType(&i+0xC)) {原创 2016-05-02 05:07:01 · 2027 阅读 · 0 评论 -
Minifilter过滤,功能实现对驱动目录的监控,包括创建,重命名,删除并实现hips
注意下:我的这套过滤只能用在nt6系统上原因是使用一个nt6上才有的函数见函数PsGetProcessFullName其实没必要自己来写获取全路径因为minifilter已经给我们提供了获取全路径的函数FltGetFileNameInformation我就不改了,哈哈说说遇到的问题吧在监控创建的时候,我在卸载post中的,我拒绝后,在弹窗,2-3原创 2016-05-02 02:29:48 · 14983 阅读 · 1 评论 -
SFilter框架理解
控制设备(接受我们自己的客服端)----过滤设备(接受别的进程的IRP) IRP栈每层对应的设备不同 绑定后返回的:最顶层的设备 看图 为什么返回最顶层,当我们的设备处理好后要发给下面的 而下面的第一个就是最顶层的设备 看图理解过滤分层驱动中再加一层而不影响它的上下层,以过滤它们之间的数据,对数据或行为进行安全控制。过滤是通过设备绑定实现的。图:原创 2016-04-18 13:27:49 · 8122 阅读 · 0 评论 -
ARK之进程枚举
A.进程1.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS) / Process32First / Process32Nextvoid main(){HANDLE hSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );if( hSnap == INVALID_HANDLE_VALUE原创 2016-06-05 21:49:33 · 2310 阅读 · 0 评论 -
VT系列一:VT简述
本文只是学习此视频后的一些总结 不当之处还请指出视频作者:小宝来了视频连接:http://bbs.pediy.com/showthread.php?t=211973 约定:本文中出现的名词虚拟机 客户机 GUEST 都是被监控的操作系统或应用程序宿主机 HOST Hypervisor都是指监控虚拟机的“原”操作系统VMM:当客户机发生退出事件时,进入的就是VMM原创 2016-09-08 13:05:58 · 4835 阅读 · 1 评论 -
VT系列二:检测是否支持虚拟化
本文只是学习此视频后的一些总结 不当之处还请指出视频作者:小宝来了视频连接:http://bbs.pediy.com/showthread.php?t=211973 约定:本文中出现的名词虚拟机 客户机 GUEST 都是被监控的操作系统或应用程序宿主机 HOST Hypervisor都是指监控虚拟机的“原”操作系统VMM:当客户机原创 2016-09-08 13:13:11 · 3868 阅读 · 0 评论 -
x64伪装进程路径 过PCHunter xxx ARK
https://github.com/ZhuHuiBeiShaDiao/PathModification支持 x64下(win7 ~ win10 all) 对x64进程的路径修改另外一种实现方法就是 傀儡进程原创 2018-07-18 11:20:21 · 5504 阅读 · 13 评论 -
CreateProcessNotifyEx阻止进程创建最简方法,不杀进程,不弹窗【备份】
设置CreateStatus为STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICYhttps://blog.csdn.net/a907763895/article/details/52863952转载 2018-08-26 12:35:09 · 2886 阅读 · 0 评论 -
MapDriverToMemory
从blackbone中抄出来的一个小功能第二个驱动 不能加壳 并且必须关闭GS检查。VS-C/C++-代码生成-安全检查-禁用安全检查第二个驱动原是一个无驱动对象的,代码中加入了老V的创建驱动对象代码,给第二个驱动了一个“虚无”的驱动对象https://github.com/ZhuHuiBeiShaDiao/DriverMaperps:请无视DriverEntry中蛋疼的获取路...原创 2018-08-26 13:28:27 · 1586 阅读 · 0 评论 -
总结一下ObRegisterCallbacks绕过
1.物理Section Map到用户空间 解析物理地址操作内存2.修改PsProcessType/PsThreadType下_OBJECT_TYPE_INITIALIZER下RetainAccess为0x1fffff无视抹权限 原理见ObpPreInterceptHandleCreateObpPreInterceptHandleCreate(PVOID Object, unsigned _...原创 2018-10-18 12:50:36 · 5385 阅读 · 1 评论 -
内核回调中获取设备,路径,文件信息蓝屏问题
最近在写一个类似procmon的框架,写完跑了一两天没有什么问题,直到windows defender的一个进程起来之后,过一会驱动必蓝屏于是很郁闷,看堆栈都是空的,起初以为是栈被破坏了,但是代码里面没有递归等等,基本大的变量都申请了内存,看dump说是irql过高,又看了代码,我习惯都是用非分页内存,所以不存在访问内存的问题,并且代码中都是在psl级别执行的,基本都排除了,异常点是ObpQu...原创 2019-02-12 17:30:41 · 1518 阅读 · 1 评论 -
exploit 远程桌面服务驱动
一个类似ms11-011的漏洞,不过需要pass uac。不是CVE-2019-0708可以实现任意地址读写。termdd.sys(support kb4499175)也就是支持CVE-2019-0708后的补丁.不怎么关注漏洞方面,几年前无意得到的洞.当时用来pass x64驱动签名检验.快拦在硬盘了,不知道属不属于0day,查过相关资料,没有找到,也没有CVE编号....原创 2019-05-23 22:26:45 · 821 阅读 · 2 评论 -
win10 tagWnd部分成员逆向(窗口隐藏,窗口保护)
题外话:窗口隐藏:效果就是spy++ 彗星小助手发现不了窗口,但是窗口确实存在.(副作用:不透明窗口,鼠标不穿透窗口白屏或无反应,进程退出蓝屏(如果恢复了就不会))一大波黑产在路上了???怎么隐藏呢?跟断链一致,前一个的下一个等于当前的下一个,后一个的前一个等于当前的前一个.已经说的很明白了!另外在17763及以上,在你内核修改是木有效果的哦.具体可以自己研究一下应用层的tagWn...原创 2019-06-04 10:53:11 · 6087 阅读 · 1 评论 -
浅谈Windows下的隐藏
just a ppt针对windows注册表,文件,进程,DLL/SYS,窗口的隐藏方法总结部分代码在ppt中提供了下载地址链接: https://pan.baidu.com/s/1OlmpSxukgAIqEoQYTuDsTQ 提取码: 5fu5...原创 2019-09-20 09:18:19 · 1414 阅读 · 6 评论 -
minifilter/sfilter较为精确的判断是打开还是新建操作
写这篇文章的原因是看到一些代码判断不准确,导致效果很奇怪很奇怪,当时我哭晕在WC.见过奇奇怪怪的判断,很无语.于是有了这篇文章.createfile可以新建文件和打开文件这个不多说了在文件过滤系统中IRP_MJ_CREATE怎么判断是open还是create无论是minifilter还是sfilter,判断基本都相同,只不过sfilter在完成例程,min...原创 2019-09-23 16:45:14 · 2374 阅读 · 1 评论 -
Win10 PatchGuard静态破解更新
前段时间有朋友问http://blog.csdn.net/zhuhuibeishadiao/article/details/54410029这个开源的还是会蓝屏具体我没试,下面说下通杀的破解方法KiFilterFiberContext 下第三个call(没有符号) 内部48 8b c4 ->>b0 1 c3即头部改b0 01 mov al,1c3 retn原创 2018-01-12 10:44:12 · 6200 阅读 · 7 评论 -
【半原创】Irp占坑保护文件不被删除
Irp操作出自125096的博客http://blog.csdn.net/qq125096885/article/details/53033896这里提下 博主的例子中使用irpclose文件对象,这可能会造成蓝屏。见链接:https://bbs.pediy.com/thread-215269.htm所以这里把IrpCloseFile改为ObDereferenceObj转载 2017-09-21 13:23:29 · 2190 阅读 · 1 评论 -
Win7 x64 Vad遍历模块
Win7x64 Vad遍历模块原创 2016-12-06 16:46:18 · 5771 阅读 · 1 评论 -
VT系列:VMCS表填写
一共有5章表要填 分别是:1.Guest State Area (客户机) 填写虚拟机相关的信息2.Host State Area(宿主机) 填写真实机的相关信息3.VM-Execution Control Fields(虚拟机运行控制域) 定义了我们的VT能拦截什么东西 指令 异常 操作。4.VMEntry Control Fields(VMENTRY行为控制域) 写死的 只有x原创 2016-09-08 13:54:29 · 3584 阅读 · 1 评论 -
从FILE_OBJECT里获取完整NT路径和DOS路径
原作者:Tesla.Angela链接:http://www.m5home.com/bbs/thread-8896-1-1.html众所周知在FILE_OBJECT.FileName的路径是不带盘符的,于是网上各种QUICK AND DIRTY的代码就干脆直接从FileName里取得“无头路径”。这种恶心的做法自然是要不得的,现在分享一下从这个结构体里取完整路径的方法。区区40行代码(还转载 2016-11-29 20:02:52 · 4395 阅读 · 0 评论 -
获取SSDT,SSSDT原始函数地址
SSDT当前函数地址 = KiSeviceTable + *(KiServiceTalbe + index * 4);TableRVA = KiSeviceTable - 内核真实加载地址 ;ImageBase = 0x140000000;(理想加载地址)ImageKiSeviceTable = ImageBase + TableRVA;LoadDLLBase = LoadLi原创 2016-05-02 04:38:36 · 4552 阅读 · 0 评论 -
攻破Win7~Win10 PatchGuard(KPP & DSE)【支持Win10 TH1/TH2/RS1/RS2】【WIN64内核越狱】
最新状态:已放弃Win7.Win8,8.1的静态Patch,专注于Win10 PatchGuard.1.重启内核越狱,支持Win7~Win10Win10 10.0.10240.0 ~ Win10.10.0.14939.693(2017.1.11更新至693最新版)Win8 6.3.9600.18289 ~ 6.3.9600.18378(已停止更新)Win7 6.1.7601.177原创 2017-01-13 16:41:56 · 13879 阅读 · 7 评论