谈谈NP和HS的通用unhook

实战指南:如何用VT-x/AMD-V实现无痕Hook(附完整代码示例) 本文深入探讨了如何利用Intel VT-x/AMD-V硬件虚拟化技术实现难以被检测的系统级Hook。通过构建轻量级Hypervisor,在Ring -1层级监控并拦截关键指令和内存访问,提供了从环境检测、VMCS配置到基于EPT的内存Hook等完整实战指南,并附有核心代码示例,为安全研究和逆向工程提供底层解决方案。 阅读详情
先简单说以下,NP和HS都hook了以下一些SSDT
什么是SSDT?我不想说那些复杂的理论,希望以简单的事实帮助介绍
先向大S道歉,下文如有冒犯,还请大S原谅

怎么说呢,SSDT本身就是一个地址表,我们当他是个地址簿,也就是写了每个人的地址的记录表
今天,偶想给大S送新年礼物,怎么送到大S家里呢?就得查看地址簿了
上面是这样写的  大S: 游戏达人,外挂高人,破解牛人,脱壳圣人;分身有如月,堀北真希,花泽类,猪的理想;实际上是个阳光宝宝,吃的的白白胖胖的,每天都很开心;家住上海市X区X路X楼,进门左转、左转、再左转,敲门说找S.H.E就行了。
标准SSDT hook的方式就是改变这个地址,HS就是八地址改写成abnlab实验室,如果你照着走就到abnlab实验室了
他们就要检查你了,这么大一箱礼物?是不是带了炸弹阿,识别你的身份阿,但是这样怎么能行呢,经过他们一审核
我的新年礼物岂不是要过年以后才能到了?不行不行
只能先联系大S,大S说家在上海X别墅区X,偶于是就上门了,到了别墅,门卫不让偶进去阿,理由是偶没有邀请函

                        ; MmDeleteTeb(x,x)+Ep ...
.text:004129B3
.text:004129B3 BugCheckParameter1= dword ptr  8
.text:004129B3 arg_4          = dword ptr  0Ch
.text:004129B3
.text:004129B3 ; FUNCTION CHUNK AT .text:00445DD6 SIZE 00000049 BYTES
.text:004129B3
.text:004129B3                mov    edi, edi
.text:004129B5                push    ebp
.text:004129B6                mov    ebp, esp
.text:004129B8                push    esi
.text:004129B9                push    edi
.text:004129BA                mov    eax, large fs:124h
.text:004129C0                mov    edi, [ebp+BugCheckParameter1]
.text:004129C3                mov    esi, eax
.text:004129C5                cmp    [esi+44h], edi
.text:004129C8                jz      short loc_4129FF
.text:004129CA                cmp    byte ptr [esi+165h], 0
.text:004129D1                jnz    loc_445DD6
.text:004129D7                mov    eax, large fs:994h
.text:004129DD                test    eax, eax
.text:004129DF                jnz    loc_445DD6
.text:004129E5                call    ds:__imp__KeRaiseIrqlToDpcLevel@0 ; KeRaiseIrqlToDpcLevel()
.text:004129EB                mov    byte ptr [ebp+BugCheckParameter1], al
.text:004129EE                lea    eax, [esi+14Ch]
.text:004129F4                push    eax
.text:004129F5                push    [ebp+BugCheckParameter1]
.text:004129F8                push    edi
.text:004129F9                push    esi
.text:004129FA                call    _KiAttachProcess@16 ; KiAttachProcess(x,x,x,x)
.text:004129FF
.text:004129FF loc_4129FF:                            ; CODE XREF: KeAttachProcess(x)+15j
.text:004129FF                pop    edi
.text:00412A00                pop    esi
.text:00412A01                pop    ebp
.text:00412A02                retn    4
.text:00412A02 _KeAttachProcess@4 endp

.text:004189DB ; __stdcall KeStackAttachProcess(x, x)
.text:004189DB                public _KeStackAttachProcess@8
.text:004189DB _KeStackAttachProcess@8 proc near      ; CODE XREF: MmAttachSession(x,x)+58p
.text:004189DB                                        ; MiAttachToSecureProcessInSession(x)+43p ...
.text:004189DB
.text:004189DB arg_0          = dword ptr  8
.text:004189DB arg_4          = dword ptr  0Ch
.text:004189DB
.text:004189DB                mov    edi, edi
.text:004189DD                push    ebp
.text:004189DE                mov    ebp, esp
.text:004189E0                push    esi
.text:004189E1                push    edi
.text:004189E2                mov    eax, large fs:124h
.text:004189E8                mov    esi, eax
.text:004189EA                mov    eax, large fs:994h
.text:004189F0                test    eax, eax
.text:004189F2                jnz    loc_445DF1
.text:004189F8                mov    edi, [ebp+arg_0]
.text:004189FB                cmp    [esi+44h], edi
.text:004189FE                jz      short loc_418A34
.text:00418A00                call    ds:__imp__KeRaiseIrqlToDpcLevel@0 ; KeRaiseIrqlToDpcLevel()
.text:00418A06                cmp    byte ptr [esi+165h], 0
.text:00418A0D                mov    byte ptr [ebp+arg_0], al
.text:00418A10                jnz    loc_445E0D
.text:00418A16                lea    eax, [esi+14Ch]
.text:00418A1C                push    eax
.text:00418A1D                push    [ebp+arg_0]
.text:00418A20                push    edi
.text:00418A21                push    esi
.text:00418A22                call    _KiAttachProcess@16 ; KiAttachProcess(x,x,x,x)
.text:00418A27                mov    eax, [ebp+arg_4]
.text:00418A2A                and    dword ptr [eax+10h], 0
.text:00418A2E
.text:00418A2E loc_418A2E:                            ; CODE XREF: KeStackAttachProcess(x,x)+63j
.text:00418A2E                                        ; KeAttachProcess(x)+33467j
.text:00418A2E                pop    edi
.text:00418A2F                pop    esi
.text:00418A30                pop    ebp
.text:00418A31                retn    8

我们有以下办法
1.直接执行函数+5字节处
这样可以,但是有其他问题,如果NP把函数hook改到函数中间或者末尾,我们很难定位
2.执行底层函数KiAttachProcess
KiAttachProcess(EPROCESS *Process,Irql)

.text:00412855 ; __stdcall KiAttachProcess(x, x, x, x)
.text:00412855 _KiAttachProcess@16 proc near          ; CODE XREF: KeAttachProcess(x)+47p
.text:00412855                                        ; KeStackAttachProcess(x,x)+47p ...
.text:00412855
.text:00412855 arg_0          = dword ptr  8
.text:00412855 arg_4          = dword ptr  0Ch
.text:00412855 arg_8          = byte ptr  10h
.text:00412855 arg_C          = dword ptr  14h
.text:00412855
.text:00412855 ; FUNCTION CHUNK AT .text:00445D4F SIZE 0000001E BYTES
.text:00412855 ; FUNCTION CHUNK AT
各种注入方式源码 立即下载

相关推荐

过NP和HS得驱动源代码,编译可立刻装载后使用

过NP和HS得驱动源代码,编译可立刻装载后使用

从零开始编写WindowsAMD-VHook驱动项目_该项目专注于从零构建基于AMD-V虚拟化技术的Windows内核驱动实现硬件级Hook功能支持SVM指令集和嵌套虚拟化.zip

从零开始编写WindowsAMD-VHook驱动项目_该项目专注于从零构建基于AMD-V虚拟化技术的Windows内核驱动实现硬件级Hook功能支持SVM指令集和嵌套虚拟化.zip

海光(hygon)CPU ESXI vSphere 紫屏问题修复记录

海光服务器ESXI 紫屏问题修复

edison202302的博客 3563

Dify Rerank 模型配置全流程解析:从报错定位到代码实现

Dify Rerank 模型配置全流程解析:从报错定位到代码实现

engchina的专栏 4472

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

unique_sir的博客 1万+

WPS集成DeepSeek最新教程,附详细图文,让文案生成更智能

本文将为大家详细介绍如何将 DeepSeek 功能集成到 WPS 中,通过 OfficeAI 插件,你无需进行复杂的本地部署,只需通过官网连接即可快速启用 DeepSeek 强大的 AI 功能。不论是文案生成、翻译校对,还是深度推理、决策支持,DeepSeek 都能为你提供便捷的解决方案。让我们一起来看看如何操作吧!

Java徐师兄的博客 6万+

异步fifo的UVM验证(最终最终版)

更新了refmdl以及scb

qq_44674008的博客 2990

RSA算法详解:万字文章详解RSA的加密与解密

为了彻彻底底的研究明白RSA算法,真的是。。煞(lei)费(si)苦(wo)心(le),首先我希望自己前前后后、彻彻底底的琢磨明白,其次我也希望我把他分享出来以后,大家都能读得懂,这篇文章真的是我迄今为止写的又臭又长的一篇文章了,但是我能保证的是,你读完了以后,绝对不会再问RSA是啥玩意儿了。。

布啦啦 7669

SE模块理解+SE-Resnet模块pytorch实现

文章目录SE模块理解SE实现注意力机制原因SE-resnet网络pytorch实现定义residual定义SE模块 SE模块理解 SENet是Squeeze-and-Excitation Networks的简称,拿到了ImageNet2017分类比赛冠军,其效果得到了认可,其提出的SE模块思想简单,易于实现,并且很容易可以加载到现有的网络模型框架中。SENet主要是学习了channel之间的相关性,筛选出了针对通道的注意力,稍微增加了一点计算量,但是效果比较好。 SE模块广泛应用于去噪,去雨方向,利用SE模

qq_42754919的博客 2万+

手把手教你学Simulink实例:基于Simulink的锂电池管理系统(BMS)仿真

是确保锂电池安全、高效运行的关键组件。BMS 主要功能包括监控电池的状态(如电压、电流、温度)、估算荷电状态(State of Charge, SOC)、健康状态(State of Health, SOH),以及实现电池均衡和保护机制等。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证锂电池管理系统的控制策略。常见的均衡方法包括被动均衡(通过电阻放电)和主动均衡(通过开关电容或变压器)。通过本教程,我们详细介绍了如何使用 Simulink 进行锂电池管理系统的仿真实例。

MHD0815的博客 539

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: ring3文件占坑大法
下一篇: 结束进程
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值