HOOK技术
文章平均质量分 79
cosmoslife
多媒体编程、网络编程、系统编程、网络安全编程
展开
-
USER32!__ClientLoadLibrary定位
保护软件一般都直接用新的函数指针替换CallBack表中__ClientLoadLibrary对应的位置对于Ring3的应用程序,fs:[0]的地址指向的是TEB结构,这个结构的开头是一个NT_TIB结构,NT_TIB结构的0x18偏移处是一个Self指针,指向这个结构自身,也就是指向TEB结构的开头。TEB结构的0x30偏移是一个指向PEB的指针。PEB又是一个结构,这个结构的0x2转载 2015-03-09 14:23:18 · 1559 阅读 · 0 评论 -
Hook SSDT NtOpenProcess的完整代码
以下是通过Hook SSDT NtOpenProcess保护进程的完整代码,对喜欢HOOK的初学者帮助很大驱动代码Protect.C:#include "ntddk.h"#define NT_DEVICE_NAME L"\\Device\\ProtectProcess"#define DOS_DEVICE_NAME L"\\DosDev转载 2012-06-28 12:27:16 · 1962 阅读 · 1 评论 -
必备绝技——hook大法( 中 )
详细过程】 这次主要说说核心层的hook。包括SSDT-hook,IDT-hook,sysenter-hook。欢迎讨论,指正!内核层需要驱动,有这方面的基础最好,如果不会,了解下其中的思路也可以的。 II. SSDT-hook,IDT-hook,sysenter-hook 一.SSDT-hook (一)一般思路: 1.先来了解一下,什么是SSDT转载 2012-06-28 14:07:13 · 2138 阅读 · 0 评论 -
【原创】【申请加精】hookQQ-API拦截QQ聊天记录-有图有码
标 题: 【原创】【申请加精】hookQQ-API拦截QQ聊天记录-有图有码作 者: yinchengak时 间: 2012-06-13,20:37:56链 接: http://bbs.pediy.com/showthread.php?t=152085大家先对QQ采用ollydbg调试QQ,分析出相关QQ内部函数//?GetMsgTime@Msg@Util@@Y转载 2012-07-09 01:22:42 · 5472 阅读 · 2 评论 -
键盘过滤驱动(学习)
////// @file ps2intcap.c/// @author wowocock,crazy_chu/// @date 2009-1-27///#include // 这一句存在,则本程序编译为替换INT0x93的做法。如果// 不存在,则为IOAPIC重定位做法。// #define BUILD_FOR_I原创 2012-06-25 22:45:25 · 635 阅读 · 0 评论 -
Rootkit的学习与研究
Rootkit的学习与研究 Rootkit是什么?估计很多朋友并不明白,简单的说,Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。技术是双刃剑,我们研究它的目的在于转载 2012-07-09 01:27:49 · 822 阅读 · 0 评论 -
【原创】为你的驱动挂上外挂 - 嵌入反汇编引擎
标 题: 【原创】为你的驱动挂上外挂 - 嵌入反汇编引擎作 者: thisIs时 间: 2011-09-25,22:11:03链 接: http://bbs.pediy.com/showthread.php?t=140587首先来看两段IDA中的代码上面的图是win xp下 NtOpenProcess 中的代码片段下面的图是win 7下 PsOp转载 2012-07-09 01:24:09 · 3342 阅读 · 0 评论 -
HOOK SSDT适合初学者的原理性文章
HOOK SSDT适合初学者的原理性文章2008-12-17 19:38********************************************************标题:【原创】SSDT Hook的妙用-对抗ring0 inline hook **作者:堕落天才转载 2012-06-21 00:09:50 · 702 阅读 · 0 评论 -
RING0 与 RING3之间的简单交互
叫简单交互的原因是,只从ring3传给ring0一个变量的值,不涉及到锁事件的问题(有点像多线程的那个东东...)。这里我使用了最简单的例子,就是SSDT HOOK NtOpenProcess. ring3的应用程序将自己的PID传给ring0的驱动,驱动hook NtOpenProcess之后就无法从任务管理器终止应用程序了。 加载驱动的方式用的是SCM....而且是《w转载 2012-06-20 23:23:16 · 893 阅读 · 0 评论 -
SYSENTER指令相关(精华学习)
在 Intel 的软件开发者手册第二、三卷(Vol.2B,Vol.3)中,4.8.7 节是关于 sysenter/sysexit 指令的详细描述。手册中说明,sysenter指令可用于特权级 3 的用户代码调用特权级 0 的系统内核代码,而 SYSEXIT 指令则用于特权级 0 的系统代码返回用户空间中。sysenter 指令可以在 3,2,1 这三个特权级别调用(Linux 中只用到了特权级转载 2012-07-06 00:18:22 · 2147 阅读 · 0 评论 -
一段获取ssdt表及其中函数的简单代码
一段获取ssdt表及其中函数的简单代码typedef struct _SYSTEM_SERVICE_TABLE{ PNTPROC ServiceTable ; // array of entry points PULONG CounterTable ; // array of usage counters . be NULL U转载 2012-06-22 11:27:06 · 734 阅读 · 0 评论 -
【原创】RootKit hook之[二] SSDT hook
标 题: 【原创】RootKit hook之[二] SSDT hook作 者: combojiang时 间: 2008-01-12,23:00:47链 接: http://bbs.pediy.com/showthread.php?t=58199哈,好大一场雪啊,2008年的第一场雪,比以往来得早些。外面的雪在下,透过书房的窗,欣赏着外面的雪和过往的车辆,欣赏之余,便有了想写点东转载 2012-06-28 13:54:05 · 1363 阅读 · 0 评论 -
微软开发Detours函数库(好东西啊)
Detours是微软开发的一个函数库, 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为。具体用途是: 拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 为一个已在运行的进程创建一新线程,装入自己的代码并运行。 ---- 本文将简介Detours的原理,Detours库函数的用法, 并利用Detours库函数在Windo转载 2012-06-30 01:41:32 · 1318 阅读 · 0 评论 -
VC++消息钩子编程
一、消息钩子的概念1、基本概念 Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息。为了拦截消息,Windows提出了钩子的概念。钩子(Hook)是Windows消息处理机制中的一个监视点,钩子提供一个回调函数。当在某个程序中安装钩子后,它将监视该程序的消息,在指定消息还没到达窗口之前钩子程序先捕获这个消息。这样就有机会对此转载 2012-06-30 23:07:24 · 756 阅读 · 0 评论 -
【原创】Hook Shadow SSDT
标 题: 【原创】Hook Shadow SSDT作 者: sislcb时 间: 2008-06-02,23:21:04链 接: http://bbs.pediy.com/showthread.php?t=65931网上很多文章都有关于SSDT的完整的实现,但是没有关于Shadow SSDT的完整实现,目前最好的文章是《shadow ssdt学习笔记 by zhuwg》,我转载 2013-10-28 20:02:24 · 1726 阅读 · 0 评论 -
【原创】shadow ssdt学习笔记(一)(二)
http://bbs.pediy.com/showthread.php?t=56955标 题: 【原创】shadow ssdt学习笔记(一)(二)作 者: zhuwg时 间: 2007-12-22,22:01:29链 接: http://bbs.pediy.com/showthread.php?t=569551。取得shadow转载 2013-10-24 22:07:54 · 1607 阅读 · 0 评论 -
分析360安全卫士HOOK
分析了一下360安全卫士的HOOK(一) 分析了一下360的HOOK,通过直接hook KiFastCallEntry实现对所有系统调用的过滤。 我分析的版本如下: HookPort.sys版本: 1, 0, 0, 1005 HookPort.sys的TimeStamp: 4A8D4AB8 简单说明:360把所有被hook的系统服务的过滤函数放在了一个表里,索引即对应的系统服务转载 2013-10-24 22:18:01 · 2015 阅读 · 0 评论 -
简单实现了下SSDT SHADOW HOOK
介绍: SSDT SHADOW HOOK可用于安全软件窗口保护、安全输入、截屏保护等。例如:挂钩NtUserFindWindowEx、NtUserGetForegroundWindow、NtUserBuildHwndList、NtUserQueryWindow、NtUserWindowFromPoint、NtUserSetParent、NtUserPostMessage、NtUs转载 2013-10-24 21:58:50 · 1018 阅读 · 0 评论 -
rootkit开发
进程和线程rootkit开发者应该知道,管理运行中代码的主要机制是线程,并非进程。Windows内核基于线程而不是进程的数量对进程进行调度。假如丰在两个进程,一个是单线程的,另一个具有9个线程。则系统将为每个线程分配10%的处理时间。单线程的进程只能获得10%的CPU时间,而具有9个线程的进程会得到90%的时间。当然,这是一个人为示例,因为其它因素(如优先级)也在调原创 2013-05-04 21:46:41 · 646 阅读 · 0 评论 -
常用的系统HOOK方法
1.HOOK SSDT表// UN-protect memory__asm{push eaxmov eax, CR0and eax, 0FFFEFFFFhmov CR0, eaxpop eax}// do something// RE-protect memory__asm{push转载 2013-05-04 21:40:16 · 1068 阅读 · 0 评论 -
WIN7 X64 SSDT函数获得
曾经在网上看到一片文章,在早期64位系统,内核函数开头地址的低四位一般是0,形如:xxxxxxxx`xxxxxxx0,这一特征在SSDT表中有很强大的引用,SSDT表在64位系统于32位系统有较大的差别。以下是在64位系统下的KeServiceDescriptorTable:kd> dp KeServiceDescriptorTablefffff800`0117转载 2012-08-20 16:47:42 · 1421 阅读 · 0 评论 -
_declspec(naked) 使用
最近学习驱动开发,在写绕过inline hook的代码时,有个问题困扰了我一天,最后发现原来是在内嵌汇编时,没有使用_declspec(naked)导致的,看来是偶的基础知识掌握的不牢固啊(得补一下了,磨刀不误砍柴功),在此给记录一下,给自己一个警示。对于jmp类型的hook, 如果自己的过程没有使用_declspec(naked),那么系统会自动给添加一些额外的代码,控制堆栈原创 2012-07-15 12:00:35 · 707 阅读 · 0 评论 -
驱动实现RootKit文件隐藏
以下代码已经经过测试可以正确编译运行。效果也正常实现,可以作为学习驱动的一个示例代码。#include "ntddk.h"#include #pragma pack(1) //SSDT Tabletypedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase;原创 2012-06-30 23:12:37 · 2111 阅读 · 1 评论 -
vc++实现内核级进程保护
保护核心代码 #include "ntddk.h"#define NT_DEVICE_NAME L"//Device//ProtectProcess"#define DOS_DEVICE_NAME L"//DosDevices//ProtectProcess"#define IOCTL_PROTECT_CONTROL CTL_CODE(FILE转载 2012-06-30 23:11:44 · 849 阅读 · 0 评论 -
看雪的一篇很不错的文章(SSDT 入门)(精华)
看雪的一篇很不错的文章(SSDT 入门)2008-12-20 0:58------------------------很不华丽的分割线------------------------------------------------------本文章仅供那些在驱动开发门外徘徊的程序爱好者参考和学习,大牛就绕过吧,如有错误的地方,还请多多指出,不胜感激。转载 2012-06-20 23:56:45 · 1461 阅读 · 0 评论 -
一个串口输入过滤驱动
在看了《寒江独钓--Windows内核安全编程》一书,根据书中所讲编写,代码中只对IRP_MJ_WRITE进行了过滤处理//文件名comCap.c#include #include #define NTSTRSAFE_LIB#define CCP_MAX_COM_ID 32 //设定最大COM端口个数//保存所有过滤设备指针static PDEVICE_原创 2012-06-19 16:53:10 · 719 阅读 · 0 评论 -
Windows System Call Table
Windows System Call Table (NT/2000/XP/2003/Vista)The Metasploit Project Highlight a given system call number by its index (in hex) System Call SymbolWin转载 2012-06-18 21:37:19 · 1057 阅读 · 0 评论 -
【原创】rootkit hook之[三] inline hook
标 题: 【原创】rootkit hook之[三] inline hook作 者: combojiang时 间: 2008-01-30,17:27:57链 接: http://bbs.pediy.com/showthread.php?t=59127最近为了写好rootkit inline hook篇,特意A了著名的流氓软件(cdnprot.sys),这个文件很庞大,有152k之转载 2012-06-18 06:29:50 · 815 阅读 · 0 评论 -
SSDT详解
节选自《Undocumented Windows 2000 Secrets》: SSDT — System Services Descriptor Table ,系统服务描述符表(是一个整体的概念),共有四个表。(明确说是四个SST (System Server Table,系统服务表)类型的数组): typedef NTSTATUS (NTAPI*NTPROC)();type转载 2012-06-17 15:48:02 · 763 阅读 · 0 评论 -
HOOK API 函数跳转详解
什么是HOOK API: Windows下暴露的对开发人员的接口叫做应用程序编程接口,就是我们常说的API。我们在写应用层应用程序软件的时候都是通过调用各种API来实现的。有些时候,我们需要监控其他程序调用的API,也就是,当其他应用程序调用我们感兴趣的API的时候,我们在他调用前有一个机会做自己的处理,这就是HOOK API的涵义。 思路: 我们知道Wi转载 2012-06-17 15:16:06 · 903 阅读 · 0 评论 -
关于SSDT HOOK 取得索引号(function2hook + 1 )
当我们HOOK SSDT 时,要做的很重要的事情就是要获得NtXXX函数在SSDT中的索引号,以方便替换和调用。取得索引号会使用宏:#define HOOK_INDEX(function2hook) *(PULONG)((PUCHAR)function2hook + 1)但为什么要function2hook +1 呢 ?一定要注意本质问题,这里的function2hoo转载 2012-06-17 15:48:31 · 597 阅读 · 0 评论 -
任意用户模式下执行 ring 0 代码
创建时间:2003-06-25文章属性:原创文章提交:sinister (jiasys_at_21cn.com)任意用户模式下执行 ring 0 代码Author : sinisterEmail : sinister@whitecell.orgHomePage: http://www.whitecell.org 众所周知在非 Admin 用转载 2012-06-15 00:05:30 · 671 阅读 · 0 评论 -
内核级HOOK的几种实现与应用
创建时间:2003-03-26文章属性:原创文章来源:http://www.whitecell.org文章提交:sinister (jiasys_at_21cn.com)内核级HOOK的几种实现与应用Author : sinisterEmail : sinister@whitecell.orgHomePage: http://www.whitecell.o转载 2012-06-14 23:45:19 · 1344 阅读 · 0 评论 -
API Hook完全手册
注:本文是根据我两年前写的一个系统行为监测程序写成(参考了一些书籍和文章)。最近在论坛上看到有不少人在问关于API Hook的问题,便写成此文,希望能对朋友们在写API Hook代码的时候能够有所帮助。1 基本原理API Hook是什么我就不多说了,直接进入正题。API Hook技术主要有下面的技术难点:1. 如何将自己的的代码Inject到其他进程2. 如何Hoo转载 2012-06-15 22:17:25 · 687 阅读 · 0 评论 -
ndis_hook.c
ndis_hook.c00004 00014 #include 00015 00016 #include "adapters.h"00017 #include "av.h"00018 #include "memtrack.h"00019 #include "ndis_hk.h"00020 #include "filter.h"00021 #include "ndis_hk_转载 2012-06-06 20:14:46 · 645 阅读 · 0 评论 -
远程桌面 服务端全驱动(通信用NDIS HOOK,屏幕直接读显存)
监控端代码采用 汇编 + Winscok 源代码如下: local nNetTimeout,wsa:WSADATA,hScrDC,hMemDC,hBitmap,ScrnBufPoint PaketLen equ 1000.data bi dd 28h,0,0,200 dup (0) Buffer转载 2012-06-06 20:11:16 · 1587 阅读 · 0 评论 -
【原创】导出表钩子------EAT HOOK
看了combojiang大侠的rootkit专题,发现少了一个导出表钩子,既EAT;HOOK,刚好前几天自己搞了个IAT HOOK,然后就把其中的代码稍做修改,于是有这篇文章,偶学的东西不久,很多东西还不知道,请多指教,呵呵导出表钩子比导入表钩子感觉好用多,先说下原理吧,函数导入的函数的地址是再运行时候才确定的,比如我们的一个驱动程序导入了PsGetCurrentProcessId转载 2012-06-18 06:42:46 · 4339 阅读 · 0 评论 -
【原创】rootkit hook 之[七]--- IAT Hook
标 题: 【原创】rootkit hook 之[七]--- IAT Hook作 者: combojiang时 间: 2008-03-07,11:37:37链 接: http://bbs.pediy.com/showthread.php?t=60778今天这篇HOOK,主要是讲在内核中HOOK WIN32 API的办法。这个办法,比你采用全局钩子加载DLL来HOOK API的方法转载 2012-06-18 06:32:56 · 1293 阅读 · 0 评论 -
【原创】rootkit ring3进ring0之门系列[四] -- 陷阱门
八篇关于保护模式的文章,今天总算告一段落了。:D: 言归正传。今天我们学习陷阱门,先来看看理论部分。1。异常来源:1)处理器检测到程序错误产生异常。在程序运行期间,检测到程序错误。被进一步分为:faluts(故障),traps(陷阱),aborts.(中止)2)软件产生异常, int0 ,int 3, BOUND等指令在软件中产生异常。3)机器检测异常,由处理器检查内部芯片转载 2012-06-18 06:40:52 · 2213 阅读 · 0 评论 -
【原创】rootkit ring3进ring0之门系列[三] -- 任务门
标 题: 【原创】rootkit ring3进ring0之门系列[三] -- 任务门作 者: combojiang时 间: 2008-04-04,19:39:51链 接: http://bbs.pediy.com/showthread.php?t=62510今天我们一起学习下任务门。为了便于理解原理,首先来看几个数据结构。处理器为了处理任务,定义了5个相关的数据结构.转载 2012-06-18 06:40:13 · 1827 阅读 · 0 评论