能力值:
( LV2,RANK:10 )
|
-
-
26 楼
刚好看到类似的驱动文件.受益了
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
KPELIB 这个结构体怎么来的 请大侠指点一二,呵呵
|
能力值:
( LV6,RANK:90 )
|
-
-
28 楼
收藏~~
~~
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
自己定义一个就好了,咔咔
另外代码还要加些东西才能正常运行
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
学习慢慢看!
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
给点提示嘛 既然是扫盲贴,怎么不说多点撒
唉
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
呵呵,偶不是楼主啊
给下我的定义:
typedef struct _PE {
HANDLE hFile;
HANDLE hSection;
IMAGE_DOS_HEADER * pDosHdr;
IMAGE_NT_HEADERS32 * pNtHdr;
IMAGE_SECTION_HEADER * pSectHdr;
IMAGE_EXPORT_DIRECTORY * pExportEntry;
PUCHAR pImgBase;
ULONG ImgSize;
} PE, *PPE;
其中hSection用来存储ZwCreateSection产生的句柄.
另外,其实系统已经提供了一个MiFindExportedRoutineByName 给我们,可以参考它的源码.
不过据说这个函数有bug,会蓝,XP SP3会修补,Vista没有问题
|
能力值:
( LV12,RANK:1010 )
|
-
-
33 楼
哈哈。LS的给的这个和原代码不匹配。你误解人家的意思了。人家不是不知道PE结构(PE结构在SDK头文件里就有)而是说楼主的代码里自己定义的这个_KPELIB 结构没有帖出来。需要自己去完善。
偶来个完整的。而且编译通过。
typedef struct _KPELIB {
PIMAGE_DOS_HEADER pDosHdr;
PIMAGE_NT_HEADERS32 pNtHdr;
PIMAGE_SECTION_HEADER pSecHdr;
PIMAGE_EXPORT_DIRECTORY pExportEntry;
PIMAGE_IMPORT_DESCRIPTOR pImportEntry;
PIMAGE_BASE_RELOCATION pBaseReloc;
BOOLEAN IsInitSuccessed;
PUCHAR pMap;
ULONG uMapSize;
HANDLE hFile;
} KPELIB, *PKPELIB;
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
非常谢谢楼上2位的回复,偶也刚定义好这个KPELIB结构 惭愧ing
现在编译通过了,正在解决后面的问题,这个扫盲贴不简单啦
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
呵呵,我自行定义的,不是根据它这个源码,咔咔,调用nt的时候记得把previousmode搞掉
|
能力值:
( LV12,RANK:760 )
|
-
-
36 楼
lz很厉害啊~
没有时间仔细看细节~
用汇编写个驱动感染的loader就行了~
主体还是C写的爽~
|
能力值:
( LV12,RANK:760 )
|
-
-
37 楼
VOID KWcsUpper(WCHAR *Str, ULONG ulSize)
{
if (ulSize)
{
ulSize = ulSize / sizeof(WCHAR);
while (ulSize)
{
if (*Str >= L'a' && *Str <= L'z')
{
*Str -= 0x20;
}
Str++;
ulSize --;
}
return ;
}
//else
{
while (*Str)
{
if (*Str >= L'a' && *Str <= L'z')
{
*Str -= 0x20;
}
Str++;
}
return ;
}
}
|
能力值:
( LV12,RANK:760 )
|
-
-
38 楼
CHAR g_szFuncName[defApiNum][80] =
{
"IoCreateFile",
"ZwClose",
"ExAllocatePoolWithTag",
"ZwReadFile",
"ZwWriteFile",
"ZwSetInformationFile",
"ZwQueryInformationFile",
"ExFreePoolWithTag",
"DbgPrint",
"RtlInitUnicodeString",
"PsCreateSystemThread",
"KeDelayExecutionThread"
};
这样子比较好~~,不用xx掉premode
|
能力值:
( LV12,RANK:760 )
|
-
-
39 楼
WCHAR g_wszNtoskrnl[] = L"ntoskrnl.exe";这个太邪恶~,推荐方法就是直接搜索ntos比较好,一般在psploadedmodulelist的第一个就是ntosxxxx.exe的开始
|
能力值:
( LV12,RANK:760 )
|
-
-
40 楼
很容易搞好的说~~哈哈哈,如果用上我以前的一个东西就更稳定拉拉~
上传idb文件~
|
能力值:
( LV12,RANK:1010 )
|
-
-
41 楼
哇。感谢老V大牛的共享精神啊~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
[QUOTE=cvcvxk;393711]WCHAR g_wszNtoskrnl[] = L"ntoskrnl.exe";这个太邪恶~,推荐方法就是直接搜索ntos比较好,一般在psploadedmodulelist的第一个就是ntosxxxx.exe的开始[/QUOTE]
偶就是在DriverEntry里通过DriverObject直接获取,直接写文件名太明显了
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
各位大大能不能再解释下啊,小菜偶还有不少不明白的地方:
1,g_pDriverObject 这个东东怎么没有初始化就拿来用阿PDRIVER_OBJECT DriverObject = KGetGlobalVarAddr(g_pDriverObject);
2,WCHAR g_wszNtoskrnl[] = L"ntoskrnl.exe";要是机器使用的内核不是这个呢?要不要作相应修改?
3,PROCESS_ERROR(pe->pExportEntry);这个是干什么的呢
4,最麻烦的ulBodySize = ulEndAddr - (ulDelta + (ULONG)g_wszNtoskrnl);结果怎么是个负值哦,0xffxxxxxx.其中ulDelta打印出来发现是0...
请各位大大抽空指点下,谢谢啦,偶太菜
|
能力值:
( LV12,RANK:1010 )
|
-
-
44 楼
PROCESS_ERROR 是原作者自己定义的函数.
ntoskrnl.exe基本不变. Vista的不晓得了.[偶没装VISTA]
g_pDriverObject 是全局变量.
最后个自己慢慢调试,慢慢蓝
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
[QUOTE=sudami;393840]PROCESS_ERROR 是原作者自己定义的函数.
ntoskrnl.exe基本不变. Vista的不晓得了.[偶没装VISTA]
g_pDriverObject 是全局变量.
最后个自己慢慢调试,慢慢蓝 [/QUOTE]
感谢sudami大侠的回复
请教g_pDriverObject这个全局变量在哪里赋初值的呢?是DriverEntry的DriverObject吗?还是别的什么
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
对滴
|
能力值:
( LV12,RANK:760 )
|
-
-
47 楼
搞好的可以用的C文件~~
ps:
编译忽略警报才可以,否则不会成功的说~
o(∩_∩)o...
只要再加上ScanFile就可以XX,YY了~
需要去掉WFP啊~~
|
能力值:
( LV12,RANK:1010 )
|
-
-
48 楼
vxk大叔里面的头文件都没给啊。
#include <zwfunc.h>
又一个自定义头,编译通不过。。。
|
能力值:
(RANK:1130 )
|
-
-
49 楼
谁放一个编译好的bin 出来看看呢?
学习一下
|
能力值:
( LV12,RANK:1010 )
|
-
-
50 楼
|
|
|