阅读:6472回复:20
PSPTerminateprocess 结束不掉的程序
如题
在google偶然搜到一个程序 竟然是用VB做的。 |
|
|
沙发#
发布于:2007-08-01 09:54
引用第0楼maps123于2007-08-01 03:36发表的 PSPTerminateprocess 结束不掉的程序 : 看了下,好像是虽然调用程序成功,但实际上并没结束,做了个DS的强制删除测试,可以结束, 去掉了很多功能,所以仅供本次测试删除使用。测试环境为XPSP2。 |
|
|
板凳#
发布于:2007-08-01 10:58
炉子做的.....
提了system Thread (他跟我说的...) |
|
地板#
发布于:2007-08-01 10:59
炉子的simple_taskmgr可以终止它,KeInsertQueueAPC
|
|
地下室#
发布于:2007-08-01 11:35
pspxxxxthreadxxxx里检测到是system thread就直接c0000005了,呵呵,此法对APC无效,对RKU那种erase也无效~(虽然会留个僵尸~)
我讨厌KDOM~ |
|
|
5楼#
发布于:2007-08-01 11:58
看了下,居然用的NtSystemDebugControl读写的内存~~
关键代码如下: .text:00402F6B mov ecx, [ecx+0Ch] .text:00402F6E or ebx, 0FFFFFFFFh .text:00402F71 mov edx, [ecx+eax] .text:00402F74 mov eax, [esi+170h] .text:00402F7A add eax, 248h .text:00402F7F mov [esi+16Ch], edx .text:00402F85 jo loc_40319E .text:00402F85 .text:00402F8B push eax .text:00402F8C mov [ebp-1Ch], ebx .text:00402F8F call ReadSysMem .text:00402F8F .text:00402F94 mov ecx, [esi+16Ch] .text:00402F9A push 10h .text:00402F9C add ecx, 248h .text:00402FA2 mov [esi+180h], eax .text:00402FA8 jo loc_40319E .text:00402FA8 .text:00402FAE push ecx .text:00402FAF call WriteSysMem 即是将Thread->CrossThreadFlags设为0x10h(PS_CROSS_THREAD_FLAGS_SYSTEM) 硬编码XXXX 参考PSPXXXXXTHREAD的代码 NTSTATUS PspTerminateThreadByPointer( IN PETHREAD Thread, IN NTSTATUS ExitStatus, IN BOOLEAN DirectTerminate ) /*++ Routine Description: This function causes the specified thread to terminate. Arguments: ThreadHandle - Supplies a referenced pointer to the thread to terminate. ExitStatus - Supplies the exit status associated with the thread. DirectTerminate - TRUE is its ok to exit without queing an APC, FALSE otherwise --*/ { NTSTATUS Status; PKAPC ExitApc=NULL; ULONG OldMask; PAGED_CODE(); if (Thread->CrossThreadFlags & PS_CROSS_THREAD_FLAGS_BREAK_ON_TERMINATION) { PspCatchCriticalBreak("Terminating critical thread 0x%p (in %s)\n", Thread, THREAD_TO_PROCESS(Thread)->ImageFileName); } if (DirectTerminate && Thread == PsGetCurrentThread()) { ASSERT (KeGetCurrentIrql() < APC_LEVEL); PS_SET_BITS (&Thread->CrossThreadFlags, PS_CROSS_THREAD_FLAGS_TERMINATED); PspExitThread (ExitStatus); // // Never Returns // } else { // // Cross thread deletion of system threads won't work. // if (IS_SYSTEM_THREAD (Thread)) { return STATUS_ACCESS_DENIED; } 呵呵 ,没什么意思,之前某f神神秘秘不敢放出来,问它是不是改system thread的还说不是~哈 |
|
|
6楼#
发布于:2007-08-01 13:28
- - 用了下那个darkspy,系统直接卡住。。。WOW我恨你。。。
|
|
|
7楼#
发布于:2007-08-01 17:35
引用第5楼WQXNETQIQI于2007-08-01 11:58发表的 : 某f是我吧,呵呵,炉子!=我,明白?我不是改这个的。 |
|
8楼#
发布于:2007-08-01 17:48
引用第1楼wowocock于2007-08-01 09:54发表的 : MS VPC + Windows XP SP2,直接蓝屏。 |
|
9楼#
发布于:2007-08-01 19:08
用VBRezQ正式版反编译一下。。。
API函数还是一清二楚的 |
|
10楼#
发布于:2007-08-01 19:38
嗯,的确是把线程改成System Thread,还过俺这破玩意儿可以结束之。
俺可是通过反ntoskrnl.exe自己实现的PsGetNextProcessThread(); 本来是想把PspTerminateThreadByPointer()也反了的,不过在PspExitThread()上卡住了,不知道有谁反过这个函数,DDK能编译的哈。 事实上要保护自己实在是太困难了,要搞破坏太容易了! |
|
|
11楼#
发布于:2007-08-02 09:30
上面2-10楼的没看懂,只会应用。
用icesword强制结束线程的方法能结束掉。好像我说的文不对题。 MJ0011的那个360FileKill v1.6.0002的确很强,轻松干掉任何文件,现在为止还没有碰到干不掉的。佩服。 |
|
12楼#
发布于:2007-08-07 15:44
引用第10楼zjjmj2002于2007-08-01 19:38发表的 : 老大,我试了试你的这个,好像结束不了啊~ |
|
13楼#
发布于:2009-02-21 17:20
Lz 能不能把源代码给俺一份啊!
需要的很啊! |
|
14楼#
发布于:2009-04-11 15:54
我发不了附件吗???????
要源码告诉我mail(不是原作,是GGY OEM版本) |
|
15楼#
发布于:2009-04-17 14:55
回 14楼(coyove) 的帖子
我要一份,sunrain232@163.com ,谢谢! |
|
16楼#
发布于:2009-04-27 20:11
07年啊,学习,LS要源码搞啥,现在干掉他的太多了。
|
|
17楼#
发布于:2009-06-08 20:00
回 楼主(maps123) 的帖子
NtSystemDebugControl 改CrossThreadFlags标志的.结束也很容易, 把CrossThreadFlags标志改回来再删除 |
|
18楼#
发布于:2009-08-15 10:19
通过写内核空间使插APC失效
|
|
19楼#
发布于:2009-12-19 13:13
我靠,你们都是告诉,发些exe;连代码都要反汇编,你们这些sb真tmd的有时间,尤其是楼主这种垃圾,我看你时间多了,多去破解几个软件嘛,没事在这里误导我们这些菜鸟。
|
|
上一页
下一页