能力值:
( LV2,RANK:10 )
|
-
-
26 楼
谢谢lz分享
|
能力值:
( LV4,RANK:50 )
|
-
-
27 楼
Reload支持一下
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
支持一下
...
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
收藏先,抽空学习一下。
|
能力值:
( LV4,RANK:40 )
|
-
-
30 楼
win7,xp 测试结果
全不通过,bsod:sys问题
|
能力值:
( LV13,RANK:240 )
|
-
-
31 楼
里面有源码…你可以自己调试编译一下,看看问题在哪里。记得不同的系统要拷贝不同的驱动文件…
|
能力值:
( LV5,RANK:60 )
|
-
-
32 楼
什么都不懂,来拜磨大牛
|
能力值:
( LV4,RANK:40 )
|
-
-
33 楼
调试过后可以用了,加载第二次会蓝屏,原因还没有发现
KernelCopyAddr=ExAllocatePool(PagedPool,SizeOfImage);
RtlZeroMemory(KernelCopyAddr,SizeOfImage);
}
else
{
DbgPrint("Current IRQL>DISPATCH_LEVEL in DriverEntry");
}
DbgPrint("POOLTYPE=%d",PoolType);
DbgPrint("分配到的内存为0x%08x",KernelCopyAddr);
if(KernelCopyAddr==NULL) //这里不解
DbgPrint("分配内核内存错误");
为什么不是判断完才调用RtlZeroMemory,KernelCopyAddr为NULL时会bsod吧
另外这样只能过ssdt,建议把一些常用函数重载+自定义(硬编码),这样应该能过Inline,IAT之类
|
能力值:
( LV13,RANK:240 )
|
-
-
34 楼
对于为NULL好像有相应的处理,如果有问题你自己可以修改,当时是自己好玩做的,对驱动也不太理解,这样其实是重载一个内核,完全不怕SSDT和inline HOOK.
|
能力值:
( LV4,RANK:40 )
|
-
-
35 楼
mov eax,fs[0x34]
mov eax,[eax] //eax=0
参考了几篇文章说,是init段已释放,所以获取kpcr会返回0
而且好像没什么作用,SSDT,inline都绕不过
我也是个新手,这个源码是个很好的学习例程
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
mark.mark.
|
能力值:
( LV13,RANK:240 )
|
-
-
37 楼
[QUOTE=IDGHOST;1150825]mov eax,fs[0x34]
mov eax,[eax] //eax=0
参考了几篇文章说,是init段已释放,所以获取kpcr会返回0
而且好像没什么作用,SSDT,inline都绕不过
我也是个新手,这个源码是个很好的学习例程[/QUOTE]
我那里好像没有使用INIT标记。
|
能力值:
( LV4,RANK:40 )
|
-
-
38 楼
KeSetSystemAffinityThread(1);
__asm
{
pushad
mov eax,DWORD PTR FS:[0x34]
add eax,0x18
mov eax,[eax]
mov eax,[eax]
mov eax,[eax+0x18]
mov KernelAddr,eax
popad
}
KeRevertToUserAffinityThread();
这样就正常了,也的确没有发现init标记,估计其他人也在这里bsod,奇怪的是有时蓝有时不蓝
另外请教下,内核可以访问内存整个高地位地址,那么驱动中能用asm可以调用r3的某个内存区?
|
能力值:
( LV13,RANK:240 )
|
-
-
39 楼
[QUOTE=IDGHOST;1150979]KeSetSystemAffinityThread(1);
__asm
{
pushad
mov eax,DWORD PTR FS:[0x34]
add eax,0x18
mov eax,[eax]
mov eax,[eax]
mov eax,[eax+...[/QUOTE]
可以直接访问。访问到的是当前进程的低位的地址里面的数据
|
能力值:
( LV4,RANK:40 )
|
-
-
40 楼
发现不管irql为多少,均能直接取值,不是说低于DISPATCH_LEVEL只能访问分页吗
觉得在R3下申请一块内存存放内核地址,再通过内核来调用稳定多了,不过物理内存的计算方式弄不清,4M和4K页目录的计算一样吗,初始还天真的以为 物理地址=相对地址+进程eprocess地址
|
能力值:
( LV7,RANK:100 )
|
-
-
41 楼
支持一下
... 谢谢,楼主分享
|
能力值:
( LV15,RANK:670 )
|
-
-
42 楼
什么情况,在虚拟机中写代码吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
mark,有空在看··
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
1024
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
通过DeviceIoControl发送自己的IOCODE,参数就用内核函数的参数,自己再驱动中再跳转到ntoskrnl里面,然后返回返回值就可以了, 如果不怕麻烦完全可以实现所有window是内核函数。 由于是自己实现的,基本没有人会去hook这些函数,window函数一个也没有修改,根据检测不到。
|
能力值:
( LV13,RANK:240 )
|
-
-
46 楼
|
能力值:
( LV5,RANK:60 )
|
-
-
47 楼
[QUOTE=IDGHOST;1150979]KeSetSystemAffinityThread(1);
__asm
{
pushad
mov eax,DWORD PTR FS:[0x34]
add eax,0x18
mov eax,[eax]
mov eax,[eax]
mov eax,[eax+...[/QUOTE] 只有第一个核的才是正确的,必须调用那个api绑定到第一个核.才不会蓝,原理就是这样.
血泪的教训
|
能力值:
( LV4,RANK:40 )
|
-
-
48 楼
这个有人提到的,内核中同时只有一条线程在运行。
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
如果蓝屏,常见的两个原因:指针跳转有问题,或者内存访问非法,
解决办法:开启系统的小内核调试,蓝屏后会自动dump内核,然后用windbg加载dump文件,如果是checked版,可以定位程序哪一行的出的错。
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
1024
|
|
|