MSRHook与SSDTHook】的更多相关文章

//方式1:MSR Hook #include <ntifs.h> UINT32 oldaddr = ; UINT32 pidtoprotect = ; PCLIENT_ID pid = ; PUINT32 accessmask = ; UINT32 ssdtindex = ; VOID MyKiFastCallEntry(); //#pragma alloc_text(NONE_PAGE,MyKiFastCallEntry) VOID OnHook() { __asm { pushad pu…
解说怎样写Hook过滤函数,比方NewZwOpenProcess.打开进程. 非常多游戏保护都会对这个函数进行Hook. 因为我们没有游戏保护的代码,无法得知游戏公司是怎样编写这个过滤函数. 我看到非常多奇形怪状的Hook过滤函数的写法.看得蛋痛无比. 比方: http://bbs.pediy.com/showthread.php?t=126802 http://bbs.pediy.com/showthread.php? t=126077 第一个bug: 调用这个函数 status = PsLo…
最近在学习Ring0层Hook的一些知识点,很久就写完SSDTHook的代码了,但是一直没有整理成笔记,最近有时间也就整理整理. 介绍: SSDTHook 实质是利用Ntoskrnl.exe 中全局导出的SSDT来进行Hook,SSDT(SystemServiceDescriptorTable,系统服务描述表),为什么要去用到SSDT表呢? 我们看一下ZwOpenProcess实现就明白了.为什么不用Nt系列函数,可以看我之前的文章. kd> u 0x8485acd8 nt!ZwOpenProc…
原博:http://www.cnblogs.com/hongfei/archive/2013/06/18/3142162.html 为了安全起见,Windows XP及其以后的系统将一些重要的内存页设置为只读属性,这样就算有权力访问该表也不能随意对其修改,例如SSDT.IDT等.但这种方法很容易被绕过,我们只要将这些部分修改为可写属性就可以了,不过当我们的事情做完后记得把它们恢复为只读属性,不然会造成一些很难预料到的后果. cr0是系统内的控制寄存器之一.控制寄存器是一些特殊的寄存器,它们可以控…
原理: 用ZwQuerySystemInformation 功能号为11(SystemModuleInformation)  得到所有系统模块的地址 遍历搜索得到ntos模块的基地址 读Ntos模块到System进程空间中 在ntos中找到函数真正地址 将地址转换为ssdt的索引 //X64版本#include "ResumeSSDTHook.h" #define SEC_IMAGE 0x1000000 PVOID __NtosModuleBaseAddress = NULL; ULO…
#include "HookSSDT.h" #include <ntimage.h> #define SEC_IMAGE 0x001000000 ULONG32 __NtOpenProcessIndex = ; PVOID __ServiceTableBase = NULL; ULONG32 __OldNtOpenProcessOffset = ; PVOID __OldNtOpenProcess = NULL; UCHAR __OldCode[] = {}; BOOLEA…
SSDT 的全称是 System Services Descriptor Table,系统服务描述符表.这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来.SSDT 并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址.服务函数个数等.通过修改此表的函数地址可以对常用 Windows 函数及 API 进行 Hook,从而实现对一些关心的系统动作进行过滤.监控的目的.一些 HIPS.防毒软件.系统监控.注册表监控软件往往…
文章目录:                   1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ring0 实现进程保护: 6. 隐藏进程列表和保护进程列表的维护: 7. 小结: 1. 引子 – Demo 实现效果: 上一篇<进程隐藏与进程保护(SSDT Hook 实现)(一)>呢把 SSDT 说得差不多了, 博文地址: http://www.cnblogs.com/BoyXiao/archiv…
很久不写博客了,笔记大多记在电脑上在,以后整理好了再搬运上来吧. 今天记一下“进程内存管理器”这个小程序上遇到的一个问题——内核模式调用Nt*函数. 使用的是内核中的NtQueryVirtualMemory函数,先看一下WinDbg: kd> u NtQueryVirtualMemory ntdll!NtQueryVirtualMemory: 00000000`76e414e0 4c8bd1 mov r10,rcx 00000000`76e414e3 b820000000 mov eax,20h…
CE+OD无法附加游戏进程的破解方法 来吧 别在为这烦恼了 其实看过 windows 核心编程那本书的人都知道 计算机编程领域 那些所谓的游戏保护 真的只是为难菜鸟而已,对于大鸟基本不起作用. 游戏无法就是采用 线程 进程 SSDT 等等这些东西来限制一些如:CE OD ASM32 这些工具调试而已 比如OD要调试一个程序进程 首先做的是2步操作 1.调用系统库中打开进程的API函数 2.创建新线程来调试程序进程. 当如果 一个游戏出现无法OD附加或者调试失败的情况,那么可以先检查下 这2个方面…
---恢复内容开始--- 首先,我要说一件很重要的事,本人文采不好,如果哪里说的尴尬了,那你就尴尬着听吧...... SSDT HOOK最初貌似源于Rookit,但是Rookit之前有没有其他病毒使用,这就不清楚了,总之这个功能很不错,那么什么是SSDT呢,SSDT全称是(System Services Descriptor Table),它将ring3的Win32 API和ring0的内核函数联系起来,SSDT 并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基…
目录 SSDTHOOK 1.SSDTHOOK 原理. 1.x32下的SSDT HOOK 2.SSDT HOOK代码 3.结果 4.总结 SSDTHOOK 1.SSDTHOOK 原理. x32下,直接获取系统描述符表.以及调用号.就可以进行HOOK了. x64下可以设置回调来进行过滤我们想要的功能.当然如果你简单的过一下PatchGuard也可以设置SSDT HOOK. 1.x32下的SSDT HOOK 首先SSDT 我们是可以在windbg下看到的 SSDT表的结构如下: typedef str…
其实 SSDT Hook 的原理是很简单的,我们可以知道在 SSDT 这个数组中呢,保存了系统服务的地址,比如对于 Ring0 下的 NtQuerySystemInformation 这个系统服务的地址,就保存在 KeServiceDescriptorTable[105h] 中(计算公式 address = SSDT首地址+服务号*4) lkd> u 84647e3e nt!NtQuerySystemInformation: 84647e3e 8bff            mov     ed…
也许大家也是研究腾讯游戏的爱好者,对腾讯的游戏都有过这样的体会  例如OD与CE无法进行如以下操作: 无法附加进程, 无法打开进程, 游戏进程被隐藏无法在工具中查看到,内存无法读取代码  内存修改后游戏掉线   无法双机进行调试  出现SX非法模块提示 `其实以上说的这么多限制 都是因为TP保护造成的.其实这些东西研究了很久后,发现其实就是黑色老大常说的APIHOOK这方面. 7%32E1F)%  例如DNF的TP保护就是HOOK了以下几个API函数来禁止上面刚才说的那些:  NtOpenThr…
目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html 调试体系概述 0.什么是自建调试体系? 就是复写windows的调试api,使得调试时进入我们自己定义的领空. 自建调试体系需要写驱动,是一个比较大的项目. 1.为什么要自建调试体系? 过保护 保护程序自身(别人进入自己写的api时,如果要调试自己的进程..) 2.自建调试体系的步骤 2.1-完成中心API(围绕这些api进行复写) DebugActiveProcess(基本) W…