2009年06月30日 星期二 07:36
做IRP过滤的时候用到..但很容易忘记..先放上来...
IoSetCompletionRoutine 是一个宏
#define IoSetCompletionRoutine( Irp, Routine, CompletionContext, Success, Error, Cancel ) { \
PIO_STACK_LOCATION __irpSp; |
2009年06月26日 星期五 22:16
总算快放假了..翻翻电脑,,发现以前俩张有意义的照片...纪念下...

|
2009年06月18日 星期四 19:28
系统中有一类对象叫" CALLBACK",你可以在对像目录 \CallBack 看到相关的对象.
NTSTATUS
ExCreateCallback(
OUT PCALLBACK_OBJECT *CallbackObject,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN BOOLEAN Create,
IN BOOLEAN AllowMultipleCallbacks
);
PVOID
ExRegisterCallback(
|
2009年06月14日 星期日 23:25
2009年06月13日 星期六 12:13
为什么需要句柄?
句柄只是对对像的引用,当我们进入内核时,获取对象显然是很简单,但为什么还需要句柄
呢? 应该说我们需要句柄做为参数调用API. 因为直接操作对象,可能会涉及到许多的未导
出的东西,如果自己实现的话是不大现实,而调用标准的内核API又很多时候依赖于句柄,但
又很多时候因为种种原因,我们得 |
2009年06月02日 星期二 15:41
OSR上有一工具..POOLTAG...利用的原理是...调用NtQuerySystemInformation传入SystemPoolTagInformation来获取POOL TAG的信息的....这样的话很容易在RING3完成...我们很容易获取这个TAG...
在内核里其实就是利用...PPOOL_TRACKER_TABLE PoolTrackTable;
|
2009年05月31日 星期日 19:50
前言:
Yas Kit的进程检测因为对对象的判断太过严格,搜索对象办法也不是很好,导致检测的效果不好,而驱动检测方面也不大理想, 使用了其他ARK,发现也有相干的问题,于是找点时间调整原来的搜索办法,过程记录下来与各位分享,也希望各位能提出问题,解决之[Sysnap]
1 一个对象生成时,一般都调用了ObCreateObject,每个对象都有不同的数据结构,在内存用一段空间表示,所谓的内存搜索对象,就是在内存里找出这些数据结构出来.当然你应该猜到ObCreateObject会调用ExAllocatePoolWithTag,这
|
2009年05月28日 星期四 16:58
下面的代码只能用于IDE系统...理论上可以穿还原软件...也适合于大硬盘,因为采用LBA方式...代码比较简单..不排除问题...
#define IDE_REG_DATA_PORT 0x0000
#define IDE_SECTOR_BUF_SZ 512
#define IDEReadBlock(Address, Buffer, Count) \
(READ_PORT_BUFFER_USHORT((PUSHORT)((Address) + IDE_REG_DATA_PORT), (PUSHORT)(Buffer), |
2009年05月28日 星期四 16:42
先简单说说这俩个进程...
SMSS
InitSessionManager..
1 创建私有堆(RtlCreateHeap)...
2创建对象目录(ZwCreateDirectoryObject)...
3创建LPC端口对象SmApiPort(NtCreatePort)
NtCreatePort创建一个端口,RtlCreateUserThread创建俩个用户线程来等待用户的请求
涉及到的API是 NtReplyWaitReceivePort具体看其使用方法
|
2009年05月27日 星期三 11:37
pagefile是个比较神奇的文件..首先我们很难打开它来进行相关的操作.当然也有办法...这里我们说一种办法...系统有一个未导出的变量 PMMPAGING_FILE MmPagingFile[MAX_PAGE_FILES];
你系统有多少个pagefile.sys MmPagingFile就有多少个有效元素, MmPagingFile每个元素的类型是PMMPAGING_FILE
|
|
| |