自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除