郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

郁金香终身VIP管理员QQ150330575项目合作(有实力的+)视频教程+每月更新+QQ群
飞郁视频分享(每周更新)
查看: 2231|回复: 3

奕奕平台全图制作第四弹——山人自有妙计

[复制链接]
发表于 2015-5-21 11:25:39 | 显示全部楼层 |阅读模式
从我们测试结果看,“4分半掉线”,意味着对于这段代码的CRC检测不是持续进行的,检测间隔时间很长。
于是我有了第一个想法。
开局时修改此处代码,在1min代码执行完之后,再把修改的地方还原。
再开一局测试,只修改这一处代码(11xp.dll+6cd60 push ebp改ret 8),1min之后还原回去。
测试结果:游戏进行多久都不会掉线。
分析一下这个方法的优缺点:好处就是思想简单,容易实现。但是可应用范围不广。此处这段代码在一局游戏中只执行一次,而且CRC在代码执行之后很久才进行。如果游戏期间11平台又调用该代码对Game.dll进行还原,而且如果第二次CRC的时间不固定,有可能第5min又进行校验,这样这种方法就太冒险了,有可能代码还原的晚,就会被检测到。
一般的CRC并不是对所有代码段进行校验,有的程序只对代码的关键部分(比如代码头,重要的call,jmp等位置)进行检测,所以我接着就考虑对call WriteProcessMemory这句处理。
可惜11平台对这段代码都进行检测,哪里都不能修改。
我说过11平台不会对所有代码都检测,哪里平台认为不重要,不会去检测呢?
系统API——WriteProcessMemory。
既然我们不想让11平台调用它,我们可以直接从这个函数入手。
我们不能贸然对WriteProcessMemory进行ret 0x14(该函数需要5个参数),因为我们还不清楚平台的其他地方是否需要调用她。
我们可以开一局游戏,对WriteProcessMemory下断,看看究竟需要调用她多少次,并且分别测试每一次的调用直接返回是否会检测作弊。
但是我们不需要那么做。我们只是想让平台对Game.dll的还原无效,至于其他的写内存操作我们最好还是不要动。
我们可以从多次调用中找出对Game.dll还原的那一次。
其实特征还是很明显的。比如WriteProcessMemory的5个参数中第二个参数:待写入数据的内存地址==Game.dll+0x1000 .第四个参数写入数据大小==0x87e000 。
我们可以对WriteProcessMemory函数头进行HOOK,找出我们感兴趣的调用直接返回,而其他调用我们正常执行。
说明一:根据我的经验,只判断第四个参数就可以定位。因为该API的调用并不频繁。
说明二:该函数最后一个参数是实际写入了多少字节,存放在一个内存地址中。我们直接返回并未对其进行处理。我测试11平台并未对次进行检测,所以我们可以无视。但最好在处理程序中把该地址写入0x87e000。
说明三:其实这个函数没有必要一定要处理。因为每次游戏只调用一次,而且是刚刚开局就调用,我们完全可以选完英雄之后再开图,这样就算是直接过掉她了。但是有些人喜欢让外挂在魔兽运行时自动开启,就需要对此进行处理了。
至于HOOK代码的有关细节,我将在奕奕平台全图制作第五弹之HOOK大法中详细介绍。
郁金香外挂教程,学习中...
回复

使用道具 举报

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

本版积分规则

限时限量优惠

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2020-6-2 12:57 , Processed in 0.041689 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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