首页
社区
课程
招聘
[分享]taskmgr.exe 结束任务
发表于: 2012-9-5 11:19 21631

[分享]taskmgr.exe 结束任务

2012-9-5 11:19
21631
收藏
免费 6
支持
分享
最新回复 (51)
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
我是说12楼那个
2012-9-5 16:40
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
27
我在想,驱动是通过判断进程eprocess和路径来实现的,
如果吧杀进程的路径改了,驱动也会判断失效的。

只要我自己的程序在退出的时候搞点东西,这样就没什么问题了。
2012-9-5 16:41
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
28
12楼那个是可以关,
你是通过关主线程来实现的。
我没有hook TerminateThread,还得再改改。。

上传的附件:
2012-9-5 16:46
0
雪    币: 22
活跃值: (443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
关于结束进程的种种 请看这里 应该是最全的了 - -
http://bbs.pediy.com/forumdisplay.php?f=76&prefixid=phpforce_54
2012-9-5 17:26
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
那都是多少年的老黄历了。
2012-9-5 17:40
0
雪    币: 22
活跃值: (443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
可笑。。

http://bbs.pediy.com/showthread.php?t=50780&prefixid=phpforce_54

看1楼  OpenThread ---> TerminateThread  难道你用的方法是新黄历的?
2012-9-5 17:56
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
我没说是新黄历啊,我只是说你的那些也是老的而已,这个帖子里,当然是能干掉楼主的保护就行,如果楼主的保护老黄历搞不了,自然能有新的

再说,14楼那个你的黄历里没有吧,因为是针对楼主的写法的缺陷来打的,这就叫随机应变,千变万化,飞花摘叶,亦可杀人。

楼主新版这么一改倒也挺搞笑的,随便什么文件打不开就保护了,我机器上IE什么的全被保护了~
2012-9-5 18:22
0
雪    币: 229
活跃值: (498)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
33
SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)ExitProcess,GetModuleHandle(L"KERNEL32"),YouThreadId);
getchar();

////////////////////////
SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)ExitProcess,GetModuleHandle(L"KERNEL32"),YouThreadId);
PostMessage(HWND_BROADCAST,RegisterWindowMessage(L"XXXXXXXXXXXX"),0,0);
2012-9-5 20:40
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
你们开始玩复古了?
2012-9-5 20:57
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
35
枚举xx  表 直接结束...
2012-9-5 23:50
0
雪    币: 1040
活跃值: (1293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
有意思么……我记得MJ几百年前的那个DEMO就没人能结束掉
2012-9-5 23:53
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
37
进程防杀我没搞过,它是不是很老的东西,跟我无关。对我来说,没搞过的东西就是新东西。
会的鸟赶紧飞开就是了。

更新了程序,增加了对terminatethread的hook ,并修复了一些漏洞。
现在不管oooshit.exe,还是oooshit2.exe都杀不了了。

顺便说1下,
oooshit.exe是通过枚举进程信息,然后用terminatethread来杀主线程;
而oooshit2.exe就有点的猥琐了,我估计kman看了下我的驱动,才这样搞的。
在驱动里,我是把内核路径转换为dos路径进行比较,转的过程中会打开需要保护的进程文件。
而oooshit2.exe就是先把要保护的进程文件打开了,然后我在驱动中打开文件时就会报错,所以无法将内核路径转换为dos路径,就无法比较了。


呵呵,kman的思路很好,非常感谢。

我现在的比较函数如下,kman继续搞搞看。

BOOL IsNeedProtectEx( IN PEPROCESS pEProcess )
{
        BOOL bRet = FALSE;
        UNICODE_STRING uniDosPath;
        PUNICODE_STRING pImageFileName = NULL;               

        if( wcslen( g_wszDestPath ) > 0 && GetProcessImagePath( pEProcess, &pImageFileName ) )
        {
                if( ConvertKernelPathToDosPath( pImageFileName, &uniDosPath ) ) // 比较dos路径
                {
                        if( _wcsicmp( uniDosPath.Buffer, g_wszDestPath ) == 0 )
                        {
                                bRet = TRUE;                               
                                DbgOutput( "\r\nIn IsNeedProtectEx(), Process{%wZ} is being protected.", pImageFileName );
                        }
                }
                else // 无法得到dos路径,则比较内核路径
                {
                        WCHAR szKrnlPath[ MAX_PATH + 20 ] = { 0 };
                        if( ConvertDosPathToKrnlPath( g_wszDestPath, szKrnlPath ) )
                        {
                                if( _wcsicmp( pImageFileName->Buffer, szKrnlPath ) == 0 )
                                {
                                        bRet = TRUE;                               
                                        DbgOutput( "\r\nIn IsNeedProtectEx(), Process{%wZ} is being protected.", pImageFileName );
                                }
                        }
                }

                ExFreePool( pImageFileName );
        }

        return bRet;
}
2012-9-6 02:14
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
38
保护个process有这么复杂么?
对于高版本的Windows直接
PsAcquireProcessExitSynchronization(Process)
然后就各种打不开了,结束不掉了~
2012-9-6 07:06
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
39
这里只是在xp下,
2012-9-6 08:59
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
40
我喜欢 guxinyi 支持 guxinyi
2012-9-6 09:23
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
我不搞了,他们都笑话我玩复古。
2012-9-6 11:07
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
42
淡定,

等我把win7的搞出来你再搞,

2012-9-6 11:32
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
个人觉得研究这种东西意思不大
2012-9-6 19:50
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
44
XP也一样把rundown 加一下,瞬间各种不能结束~
2012-9-7 14:11
0
雪    币: 2882
活跃值: (1267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
45
XP也一样把rundown 加一下,瞬间各种不能结束~

老v貌似啥都知道xxx
2012-9-7 17:47
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
这种东西 值得研究,研究 研究 研究着,各种 纰漏 各种 新招就 浮生水面了,研究XP的 稍微有点 ……
2012-9-7 19:14
0
雪    币: 326
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
47
TerminateProcess   pid + 1 +2 +3 可有过滤?
2012-9-13 17:36
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
48
我在xp下试了一下,加了ExAcquireRundownProtection后,杀进程后其进程信息还在,但是却把程序界面关掉了。无意义。

                {
                        PEPROCESS pProcess = NULL;
                        HANDLE ProcessHandle = NULL;
                        CLIENT_ID ClientId;
                        OBJECT_ATTRIBUTES ObjectAttributes;

                        ClientId.UniqueProcess = (HANDLE)1540;
                        ClientId.UniqueThread = NULL;

                        InitializeObjectAttributes( &ObjectAttributes, NULL, 0, NULL, NULL );
                        ntStatus = ZwOpenProcess( &ProcessHandle, PROCESS_ALL_ACCESS, &ObjectAttributes, &ClientId );
                        if( NT_SUCCESS( ntStatus ) )
                        {
                                ntStatus = ObReferenceObjectByHandle( ProcessHandle,
                                        PROCESS_ALL_ACCESS,
                                        NULL,
                                        KernelMode,
                                        (PVOID*)&pProcess,
                                        NULL );
                                if( NT_SUCCESS( ntStatus ) )
                                {
                                        PEX_RUNDOWN_REF pRef = (PEX_RUNDOWN_REF)( (PBYTE)pProcess + 0x080 ); // pProcess->RundownProtect
                                        if( ExAcquireRundownProtection( pRef ) )
                                                DbgOutput( "\r\nExAcquireRundownProtection() success." );
                                        else
                                                DbgBreakPoint();

                                        ObDereferenceObject( pProcess );
                                }
                                else
                                        DbgBreakPoint();

                                ZwClose( ProcessHandle );
                        }
                        else
                                DbgBreakPoint();
                }

上传的附件:
2012-9-26 15:29
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
49
“保护个process有这么复杂么?
对于高版本的Windows直接
PsAcquireProcessExitSynchronization(Process)
然后就各种打不开了,结束不掉了~


win7下也跟xp下一样,

                {
                        PEPROCESS pProcess = NULL;
                        HANDLE ProcessHandle = NULL;
                        CLIENT_ID ClientId;
                        OBJECT_ATTRIBUTES ObjectAttributes;

                        ClientId.UniqueProcess = (HANDLE)2580;
                        ClientId.UniqueThread = NULL;

                        InitializeObjectAttributes( &ObjectAttributes, NULL, 0, NULL, NULL );
                        ntStatus = ZwOpenProcess( &ProcessHandle, PROCESS_ALL_ACCESS, &ObjectAttributes, &ClientId );
                        if( NT_SUCCESS( ntStatus ) )
                        {
                                ntStatus = ObReferenceObjectByHandle( ProcessHandle,
                                        PROCESS_ALL_ACCESS,
                                        NULL,
                                        KernelMode,
                                        (PVOID*)&pProcess,
                                        NULL );
                                if( NT_SUCCESS( ntStatus ) )
                                {
                                        ntStatus = PsAcquireProcessExitSynchronization( pProcess );
                                        if( NT_SUCCESS( ntStatus ) )
                                                DbgOutput( "\r\nPsAcquireProcessExitSynchronization() success." );
                                        else
                                                DbgBreakPoint();

                                        ObDereferenceObject( pProcess );
                                }
                                else
                                        DbgBreakPoint();

                                ZwClose( ProcessHandle );
                        }
                        else
                                DbgBreakPoint();
                }

上传的附件:
2012-9-26 15:52
0
雪    币: 122
活跃值: (72)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
50
楼主,我和你有源啊。
速速看看源码。
2012-9-26 15:58
0
游客
登录 | 注册 方可回帖
返回
//