您的位置:首页 > 其它

简单谈下 怎么避免游戏检测非法调用call

2011-01-17 02:57 302 查看
一般情况下 按照以下处理方式就可以避免了



例如 龙OL 这样处理就不会被检测到非法调用call了







在游戏地址空间找到一处空位置 写入如下机器码



004014D9 58 pop eax ; 弹出返回地址

004014DA A3 E8144000 mov dword ptr ds:[4014E8],eax ; 保存返回地址

004014DF 58 pop eax ; 弹出选怪call地址

004014E0 FFD0 call eax ; 在游戏空间内调用了选怪call

004014E2 - FF25 E8144000 jmp dword ptr ds:[4014E8] ; 返回调用处

004014E8 90 nop ; 004014E8下面4个字节用来保存返回地址

004014E9 90 nop

004014EA 90 nop

004014EB 90 nop

004014EC 90 nop

004014ED 90 nop

004014EE 90 nop













下来我们看看 怎么调用他 (004014D9)



004014D4 90 nop

004014D5 C2 0400 ret 4 ; 比如这里是有一个参数的选怪call 所以是 ret 4

004014D8 90 nop







push 1 ;压入选怪参数

push Spy4Win.004014D5 ; 压入选怪call地址 比如这个地址是选怪call

mov eax,Spy4Win.004014D9 ; 这里是我们在exe地址空间内找到的可用地址

call eax





这样 到选怪call以后 调用选怪call的就是游戏自己了



















另外还有一种检测方式就是游戏检测是否是游戏窗口主线程在调用游戏的call



这种方式就通过hook游戏窗口过程 也就是窗口子类化



子类化以后通过发送自定义消息给游戏窗口来实现在游戏窗口主线程中调用游戏call
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: