近段时间和朋友玩传奇SF,1.76版,还是没那么多时间泡在上面,于是想尝试写下辅助之前写过魔力宝贝的,魔力宝贝是回合制,和传奇即时游戏还是有很大区别,写之前做些准备:

1、了解别人的辅助有哪些类型:PK、脱机、多开、辅助等

2、上CE(OD不会用)看看能读取到些什么,理解游戏逻辑

3、规划辅助执行逻辑,计划实现的功能,选择语言

一、辅助规划:模型、数据、界面

1、模型 就是运行逻辑:读取游戏数据=>计算、判断生成一个命令=>执行该命令=>重复执行

2、数据 读取的游戏数据和运行控制的数据:游戏状态、角色信息、单位信息(怪、玩家、NPC)、背包装备、地面物品、地图、NPC对话窗口、聊天窗口等

3、界面 和模型、数据交互用,其实一直想放弃界面,因为对于辅助来说界面确实不重要,不过本着学习为主,还是加上了

二、上CE读取的技巧提示

1、传奇SF有很多版本,根据服务商使用的服务端和防护盾又会有几种区别,有些防护盾需要魔改CE才能调试

2、找基址顺序(易->难)

1)背包装备信息:固定地址、不需要偏移、直接根据物品名很容易就找到

2)角色信息(自己的信息):通过坐标或hp搜,有偏移

3)单位信息:通过搜单位数量(包括自己)找,数量一般+8,单位基址一种是+4+x*4,还有一种版本是二叉树结构,技巧(单位信息里面的自己的信息基址和角色信息基址一样)

4)地面物品:也是通过搜地面物品数量找,剩下的参照单位信息(同一个游戏,里面数据存放方式差不多)

5)地图:只有地图名(坐标信息在角色信息里面,传奇的文本数据都有长度,比如找到文本数据地址addr,长度数据地址就是addr-1或addr-4)

6)NPC对话窗口:游戏里面的窗口都是从一个基址偏移,包括物品窗口、组队窗口、退出窗口、任务信息窗口、大地图窗口等(通过打开和关闭找,打开单字节1,关闭0,很容易找)

7)聊天窗口:通过聊天信息条数找,新登陆游戏条数比较少,可以数下几行

8)寻路:现在SF一般都有寻路,点下大地图某个坐标开始自动走,然后根据目的坐标搜基址(后期可以通过设置目的坐标启动寻路)

9)普通攻击目标:通过攻击目标寻基址,没有攻击目标时为0,有攻击目标时,该值为单位信息里某单位的基址(x*4),后期可以改这个值让角色直接攻击目标

10)CALL:最重要的封包发送CALL,通过找send 返回上一步就到封包发送CALL了,通过这个CALL可以实现所有游戏里面的操作,但是有些封包,游戏界面是不更新的,比如走路、穿装备,我智能手动修改游戏内存信息来更新界面的

a.走路,发送走路封包后,界面不更新,我是直接修改角色信息里的角色坐标,界面会看到角色瞬移,没法判断目的坐标是不是可以走到;后面另外找了游戏界面点击坐标CALL替换了走路

b.穿装备,界面也不更新,我是在卸装备前读取信息,然后发送完穿装备后,把信息写回游戏内存,

三、执行动作

因为是即时游戏,每个动作都是碎片化的,不停的识别判断执行,比如走到某个坐标,目标比较远就寻路,近就点击走路,判断是否在寻路,如果在寻路就判断寻路坐标是否是目的坐标,是就继续寻路,不是就重新寻路。打怪、释放技能也是识别判断执行,需要吃药就执行吃药,然后不停地重新识别判断执行

四、游戏反作弊

游戏服务端也研究了几种,分为客户端和服务端检测,服务端只能通过封包判断是否作弊,最基础的反作弊是2个动作执行的间隔,时间间隔是有限制的,服务端会记录异常的封包。客户端反作弊可以反调试,我自己魔改CE在老版本window下可以调试

五、语言选择

  • 因为目标是能挂机,所以想加入脚本功能,前后试了MFC(C++)、易语言、C#,根据需求和自己的能力

  • MFC(C++)自由度高,但是对我这种入门级的优点费脑子

  • 易语言现成的东西可以直接用,但我主要是学习爱好为主,但是作为编程语言,很多数据结构都不好用,比如字典

  • C#刚学到了Linq,真的好用

附件:

易语言半成品(XFFG的)前往原帖下载

易语言半成品(XRFG的)前往原帖下载

本文转载自吾爱破解论坛(https://www.52pojie.cn/thread-2015572-1-1.html

传奇SF辅助思路 第1张