40楼#
发布于:2008-04-04 17:58
好久没来了,刚来就发现这么好玩的东西哈。
我的想法: 1. 直接摘链,这个我就不说了,体力活而已; 或者 hook 那个KeDelayExecutionThread ; 2. 由于驱动设计的缺陷,因此我们可以以很容易的杀死目标进程(注意:偷懒方法,针对此程序设计而已,无任何技术,只是思路而已,呵呵)。 说说方法2: 1. 加载 ppxx.sys 2. 运行 ppxx.exe 另他处于被保护状态; 3. 运行我提供的 updatexxpp 程序,然后使用任意程序结束目标或者直接关闭 ppxx.exe 即可 :) 不过,这些方法有违规的嫌疑,和要求有些擦边了 :( 但是,话说话来了,本来方法就不多,如果都不让用了... updatexxpp 的源代码如下: =========================== // created by codez @2008 #include <stdio.h> #include <stdarg.h> #include <windows.h> #define CODE 0x222000 #define DEVICE_NAME "\\\\.\\xxpp" void fatal (char * fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } int main(int argc, char * argv[]) { HANDLE hDevice = CreateFile(DEVICE_NAME, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); DWORD dwPid, dw; if (hDevice == INVALID_HANDLE_VALUE) { fatal ("No device found! Good luck!\n"); return -1; } dwPid = 0; if (DeviceIoControl(hDevice, CODE, &dwPid, sizeof(dwPid), NULL, 0, &dw, NULL)) { printf ("OK! You could use taskmgr program to kill the target file now!\n"); } else { fatal ("Failed to set process id!!! Error=0x%lX\n", GetLastError()); } CloseHandle(hDevice); return 0; } // end |
|
41楼#
发布于:2008-04-04 08:26
谁有兴趣就干下这个重体力活吧,哈哈.
|
|
|
42楼#
发布于:2008-04-04 00:08
啥呢,楼上也没搞清楚。。。
建议还是仔细IDA F5后再发言~ |
|
|
43楼#
发布于:2008-04-04 00:01
安全结束进程需要在进程内线程执行代码,LZ又不让进程存在活动线程,2个条件完全冲突,也就是找出外部结束进程的办法...
|
|
44楼#
发布于:2008-04-03 22:40
.text:000106DC call PsSetCreateProcessNotifyRoutine
.text:000106E1 push offset sub_10560 ; NotifyRoutine .text:000106E6 call PsSetCreateThreadNotifyRoutine 建立这样连个回调,然后在回调里判断是否自己的进程,是的话就无限期 KeDelayExecutionThread 不好意思,我说反了 |
|
|
45楼#
发布于:2008-04-03 22:29
老大,IDA也要给点专业精神啊,你反的不正确,这样会误导后来的同志们的
|
|
|
46楼#
发布于:2008-04-03 22:27
.text:000106DC call PsSetCreateProcessNotifyRoutine
.text:000106E1 push offset sub_10560 ; NotifyRoutine .text:000106E6 call PsSetCreateThreadNotifyRoutine 建立这样连个回调,然后在回调里判断是否自己的进程,不是的话就无限期 KeDelayExecutionThread 同志们不用反了,直接想办法吧 |
|
|
上一页
下一页