- 博客(24)
- 收藏
- 关注
原创 寻找原始表,恢复 ssdt 表 RING3
<br />标 题: 【原创】寻找原始表,恢复 ssdt 表 作 者: dummy 时 间: 2007-08-17,19:28 链 接: http://bbs.pediy.com/showthread.php?t=49848 // 只贴 ring3 部分,这也是最主要的代码,驱动只是负责把得到的原始值写到 ssdt,其他啥也不做 // 简单说一下,找 KiServiceTable 表过程, 是直接读取原始内核文件,寻找输出符号,然后结合重定位信息,谁向 KeServiceDes
2010-09-28 14:03:00
520
原创 INLINE HOOK RING0
<br />/字节型数据 unsigned char ULONG CR0VALUE; BYTE OriginalBytes[5]={0}; //保存原始函数前五个字节 BYTE JmpAddress[5]={0xE9,0,0,0,0}; //跳转到HOOK函数的地址 extern POBJECT_TYPE *PsProcessType; NTKERNELAPI NTSTATUS ObRe
2010-09-28 14:03:00
601
原创 PE导出/输入表————文件影射
<br />#include "stdafx.h" #include <tchar.h> #include <Windows.h> #include <iostream> using namespace std; #define PCTSTR const char * ULONG Rav2Raw(PVOID pFileData, ULONG rav) { PIMAGE_DOS_HEADER pDosH; PIMAGE_NT_HEADERS pNt
2010-09-28 14:01:00
462
原创 ring3 恢复SSDT
<br />// IATHOOK.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <aclapi.h> using names
2010-09-28 14:00:00
528
原创 内核中获取进程路径学习
<br />NTSTATUS PsGetProcessPathByPid( IN ULONG Pid ,char* FilePath){NTSTATUS status;char path[256] = {0};char disk[10] = {0};STRING ansi_path;STRING ansi_disk;UNICODE_STRING uni_path;UNICODE_STRING un
2010-09-28 14:00:00
683
原创 ring3 恢复SSDT
<br />// IATHOOK.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <aclapi.h> using names
2010-09-28 13:59:00
477
原创 RING3下SSDT原始地址的获取
<br />#include "stdafx.h"#include <windows.h>#include <iostream>using namespace std;#define RVATOVA(base,offset) ((PVOID)((DWORD)(base)+(DWORD)(offset)))#define ibaseDD *(PDWORD)&ibase#define STATUS_INFO_LENGTH_MISMATCH ((NTSTA
2010-09-28 13:58:00
1251
原创 SSDT原始地址, 现在地址
<br />#include <windows.h>#include <winnt.h>#include <WindowsX.h>#include <commctrl.h>#include <stdio.h>#define ibaseDD *(PDWORD)&ibaseHINSTANCE g_hInst;HWND hWinMain,hList;#define ID_LISTVIEW 104#pragma comment(lib,"comctl32")typedef
2010-09-28 13:57:00
681
原创 IAT HOOK RING3
<br />#include "stdafx.h" #include <windows.h> #include <stdio.h> // 挂钩指定模块hMod对MessageBoxA的调用 BOOL SetHookApi(HMODULE hMod); // 定义MessageBoxA函数原型 typedef int (WINAPI *PFNMESSAGEBOX)(HWND, LPCSTR, LPCSTR, UINT uType); // 保存MessageBoxA函
2010-09-28 13:55:00
511
原创 HOOK SSDT
<br />NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath ) { DriverObject->DriverUnload = OnUnload; Hook(); return STATUS_SUCCESS; } // 此处修改SSDT中的NtOpenProcess服务地址 V
2010-09-12 20:57:00
713
原创 shadow ssdt学习笔记
<br />1。取得shadow ssdt真实地址<br />系统只提供了KeServiceDescriptorTable导出<br />KeServiceDescriptorTableShadow是个未导出结构<br />定义<br />typedef struct _SYSTEM_SERVICE_TABLE<br />{<br /> PNTPROC ServiceTable; // array of entry points<br /> PDWORD CounterTable;
2010-09-02 06:29:00
639
原创 RING3内存清零结束进程
<br />RKU的这招确实不错。在DebugMan上看到一点关于内存清零的提示信息,准备在RING0下实践下,结果BSOD的受不了,调试驱动偶还木有入门啊。无赖之下看到了RING3下实现的code,于是学习之。<br />/*************************************************************************<br />* 学习者: sudami<br />* 时间: 07/12/24<br />*<br />* 备注: 学习RING
2010-09-02 06:28:00
728
原创 XP/2003/VISTA的简单INLINE HOOK
<br />哈哈,MJ牛放血那么久了,今天才仔细看了看她射的一个帖子. 原来inline hook是如此之方便耶. 当然是简单的.复杂滴还得自己写...<br />www.debugman.com/read.php<br />----------------------------------------------------------------------------------------------------------- <br />NTSTATUS<br />InlineHookFuncX
2010-09-02 06:26:00
390
原创 简析利用调试寄存器实现内核函数的HOOK
<br />某些RK,木马会经常HOOK一些关键函数从而达到隐藏等目的,而相应的ARK检测软件也会通常会先恢复这些关键函数的HOOK(譬如利用硬盘文件恢复),然后再调用来检测RK,这样就可以检测出某些隐藏.下面就介绍利用调试器实现某些内核函数的HOOK. <br /><br />Intel386以后的系列CPU增加了8个32位的调试寄存器,从Dr0到Dr7,方便调试使用.如果设置了相应的调试信息,在条件满足的情况下将会发生 1 号(DB例外)中断,CPU就会陷入中断例程,执行中断代码,我们的HOOK目的就可
2010-09-02 06:24:00
444
原创 Hook小结
<br />我们安全爱好者,都接触过Rootkit,它对我们入侵后的保护提供了强大的支持。现今比较流行的Rootkit有Hxdef,NtRootkit和AFX Rootkit,而且Hxdef和AFX Rootkit还提供了源代码,对我们的学习提供了很大的方便。这些Rootkit都是使用HOOK技术实现的,欺骗的是用户,而不是操作系统。使用HOOK开发Rootkit是比较简单的,虽然现在也有很多其他的技术,但门槛都太高,很多技术都需要硬编码,对于我等菜鸟,实在是没有这么高深的技术。而HOOK就不同了,它开发简
2010-09-02 06:21:00
876
原创 通过SSDT UnHOOK 函数HOOK
<br />一、在用户空间修改系统服务调度表(SSDT)<br />SSDT位于内核空间,如果要修改SSDT的入口函数,rootkit都是通过驱动程序的方式载入再修改的。然而在用户空间可以通过直接读写/device/physicalmemory来修改SSDT的入口。(译注:修改SSDT入口是可以在用户空间进行,只是SSDT的入口函数必须是在内核空间,所以一般rootkit都是把修改后的程序放在驱动程序中,以便直接加载到内核空间。)<br />Mark Russinovich在Sysinternals发表了P
2010-09-02 06:18:00
689
原创 城里城外看SSDT
<br />2006年,中国互联网上的斗争硝烟弥漫。这时的战场上,先前颇为流行的窗口挂钩、API挂钩、进程注入等技术已然成为昨日黄花,大有逐渐淡出之势;取而代之的,则是更狠毒、更为赤裸裸的词汇:驱动、隐藏进程、Rootkit……<br />那么,以程序员的视角来看,整个过程应该是这样的:<br />由用户输入dir命令。 <br />cmd.exe获取用户输入的dir命令,在内部调用对应的Win32 API函数FindFirstFile、FindNextFile和FindClose,获取当前目录下的文件和子
2010-09-02 06:17:00
359
原创 R0 下 FSD inline Hook 防删除
<br />/*<br /> By 炉子[0GiNr]<br /> http://hi.baidu.com/breakinglove_<br /> http://0ginr.com<br />*/<br />typedef NTSTATUS (*pfnDrvDispath)(<br /> IN PDEVICE_OBJECT DeviceOb
2010-09-02 06:15:00
940
原创 Kernel下检测还原正确的SSDT
<br /> <br />步骤说明:<br />1) 用NtQuerySystemInformation取得内核模块ntkrnlpa.exe或ntoskrnl.exe的基址KernelBase,获取内核模块的文件名称,到底是ntkrnlpa.exe还是ntoskrnl.exe.<br />2) 读取ntkrnlpa.exe或ntoskrnl.exe的映象基址ImageBase,和.Text节中虚拟偏移Virtual Offset,实际偏移Real Offset.<br />3)
2010-09-02 06:13:00
1047
原创 关于在WIN32调用一些Zw系列的文件操作函数
<br />#include <windows.h><br />#include <stdio.h><br />#include <stdlib.h><br /> <br />typedef unsigned long NTSTATUS;<br />typedef unsigned short USHORT;<br />typedef unsigned long ULONG;<br />typedef unsigned long DWORD;<br />typedef long LONG;<br />typ
2010-09-02 06:12:00
1362
原创 Inline Hook IofCallDriver 截获所有IRP
<br />前段时间搞了一些Inline HOOK API的demo,例如对NtQueryDirectoryFile Inline HOOK 进行文件的隐藏,(恰好NtQueryDirectoryFile 在SSDT有导出,也可以采用改SSDT来实现HOOK.,只不过Inline HOOK 隐蔽性好点).而NtQueryDirectoryFile是调用IofCallDriver的(我猜的),那么HOOK IofCallDriver过滤掉关于MajorFunction == IRP_MJ_QUERY_INFO
2010-09-02 06:11:00
986
1
原创 ZwSetSystemInformation的使用
<br />// TestKisOfZwSetSystemInformation.cpp : Defines the entry point for the console application.<br />//<br /> <br />#include <windows.h><br />#include <stdio.h><br />#include <stdlib.h><br /> <br />//////////////////////////////////////// <br />// New
2010-09-02 06:10:00
540
原创 研究心得-恢复2k xp得win32k.sys得KeServiceDescriptorTableShadow
<br />/**<br /> * @file sdtreset.cpp <br /> *<br /> * @brief sdtreset.cpp, v 1.0.0 2005/10/25 11:48:42 sunwang<br /> *<br /> * details here.<br /> * 草稿代码,命名混乱,重构时候使用java风格,getKiServiceTableAddrMM<br /> * 其实找到了KeServiceDescriptorTable/Shadow的真实entry地址,直接调用就
2010-09-02 06:01:00
550
原创 修改SSDT做简单的进程保护
<br />M$真是照顾菜鸟 居然会给个SSDT,而且居然还把KSDT(KeServiceDescrīptorTable)导出了(当然,不排除这是M$的无奈之举,因为M$是不推荐programmer Hook他的API的,但是如果不对API做hook,那么许多事情都很难完成,这使得M$不得不提供一个“接口”,这就好比过滤驱动的提供是一样一样的)<br />//由于大多数看这篇文章的人都是没有写过驱动的,所以我会尽可能的将提到的函数/结构等做详细的描述。<br />SSDT其实就是一张表。先dump出来瞧瞧<
2010-09-02 05:58:00
480
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人