windows – 强制任何正在运行的进程崩溃
发布时间:2020-12-14 02:03:08 所属栏目:Windows 来源:网络整理
导读:我想崩溃我选择的正在运行的程序(例如,notepad,becrypt,word)用于软件测试. 我知道如何BSOD,我知道如何导致我编写的程序崩溃,我知道如何结束进程 – 但是如何崩溃现有进程我不知道! 任何帮助? 解决方法 好吧,在远程进程上使用CreateRemoteThread并调用可靠
我想崩溃我选择的正在运行的程序(例如,notepad,becrypt,word)用于软件测试.
我知道如何BSOD,我知道如何导致我编写的程序崩溃,我知道如何结束进程 – 但是如何崩溃现有进程我不知道! 任何帮助? 解决方法
好吧,在远程进程上使用CreateRemoteThread并调用可靠地崩溃进程的东西[1].我不确定CreateRemoteThread是否可以防止空指针,但是您可以将空页中的地址传递给它并让远程进程执行该指针.
[1]空指针或空页访问,除以零,调用特权指令,int3 … 例: #include <stdio.h> #include <tchar.h> #include <Windows.h> BOOL setCurrentPrivilege(BOOL bEnable,LPCTSTR lpszPrivilege) { HANDLE hToken = 0; if(::OpenThreadToken(::GetCurrentThread(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,FALSE,&hToken) || ::OpenProcessToken(::GetCurrentProcess(),&hToken)) { TOKEN_PRIVILEGES tp; LUID luid; if(!::LookupPrivilegeValue( NULL,// lookup privilege on local system lpszPrivilege,// privilege to lookup &luid ) ) // receives LUID of privilege { ::CloseHandle(hToken); return FALSE; } tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = (bEnable) ? SE_PRIVILEGE_ENABLED : 0; // Enable the privilege or disable all privileges. if(!::AdjustTokenPrivileges( hToken,&tp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES) NULL,(PDWORD) NULL) ) { CloseHandle(hToken); return FALSE; } ::CloseHandle(hToken); } return TRUE; } int killProcess(DWORD processID) { HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,processID); if(hProcess) { if(!setCurrentPrivilege(TRUE,SE_DEBUG_NAME)) { _tprintf(TEXT("Could not enable debug privilegen")); } HANDLE hThread = ::CreateRemoteThread(hProcess,NULL,(LPTHREAD_START_ROUTINE)1,NULL); if(hThread) { ::CloseHandle(hThread); } else { _tprintf(TEXT("Error: %dn"),GetLastError()); ::CloseHandle(hProcess); return 1; } ::CloseHandle(hProcess); } return 0; } int __cdecl _tmain(int argc,_TCHAR *argv[]) { killProcess(3016); } 当然,您需要在调用killProcess时调整PID.使用WNET DDK编译并在2003 Server R2上测试. 这里的要点是我们告诉远程进程在地址0x1((LPTHREAD_START_ROUTINE)1)执行代码,该代码在空页面内但不是空指针(如果有检查).函数周围的问题,特别是setCurrentPrivilege用于获得完全调试权限,因此我们可以做我们的恶行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008 – Windows Server 2008自行关闭
- windows – 同时重命名和域加入机器的风险是什么(如果有的话
- dos 命令
- compass-sass – 如何在Windows上安装Compass
- windows – WSUS和Pulled Patches
- windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
- windows c线程等待队列数据推送
- 如何浏览ActiveX DLL的类和方法?
- emacs:控制选项卡缓冲循环,或堆栈缓冲循环,类似于windows之
- windows-server-2008 – 如何在发布之前保护.NET(MVC)网站?