爱内涵易语言论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

快捷登录

在线
客服

支付故障请联系客服服务时间: 9:00-24:00

选择下列客服马上在线沟通:

快速
发帖

客服
热线


7*24小时客服服务热线

关注
微信

关注微信二维码
顶部
查看: 3176|回复: 3

游戏Call技术-绑定主线程调用CALL技术(反游戏检测call)

[复制链接]

1766

主题

1852

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
9845
巨币
12233
积分
39555
发表于 2020-5-27 20:18:50 | 显示全部楼层 |阅读模式
我们在写call调用游戏进程里call时候,经常外挂运行工作一段时间后,游戏就会断线或崩溃掉,但是经过检查,7 l, W0 ?( \! P9 c. O3 t
发现自己调用CALL的代码又没发现写错误,这到底是怎么呢?{:100_162:}
1 U' j' ]2 R0 Y. m+ \* E" j  \7 w其实这些是现在游戏的一些游戏反外挂检测导致的,并不是我们调用call的代码没写对,) K# J4 G3 }) w* N- ]4 u
现在的游戏调用自己游戏进程里的各种CALL,都是游戏自己的主线程来执行的,如果不是游戏的主线程调用CALL,
6 H0 q7 A* U' P" B( ~# _就会奔溃或游戏掉线,
0 j) z0 ]! \$ R, S& w$ k2 b, R7 z
所以我们的外挂程序都是在游戏进程里创建新的线程来执行我们的代码的,创建来线程不是游戏的主线程,
! C6 E. e0 D9 `1 C只是游戏进程里的子线程,如果游戏会对CALL调用时候检测是不是自己进程的主线程来执行的,
3 k4 f9 e) V7 K* n2 u就会认为是非法调用CALL的外挂程序,所以就会断掉自己的网络,来阻止我们外挂操作游戏!{:100_172:}- Y2 V0 v8 t$ |9 U* R

; w& W; T* m3 x* \# S下面为了生动点让大家了解这里面的道理,我们来设计一个模拟游戏程序.exe  Y  u+ o0 }5 l1 d1 Z' s
模拟游戏程序.exe 的代码如下:' e. U  i+ G, T1 Y! }
' ^6 s) z4 ?- s2 J
  Q/ ~$ T6 D0 e8 R5 B
里面设置一个测试函数,这个函数在被调用时候& r- Z5 ?# H+ o5 \
会判断是自己进程里的主线程执行的,还是外界其他程序创建线程(非自己主线程)来执行调用的。然后做出相关提示
6 l5 M1 b( D, C来真实模拟游戏以自身主线程来执行自己进程内函数的效果,
& \7 l+ E% e9 R0 @如发现不是自己进程主线程调用函数,就弹出警告(相当于游戏崩溃或掉线)
# J4 o; \, h: t( P) h0 T再贴上调用模拟游戏程序.exe 里面的测试函数,的调用函数.exe代码:) ^! R; R& d+ a; J8 j& Y0 |1 S

' I9 b. {- T- j" H7 k4 c6 p; V. s3 }
调用函数.exe 就相当于我们的外挂程序,调用指定进程里的函数CALL功能,这里我演示了2种调试方式
/ l$ a$ v$ a# i一种是普通调用我们的代码,一种是绑定游戏(模拟游戏程序.exe)主线程来调用我们的代码。
" ~6 J* l. t/ C! h好了,我们来看测试效果:+ b& b' v5 w( _

/ c6 \' P- ~  _3 h运行后,我们发现,当我们的外挂(调用函数.exe)以普通方式调用游戏(模拟游戏程序.exe)进程里的CALL时候,
+ D. x, M$ e0 h' }1 w游戏发现不是自己进程主线程去执行的,就弹出了警告信息框(相当于游戏自动掉线或崩溃),& u4 |9 t5 j5 l$ _7 Q' l( i
而发现是自己主线程来去执行的,就正常运行!
  l# ~# i  g3 z2 c1 L0 M0 s0 G# t: u$ N& f
.子程序 调用函数E, 整数型, 公开, 执行指定进程中某个函数入口,返回函数执行后的EAX值.2 n: @/ P* [6 n6 B* {; @
.参数 进程句柄, 整数型, , -1=自身进程.欲调用的函数所在进程句柄
5 B4 I1 A- h1 {7 }.参数 函数地址, 整数型, ,* D! U2 i5 p" _& G: s& A$ c6 {& \
.参数 函数参数, 整数型, 可空 数组, 空=无参数,可以提供多参数.OD分析CALL指令往上推算,离CALL最近为参数[1].再往上是 参数[2]…3 X. W& X6 w% T6 ~+ \8 N8 f# e# v% F
.参数 寄存器, 类型_寄存器, 可空, 可以设置各个CPU寄存器的值,注意 不支持设置 EBP,ESP,ST浮点数 这些寄存器.# j3 y* y( h; @
.参数 绑定线程, 整数型, 可空, 提供绑定线程的线程句柄,代码将在该线程环境执行.空=0=自进程时在现线程下执行,跨进程将创建远线程执行% f# t2 u6 F$ k6 U% {* g9 R
.参数 取消保护, 逻辑型, 可空, 默认=假=采用SEH异常保护机制,真=不使用异常保护.若保护后CALL无效,再试试取消保护.
$ z/ C- Y( a! O7 T5 q3 l; S1 r! T
* W9 {- L- k  `/ a' I1 C调用函数E
: {, m6 m# ~2 ^! y命令可以绑定目标进程里指定的线程ID,来执行我们的代码,这样就可以有效的躲避对CALL调用的线程检测了,  r8 d8 W. v7 ?' v& d4 d/ F
但是如果游戏有Lua的话,使用时候要避免与游戏本身中的lua事件岔开调用时间,否则游戏自己主线程执行lua时候,# C- X3 p1 I( L5 ?! A. H
你再这个时候进行抢占游戏主线程去执行你的call代码,就会导致游戏崩溃,所以每次CALL的时候,最好间隔时间调用!
* H3 K5 C& q7 J1 A
3 P% `9 u5 s' O. H& @如果是外挂是DLL,那么在DLL里要绑定线程执行代码的话,可以使用 模块6.5里面的 线程_调用 ()命令即可!7 r& i: n; T6 i6 J, [. M3 i1 h

& k4 K/ x# q. }# E8 {6 K最后说一句:  f4 r, ?6 c2 q9 L) i9 ?
不是我军不够强大,只怪游戏太狡诈,以各种手段来阻止我们外挂,但是道高一尺魔高一丈,
* C+ ^5 f, y9 t( O只要知道了游戏的检测把戏.我们就有方法来对待3 K- c) ], s: \) o1 Q
: E$ m/ j/ p; v$ f7 W2 c

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

2

帖子

1

积分

程序员

Rank: 1

金币
0
巨币
4
积分
1
发表于 2021-1-21 16:34:32 | 显示全部楼层
模块呢~~~~~~~~~~~~~~
回复

使用道具 举报

0

主题

39

帖子

37

积分

终身VIP+

Rank: 5Rank: 5

金币
0
巨币
149
积分
37
发表于 2021-1-22 06:03:22 | 显示全部楼层
模块呢~~~~~~~~~~~~~~
回复

使用道具 举报

0

主题

5

帖子

3

积分

程序员

Rank: 1

金币
0
巨币
13
积分
3
发表于 2021-8-20 15:37:25 | 显示全部楼层
诫令一:尽量用物质来引诱和败坏他们的青年,鼓励他们藐视、鄙视、进一步公开反对他们原来应受的思想教育。纵观全世界,国民教育课是一种世界“惯例”,而且往往与培养国民的爱国主义情结有关,被世界各国普遍推行。美国人的国民教育更是普及到了每个课堂,从一开始便向孩子展现一种相当正规、庄重的爱国形式和氛围,从穿什么衣服,到唱什么歌,都直接接轨成人世界。反观香港政府决定在中小学生课堂新设德育及国民教育科时,未成年的黄之锋以“中共洗脑”为由成功逼使港府取消推行有关课程,最终导致香港学生缺乏明确的国家认同和文化归属感、港独思想在学生群体中泛滥,为近年来香港的动乱埋下伏笔。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|爱内涵易语言论坛 ( 浙ICP备19016710号-3 )

GMT+8, 2022-1-17 16:10 , Processed in 0.089593 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表