绑定主线程执行技术

更新时间:2023-04-22 12:46:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

HOOK主线程执行-绑定线程-HOOK主线程

前言:

我们在写call调用游戏进程里call时候,经常外挂运行工作一段时间后,

游戏就会断线或崩溃掉,但是经过检查,

发现自己调用CALL的代码又没发现写错误,这到底是怎么呢?

其实这些是现在游戏的一些游戏反外挂检测导致的,并不是我们调用call的代码没写对, 现在的游戏调用自己游戏进程里的各种CALL,都是游戏自己的主线程来执行的,如果不是游戏的主线程调用CALL,就会奔溃游戏或游戏掉线,

因为我们的外挂程序都是在游戏进程里创建新的线程来执行我们的代码的,

创建来线程来执行CALL,而不是用游戏的主线程,

创建的线程,只是游戏进程里的子线程

,

如果游戏对CALL调用时候检测执行代码的线程来检测是否是游戏主线程执行的, 那么游戏就会认为你是在非法调用CALL的外挂程序,所以就会断掉自己的网络,

以便来阻止我们外挂操作游戏!

下面为了生动点让大家了解这里面的道理,我们来设计一个模拟游戏程序.exe

模拟游戏程序.exe 的代码如下:

HOOK主线程执行-绑定线程-HOOK主线程

我们里面设置一个模拟测试游戏的某个CALL功能函数,

这个函数在被调用时候会去判断是否是进程主线程来执行的,还是外界其他程序创建线程(非自己主线程)来执行调用的,然后做出相关提示

这样来真实模拟游戏以自身主线程来执行自己进程内函数的效果,

如发现不是自己进程主线程调用函数,就弹出警告(相当于游戏崩溃或掉线)。

再贴上调用 模拟游戏程序.exe 里面的测试函数,的调用函数.exe代码:

调用函数.exe 就相当于我们的外挂程序,调用指定进程里的函数CALL功能,

这里我演示了2种调试方式

一种是绑定游戏(模拟游戏程序.exe)主线程来调用目标进程里的CALL功能。

一种是我们普通方式调用目标进程里(模拟游戏程序.exe)的CALL功能,

好了,我们来看测试效果:

HOOK主线程执行-绑定线程-HOOK主线程

运行后,我们发现,当我们的外挂(调用函数.exe)以普通方式调用游戏(模拟游戏程序.exe)进程里的CALL时候,

游戏(模拟游戏程序.exe)发现了不是自己进程主线程去执行的,就弹出了警告信息框(相当于游戏自动掉线或崩溃),

而用绑定线程方式去调用它进程里的CALL时,它发现是自己主线程来去执行的,所以就正常运行!

下面介绍下这个功能的参数

子程序名:调用函数E

调用一个指定进程中一个函数,返回call的返回真,

返回值类型:逻辑型

参数<1>的名称为“进程句柄”,类型为“整数型”。

参数<2>的名称为“调用地址”,类型为“整数型”。

HOOK主线程执行-绑定线程-HOOK主线程

参数<3>的名称为“寄存器”,类型为“类型_寄存器”,允许接收空参数数据。

参数<4>的名称为“参数”,类型为“整数型”,允许接收空参数数据,需要接收数组数据。 参数<5>的名称为“绑定线程ID”,类型为“整数型”。注明:绑定指定进程里的指定线程来执行函数,防止被游戏检测到非法调用CALL。

调用函数E

命令可以绑定目标进程里指定的线程ID,来执行我们的代码,这样就可以有效的躲避对CALL调用的线程检测了,

但是如果游戏有Lua的话,使用时候要避免与游戏本身中的lua事件岔开调用时间,否则游戏自己主线程执行lua时候,

你再这个时候进行抢占游戏主线程去执行你的call代码,就会导致游戏崩溃,所以每次CALL的时候,最好间隔时间调用!

如果是外挂是DLL,那么在DLL里要绑定线程执行代码的话,可以使用 模块6.5里面的 线程_调用 ()命令即可!

最后说一句:

O(∩_∩)O~ 不是我军不够强大,只怪游戏太狡诈,以各种手段来阻止我们写外挂,但是呢,所谓道高一尺魔高一丈,

只要知道了游戏的检测把戏.我们就有方法来对待 ,本节源码的请到下载

本文来源:https://www.bwwdw.com/article/dn2q.html

Top