能力值:
( LV2,RANK:10 )
|
-
-
2 楼
顶下,
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
始终觉得太危险。没什么用 。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
看下,
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
不知道360能不能被干掉
|
能力值:
( LV12,RANK:210 )
|
-
-
6 楼
360我没安装 理论上可以干掉吧
|
能力值:
( LV7,RANK:100 )
|
-
-
7 楼
太牛B了..膜拜..大哥
|
能力值:
( LV9,RANK:260 )
|
-
-
8 楼
这段代码会蓝屏的,但:
if(virtualAddr>0x1000000) //填这么多足够破坏进程数据了
break;
这个判断极大降低了蓝屏的概率,但填这么多其实是不够的。大部分程序默认加载地址是0x00400000,所以对大部分程序有效,但是有些别有用心的一小撮程序改掉加载地址后就无效了。
正确的清0代码如下:(出自DebugMan)
VOID ZeroIt(PEPROCESS pProcess){
ULONG start,tmp;
KAPC_STATE kapc;
PHYSICAL_ADDRESS physicalAddr;
KeStackAttachProcess(pProcess,&kapc);
for(start=0x00010000;start< 0x60000000;start+=0x1000){
physicalAddr = MmGetPhysicalAddress((PVOID)start);
if( physicalAddr.HighPart > g_PhysicalPage.HighPart )
continue;
if( physicalAddr.HighPart == g_PhysicalPage.HighPart &&
physicalAddr.LowPart >= g_PhysicalPage.LowPart )
continue;
if ( !(physicalAddr.HighPart | physicalAddr.LowPart) )
continue;
if(start!=(ULONG)MmGetVirtualForPhysical(physicalAddr))
continue;
__asm {
cli;
mov eax,cr0;
and eax,not 10000h;
mov cr0,eax;
}
__try{
RtlZeroMemory( (PVOID)start, 0x1000);
}__except(1){
}
__asm {
mov eax,cr0
or eax,10000h
mov cr0,eax
sti
}
}
KeUnstackDetachProcess (&kapc);
}
|
能力值:
( LV12,RANK:210 )
|
-
-
9 楼
那是RKU的 我没遇到蓝屏
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
wow! It's unsafe.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
感谢啊~~顶啊
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
这么清内存太暴力了吧!
有部分内存是不能清的,相当不安全!
|
能力值:
( LV12,RANK:300 )
|
-
-
13 楼
本来就是暴力的,本来就是想让目标进程挂掉,本来就是只有在其他方法不起作用时才不得已而为之的。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
看来看去都不实用
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
有同步问题,在检测完成,关中断之前,用户的虚拟地址空间随时可以发生变化,关中断时发生Page Fault 就直接BugCheck。补充一下,即使地址空间不发生变化,地址存在也不表示地址可写
关中断后由于在单CPU内核上不会收到时钟中断,因而不会调度其他线程;在SMP上收不到IPI,也不会调度调度其他线程和改变虚拟地址空间,应该问题不大
|
能力值:
( LV9,RANK:320 )
|
-
-
16 楼
这个早有了。。。。。。。。。。。。。。。。。
|
|
|