
Rootkit﹏
文章平均质量分 80
wangsizhe09
自我感觉良好!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
通过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 · 737 阅读 · 0 评论 -
内核中获取进程路径学习
<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 · 744 阅读 · 0 评论 -
寻找原始表,恢复 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 · 564 阅读 · 0 评论 -
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 · 721 阅读 · 0 评论 -
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 · 544 阅读 · 0 评论 -
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 · 505 阅读 · 0 评论 -
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 · 1300 阅读 · 0 评论 -
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 · 1001 阅读 · 0 评论 -
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 · 1026 阅读 · 1 评论 -
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 · 1171 阅读 · 0 评论 -
修改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 · 527 阅读 · 0 评论 -
城里城外看SSDT
<br />2006年,中国互联网上的斗争硝烟弥漫。这时的战场上,先前颇为流行的窗口挂钩、API挂钩、进程注入等技术已然成为昨日黄花,大有逐渐淡出之势;取而代之的,则是更狠毒、更为赤裸裸的词汇:驱动、隐藏进程、Rootkit……<br />那么,以程序员的视角来看,整个过程应该是这样的:<br />由用户输入dir命令。 <br />cmd.exe获取用户输入的dir命令,在内部调用对应的Win32 API函数FindFirstFile、FindNextFile和FindClose,获取当前目录下的文件和子原创 2010-09-02 06:17:00 · 390 阅读 · 0 评论 -
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 · 580 阅读 · 0 评论 -
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 · 760 阅读 · 0 评论 -
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 · 655 阅读 · 0 评论