|
楼主 |
发表于 2010-6-29 19:45:26
|
显示全部楼层
本帖最后由 HoviDelphic 于 2010-6-29 19:48 编辑
这份垃圾代码在我的硬盘上找不到了,直接用KiInsertQueueApc杀进程的代码貌似如此:
//作用:结束线程
NTSTATUS TerminateThread(IN PETHREAD Thread)
{
NTSTATUS st = STATUS_UNSUCCESSFUL;
ULONG Size = 0;
ULONG i = 0;
PKAPC pApc = 0;
ULONG EToffSET=0x248; //XP=0x248, 2K3=0x240, VISTA+2k8=0x260, Win7=0x280
if ( MmIsAddressValid((PVOID)Thread) == TRUE)
{
pApc = ExAllocatePool(NonPagedPool, sizeof(KAPC));
*(PULONG)((ULONG)Thread+EToffSET)=0x10;
if (pApc)
{
KeInitializeApc(pApc, (PKTHREAD)Thread, OriginalApcEnvironment, ApcCallBack, 0, 0, KernelMode, 0);
pApc->SystemArgument1=NULL;
pApc->SystemArgument2=NULL;
pApc->Inserted = FALSE;
KiInsertQueueApc(pApc,0);//要自己找到KiInsertQueueApc的地址才行
DbgPrint("KiInsertQueueApc Over!");
}
st = STATUS_SUCCESS;
}
return st;
}
时过境迁,我现在已经忘记怎么强杀进程了。。。 |
|