能力值:
( LV2,RANK:10 )
|
-
-
2 楼
学习一下。。。。
|
能力值:
( LV13,RANK:1050 )
|
-
-
3 楼
坐板凳学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这是一个母鸡与蛋的问题,因为他这个说明本身就是要从内核态加载一个驱动,那么这个启动源也得使用注册表来加载。
|
能力值:
( LV13,RANK:1050 )
|
-
-
5 楼
NtSetSystemInformation里面就是调用MmLoadSystemImage 来加载驱动的。
|
能力值:
( LV12,RANK:240 )
|
-
-
6 楼
NtSetSystemInformation 装载驱动不稳定 有的时候我一开机 用这个加载下驱动 就会蓝 看了下书 可能是因为驱动驻留的内存被换出到磁盘上(page out),对他的任何访问都会蓝 下面是 书上的加载驱动的代码
#include "stdafx.h"
#include "windows.h"
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#define SystemLoadAndCallImage 38
typedef unsigned long NTSTATUS;
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PVOID Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
{
UNICODE_STRING ModuleName;
} SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE;
typedef DWORD (CALLBACK* ZWSETSYSTEMINFORMATION)(DWORD, PVOID, ULONG);
ZWSETSYSTEMINFORMATION ZwSetSystemInformation;
typedef DWORD (CALLBACK* RTLINITUNICODESTRING)(PUNICODE_STRING,PCWSTR );
RTLINITUNICODESTRING RtlInitUnicodeString;
typedef DWORD (CALLBACK* RTLANSISTRINGTOUNICODESTRING)(PVOID, PVOID,DWORD);
RTLANSISTRINGTOUNICODESTRING RtlAnsiStringToUnicodeString;
bool load_sysfile()
{
SYSTEM_LOAD_AND_CALL_IMAGE GregsImage;
WCHAR daPath[] = L"\\??\\C:\\MIGBOT.SYS";
//////////////////////////////////////////////////////////////
// get DLL entry points
//////////////////////////////////////////////////////////////
if( !(RtlInitUnicodeString = (RTLINITUNICODESTRING)
GetProcAddress( GetModuleHandle("ntdll.dll")
,"RtlInitUnicodeString"
)))
{
return false;
}
if(!(ZwSetSystemInformation = (ZWSETSYSTEMINFORMATION)
GetProcAddress(
GetModuleHandle("ntdll.dll")
,"ZwSetSystemInformation" )))
{
return false;
}
RtlInitUnicodeString(
&(GregsImage.ModuleName)
,daPath
);
if(
!NT_SUCCESS(
ZwSetSystemInformation(
SystemLoadAndCallImage
,&GregsImage
,sizeof(SYSTEM_LOAD_AND_CALL_IMAGE))))
{
return false;
}
return true;
}
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
既然都进了内核还用这么烦
自己Alloc内存,自己加载,自己填充个DriverObject得了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
是啊,搞的这么麻烦,还不如在内核里面加载一个DLL
使用APC或者Hook,将代码从内核转到上层。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
同感,关键不是进了内核之后怎么干,而是怎么进内核
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
学习一下,谢谢
|
|
|