1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <ntddk.h> typedef NTSTATUS (*PSPTERPROC) ( PEPROCESS Process, NTSTATUS ExitStatus ); PSPTERPROC MyPspTerminateProcess ; NTSTATUS PsLookupProcessByProcessId( IN HANDLE ProcessId, OUT PEPROCESS *Process ); void Unload(PDRIVER_OBJECT pDriverObj) { DbgPrint("Driver Stop/n"); } NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString) { PEPROCESS hProcess; MyPspTerminateProcess =(PSPTERPROC)0x805c8642; //比如冰刃的进程ID为1732 if(PsLookupProcessByProcessId(1732,&hProcess)==STATUS_SUCCESS) { MyPspTerminateProcess(hProcess,0); } pDriverObj->DriverUnload = Unload; return STATUS_SUCCESS; } |
以上代码使用了系统未导出函数 PspTerminateProcess 结束了冰刃,
函数的地址是我用WinDbg看到的,所以可能在不同的系统里地址不同。