找回密码
 请使用中文注册

用两个简单的API,实现暂停线程、恢复线程功能!

2023-5-5 22:28| 发布者: 开心| 查看: 13| 评论: 0

阅读字号:

摘要:   在我们制作游戏脚本的时候,在过保护的时候,很容易遇到需要暂停某进程的功能!今天来教大家这个功能是怎么实现的!  很简单,就是调用了两个API。NtSuspendProces ...
      在我们制作游戏脚本的时候,在过保护的时候,很容易遇到需要暂停某进程的功能!今天来教大家这个功能是怎么实现的!

  很简单,就是调用了两个API。NtSuspendProcess:暂停进程
API定义: Private Declare Function NtSuspendProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long '进程暂停
我们可以看到这个API只有一个传入的参数hProc,也就是进程句柄NtResumeProcess:恢复进程
API定义: Private Declare Function NtResumeProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long '进程恢复
我们可以看到这个API也只有一个传入的参数hProc,也就是进程句柄  我们今天以一单机游戏为例:我们先找到该游戏的进程PID。

900 510
  2.我们可以看到,游戏的进程PID为:1132,我们首先需要获得该游戏的进程句柄。

  我们需要用到OpenProcess这个API。
编程代码如下:
hP = OpenProcess(&H1F0FFF, False, Text1) '获得进程句柄,TEXT1为进程PID
  3.获得到了进程PID,我们编写代码。

VB6.0,完整代码:

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
'打开一个已存在的进程对象,并返回进程的句柄
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
'关闭一个内核对象(其中包括文件、文件映射、进程、线程、安全和同步对象等)
Private Declare Function NtSuspendProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long '进程暂停
Private Declare Function NtResumeProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long '进程恢复
Private Sub Command1_Click()
Dim hP As Integer
hP = OpenProcess(&H1F0FFF, False, Text1) '获得进程句柄
NtSuspendProcess (hP) '暂停
CloseHandle (hP) '关闭句柄,释放内存
End Sub
Private Sub Command2_Click()
Dim hP As Integer
hP = OpenProcess(&H1F0FFF, False, Text1) '获得进程句柄
NtResumeProcess (hP) '恢复
CloseHandle (hP) '关闭句柄,释放内存
End Sub

  3.运行程序,我们测验看下效果!
  OK!我们可以看到画面已经卡住了!是不是很简单呢?

  其实API的调用真的很简单!我们学习API,能让我们的编程水平进一步的提升,也能让以前想也不敢想的功能轻松实现!有什么问题或者建议给我留言吧!

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-8-17 11:58 , Processed in 0.210168 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部