黑客24小时在线接单网站

黑客在线接单,网站入侵,渗透测试,渗透网站,入侵网站

*** 安全编程:结束进程

通常,最理想的状态是让程序自己结束。当过程正常退出时,会调用ExitProcess()函数。使用调用SendMessage()函数发送WM_CLOSE消息到目标窗口的 *** 将使程序正常结束并退出。本文介绍了类似任务管理器的功能,并强制结束了指定的过程。

1. 结束指定过程的示例代码

解释如何通过结束记事本来结束其他过程。结束记事本过程的代码如下:

  • #include<Windows.h>
  • intmain(intargc,char*argv[])
  • {
  • HWNDhNoteWnd=FindWindow(NULL,"无标题-记事本");
  • if(hNoteWnd==NULL)
  • {
  • return-1;
  • }
  • DWORDdwNotePid=0;
  • GetWindowThreadProcessId(hNoteWnd,&dwNotePid);
  • if(dwNotePid==0)
  • {
  • return-1;
  • }
  • HANDLEhNoteHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwNotePid);
  • if(hNoteHandle==NULL)
  • {
  • return-1;
  • }
  • BOOLbRet=TerminateProcess(hNoteHandle,0);
  • if(bRet==TRUE)
  • {
  • MessageBox(NULL,"结束过程成功",NULL,MB_OK);
  • }
  • CloseHandle(hNoteHandle);
  • return0;
  • }
  • 编译连接上述程序,然后打开一个空的记事本程序,操作编译程序,会发现记事本程序的过程已经结束,这里的程序弹出一个简单的对话框,提示“结束过程成功”。

    2. 结束过程所需API函数说明

    在上述程序代码中,结束过程API共有4个函数,分别是FindWindow()、GetWindowThreadProcessId()、OpenProcess()和TerminateProcess()。

    GetWindowThreadProcessId()函数的定义如下:

  • DWORDGetWindowThreadProcessId(
  • HWNDhWnd,
  • LPDWORDlpdwProcessId
  • );
  • 参数说明如下。

    hWnd:代码中的窗口句柄是 FindWindow()函数获取。

    lpdwProcessId:这个参数是指向 DWORD 类型的指针,用户返回窗口句柄所对应的进程 ID。

    GetWindowThreadProcessId()函数在获得过程中ID 之后,进程 ID 传递给 OpenProcess() 函数获得过程中的句柄。OpenProcess()函数的定义如下:

  • HANDLEOpenProcess(
  • DWORDdwDesiredAccess,
  • BOOLbInheritHandle,
  • DWORDdwProcessId
  • );
  • 参数说明如下。

    dwDesiredAccess:为了方便打开进程获得的访问权限,参数可以永远是 PROCESS_ALL_ACCESS。

    bInheritHandle:指定获得的句柄能否继承,一般选择不继承,传递值为 FALSE。

    dwProcess:指定打开的过程 ID 号,这个过程 ID 号是由 GetWindowThreadProcessId()获得的。

    该函数的返回值为过程中的句柄,可通过此句柄调用 TerminateProcess()函数结束。TerminateProcess()函数的定义如下:

  • BOOLTerminateProcess(
  • HANDLEhProcess,
  • UINTuExitCode
  • );
  • 参数说明如下。

    hProcess:为了结束过程的过程句柄,句柄已经通过 OpenProcess()获得函数。

    uExitCode:退出代码的过程 0 值。

    通过一些列API函数完成了一个完成过程的程序。完成程序的之一步是获得窗口的句柄。如果没有窗口,是否没有办法通过程序完成过程?事实上,还有办法。

    从上面的3个API从函数中可以看出,过程可以通过过过程窗口得到ID,通过进程的ID可以得到过程的句柄。它们本身是相关的。因此,当需要使用相关资源时,如果不能直接获得,不妨以这种方式逐步获得。

       
    • 评论列表:
    •  断渊安娴
       发布于 2022-06-01 06:53:41  回复该评论
    • 义如下:DWORDGetWindowThreadProcessId(HWNDhWnd,LPDWORDlpdwProcessId);参数说明如下。hWnd:代码中的窗口句柄是 FindWindow()函数获取。
    •  痴妓比忠
       发布于 2022-06-01 06:57:00  回复该评论
    • TerminateProcess(HANDLEhProcess,UINTuExitCode);参数说明如下。hProcess:为了结束过程的过程句柄,句柄已经通过 OpenProcess()获得函数。u
    •  闹旅浪胚
       发布于 2022-06-01 01:38:43  回复该评论
    • .h>intmain(intargc,char*argv[]){HWNDhNoteWnd=FindWindow(NULL,"无标题-记事本");if(hNoteWnd==NULL){r
    •  怎忘拥醉
       发布于 2022-06-01 02:45:49  回复该评论
    • 口的方法将使程序正常结束并退出。本文介绍了类似任务管理器的功能,并强制结束了指定的过程。1. 结束指定过程的示例代码解释如何通过结束记事本来结束其他过程。结束记事

    发表评论:

    Powered By

    Copyright Your WebSite.Some Rights Reserved.