郁金香2021年游戏辅助技术中级班(六)
郁金香2021年游戏辅助技术中级班(六)
- 055-ce,xdbg调试分析接任务交任务完成任务
- 056-C,C++写代码测试接任务交任务完成任务
- 我们再来分析一下完成任务
- 057-C,C++写代码测试交任务完成任务
055-ce,xdbg调试分析接任务交任务完成任务
创建一个新角色,搜索wow.exe模块中的常数6B0B50(明文包,封包组包CALL,即发包函数的上面某一层函数),全部禁用:
把没有操作就直接断下的断点先取消掉,在NPC维里副队长那里不要用鼠标右击点击他,否则会直接接受了任务,这时候已经发过包了,所以可以用鼠标左键点击打开该NPC,再接受任务,测试发的包才是接任务的(其实仍然是直接接了任务)。
上图左边小地图下面的就是已经接受的任务(这个新手任务比较特殊,鼠标右击NPC就会直接接受了该任务,这时候已经发过接任务的包了),所以这里我们要放弃该任务,重新鼠标右键点击该NPC,断下:
如果是接任务的话,它肯定有一个任务ID的,不同的任务可以通过各自的ID给区分开,我们先把包的内容复制出来看一下:
这是我们的包对象(任务:身边的危机),然后再看一下这个包的内容:
这个是之前我们分析过的,打开NPC的组包,但是这个怎么就接了任务的呢?或者说这个任务比较特殊。
我们再点击xdbg的运行,还有几个断点,我们暂时把它们复制出来备用(心跳的断点都取消掉):
然后我们再另外找一个任务来试一下(把转向的断点取消掉,然后去找头上有问号或感叹号的NPC去接一下任务),鼠标右键点击下图该NPC:
鼠标左键点击上图身边的危机:
点击上图完成任务的时候也发包了:
完成任务的时候要经过5304D3这里,上图是我们看到的这个时候的组包内容。
我们让游戏跑起来,又断到了一个地方:
上图我们看到有一个NPC的ID。
我们把游戏取消,让游戏退出来,把自动接任务的插件给禁用一下,把插件的目标AddOns改名为“AddOns_插件”,再建一个空的AddOns目录:
重新登录游戏,重新分析一下接任务(删除之前创建的角色,建一个新角色)。
我们发现鼠标右击带感叹号的会走到上图这里,鼠标右击不带感叹号的NPC走的是另外一个分支,所以这里可能就是接任务的,我们来看一下这个地方的组包(之前的那些分析可能没有太大的作用),然后我们再看一下该包的内容:
从上图我们可以看到,这里是NPC的ID,不是任务ID,按说应该还有一个任务ID,但是这里我们没有看到,这个看起来更像是打开NPC的,我们复制记录一下:
我们再让它跑一下看看有没有更合适的:
这个包的内容看起来只有4个字节:
0x417,这个好像更像是那个接任务,我们都复制记录一下,但是具体是不是,我们还需要写相应的代码做测试。
上图这个包很像接任务的,我们还有另外一种来做测试的办法,我们把上图这第2个包内容中的0x417给它改一下,然后看它能不能够接到任务,如果修改该数值对接任务有影响的话,可能就需要这两个包一起配合,先打开NPC,然后接任务;
这里我们把所有断点删除,然后先把维里副队长的这个新手任务放弃,再在这两个包相关的CALL那里分别下断,然后我们再点鼠标右键,第1个断下来的我们先不管它,我们先继续运行游戏,来看看断到的第2个包的内容那里:
我们把0x417改为0x317,发现依然能够接到任务,但是该NPC头上仍然是一个感叹号,而小地图下面仍然有任务,我们还是接到了这个任务,我们点击放弃。
我们发现第2个包没有发的情况下,该NPC头上的感叹号没有被去掉,说明该地址的包与接任务是有一定关系的,我们再来看第一个包:
我们如果把该包内容中的指令0x184给改了,发现打不开NPC了,这样我们也测试不出来接任务了,可能是接任务的,也可能不是,具体是不是我们下节课写代码来测试一下。
那个0x417也有可能是用来发包取消该NPC头上的感叹号的,但是具体它是一个什么样的功能,我们还是要写代码来做测试。
另外,任务有两种,一种是带感叹号的,另一种是带问号的,我们不知道这两种任务是不是同一个类型,我们再找一个带问号的看一下,我们先把维里副队长这个任务给接了(头上是一个感叹号),然后我们再去治安官那里看一下问号那个组包:
哦,现在我们明白了,那个感叹号的是用来接任务的,这个问号是用来完成任务的,我们启用一下所有调用6B0B50这个CALL的断点:
这个究竟是不是接任务的,还是要下节课我们来看,从上图我们看到这里不是接任务,应该是选择任务:
我们点击一下完成任务:
我们把这个包也取出来,复制记录一下:
这个倒挺像完成任务的,因为完成任务这里没有NPC的ID,这里的0xFE和0x21可能是完成任务的指令和任务的ID。
具体是不是下节课我们写代码把分析的这些数据测试一下。
056-C,C++写代码测试接任务交任务完成任务
任务有没有接,它肯定是有标志可以用来判断的,这里我们只讨论接任务还有完成任务这两个知识点。
由于现有项目的两个页面都已经满了,所以我们再添加一个页面:
在游戏功能测试目录下面添加一个新的任务相关的目录:
复制上图这个函数为新的接任务02函数:
测试的时候,如果不是那个新手任务,可以删除该角色,再新创建一个角色,然后跑到维里副队长身边,点击接任务:
接任务测试成功,该NPC头上的感叹号也没有了。
完成任务测试失败,完成任务这个包说明没有准备好(可能完成任务),接任务我们发了两个包,但是我们不知道这两个包各自的作用是什么,我们先来把接任务给弄清楚,我们回到维里副队长那里,放弃该任务,我们把接任务这两个包给分开做一下测试。
我们点击上图接任务01按钮,这个是接任务,接任务成功(右边小地图下方显示有任务目标),第一个组包就是接任务;
点接任务02按钮没有反应,第2个包我们根本就没有发,接任务02是没有用的;
这里的接任务只是接某一个NPC的任务(跑到特定NPC的身边才行),它并没有一个任务ID,这种设计比较少见,这种接任务就只有一个NPC的ID和一个接任务的指令,在哪个NPC那里接任务;
这个游戏不像其他游戏那样有一个任务的ID,有的游戏接任务的时候它会发送一个任务ID的。
点击角色选择界面左下角的插件,可以禁用掉游戏默认带的插件。
上图这里是在界面上显示任务目标的方式,以后如果你需要遍历哪些任务没有接的话,你就可以通过上图这些开关去分析你追踪的这些任务列表,就去判断哪些任务完成了,哪些任务没有完成。
我们再来分析一下完成任务
先跑到神庙里面的那个治安官NPC身边,在5304D3那里下个断点,并启动封包的全部断点(点击运行后,鼠标右击神庙里面的那个治安官NPC,在此期间过滤掉其他无关断点):
鼠标右击治安官这个NPC,会跑到右键点NPC那个断点那里:
当点击上图任务的时候会断到下图这里:
我们发现这个包更像是接任务、完成任务的,18A是指令,30F有点像任务ID,而C5013862是NPC的ID1,F1300000是NPC的ID2,但是具体是不是我们下节课再做测试。
然后我们再点完成任务,断下,之前没有断到过这个地方(可能被我们给过滤掉了),我们没有分析到这里:
我们发现这个地方的封包内容和前面那个6D4D95地址处的封包内容很接近,6D4D95可能是选择任务,这里可能才是完成任务,这个概率比较大:
这个比较像完成任务的组包格式,
接任务02这里不是接任务的,不知道是个什么。
我们发现接任务01这里没有任务ID,可能是一个特殊的任务,它就是一个新手的任务,它也可能没有任务ID,打开该NPC之后就自动接了该任务,这可能是一种特殊的情况。
057-C,C++写代码测试交任务完成任务
我们之前分析这个接任务的包、完成任务(交任务)的包它存在多种格式,它们并没有一个统一的格式,所以为了方便我们分析封包的格式(封包的内容、封包的长度),我们自己来编写一段代码,可能需要两三课的时长,因为写HOOK的话相关的知识点还是需要一些时间来慢慢分析。
我们按照上节课分析的完成任务重新组包:
我们暂时认为包缓冲区中0x30F这个是用来区分不同任务的,可能是任务ID,0x18E可能是完成任务的指令,当然具体是不是用的统一的指令,我们后面写了分析封包的代码之后呢,把相关的信息保存在文件里面,我们再来做一个相应的分析。
我们需要另外建一个新的小号来测试:
我们看到上图这里虽然弹出了任务面板询问你是否接受,其实无论你接不接受,这里已经有提示信息了,你已经接受了这个任务了,所以我们之前分析的时候,再按下这个接受按钮之后再去分析接受任务的这个包是错误的,实际上我们右键点击维里副队长的时候就已经自动接受了这个任务了,你直接点击右上角的叉关闭这个面板,实际上都已经接受这个任务了;所以分析的时候只能在鼠标右击该NPC的时候去分析接任务的包。
我们跑到神庙的治安官NPC身边那里去完成这个任务:
我们点击完成任务按钮后,从上图可以看到左下角的提示信息,身边的危机完成,说明这个任务的组包是成功的,该任务已经完成了,并且它还完成了与NPC的对话,顺便接了剿灭狗头人的任务。
所以接受任务至少有两种形式,一种是在访问NPC的时候它就自动接了这个任务,这个应该是在服务器那边就判断完成了,另一种就是无论你接受还是不接受,实际上从上图这个提示信息来看的话,这个剿灭狗头人的任务已经接受了,而且上图右上角小地图下方也已经有剿灭狗头人的任务目标了。
之前我们分析的时候,是点了任务面板的接受之后,再去分析这个包,那个思路上就错了,因为这个时候你点接受,它并不会发包,因为在此之前它就已经接受了这个任务了。
如果你放弃这个任务,之后你再去接受该任务的话,那么它就是走的另一个发包了,这个我们在这类就不去分析了,我们留到下节课写分析封包的代码,通过代码来分析的话,这样比我们每次去下断点的话,要省很多很多时间,如果每次用调试器去分析的话,花的时间就比较多了,如果我们用代码把发包的数据全部收集到文件里面,再加上我们用代码来做一下条件判断和过滤,那么这样的话我们就能够更方便的收集到发包的有用信息。
下节课我们就开始写HOOK,HOOK也叫劫持,我们就是拦截一些封包的数据,然后把它转成字符串的形式写到文件里面,这样方便我们分析,而且我们可以按照我们自己设想的格式来格式化它,然后保存到文件里面,这样的话我们就可以很方便的分析了。
相关文章:

郁金香2021年游戏辅助技术中级班(六)
郁金香2021年游戏辅助技术中级班(六) 055-ce,xdbg调试分析接任务交任务完成任务056-C,C写代码测试接任务交任务完成任务我们再来分析一下完成任务 057-C,C写代码测试交任务完成任务 055-ce,xdbg调试分析接任务交任务完成任务 创建一个新角色,…...

毛玻璃员工卡片悬停效果
效果展示 页面结构组成 通过效果展示图,我们可以看出页面布局比较常规,最核心的就是卡片,当鼠标没有悬停在卡片上时,文字和头像处于半透明状态,当鼠标悬停在卡片上是,底部会展示社交图标。 CSS 知识点 b…...

闪存工作原理
前言 1、闪存类型 闪存有两种分类,NAND型闪存主要用于存储 2、MOS的特性 MOS管的三个引脚分别是Gate(G)、Source(S)和Drain(D)。Gate(G)引脚是晶闸管的控制引脚&…...
从0到一配置单节点zookeeper
我的软件: 链接:https://pan.baidu.com/s/1nImkjOgzPkgaFOuUPwd1Sg?pwd2wqo 提取码:2wqo 视频教程p1-zookeeper安装和配置以及启动服务和检测是否运行成功_哔哩哔哩_bilibili 一、安装zookeeper http://zookeeper.apache.org/releases.h…...

【JVM】第三篇 JVM对象创建与内存分配机制深度剖析
目录 一. JVM对象创建过程详解1. 类加载检查2. 分配内存2.1 如何划分内存?2.2 并发问题3. 初始化4. 设置对象头5. 执行<init>方法二. 对象头和指针压缩详解三. JVM对象内存分配详解四.逃逸分析 & 栈上分配 & 标量替换详解1. 逃逸分析 & 栈上分配2. 标量替换…...

【信创】麒麟v10(arm)-mysql8-mongo-redis-oceanbase
Win10/Win11 借助qume模拟器安装arm64麒麟v10 前言 近两年的国产化进程一直在推进,基于arm架构的国产系统也在积极发展,这里记录一下基于麒麟v10arm版安装常见数据库的方案。 麒麟软件介绍: 银河麒麟高级服务器操作系统V10 - 国产操作系统、银河麒麟、中…...
maven settings.xml文件(包含了配置阿里云镜像)
mac 的 settings.xml 我配置的位置是: /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/settings.xml 然后 local repository 我配置的位置是: /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/repos…...

分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测
分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结…...

Redis是否要分库的实践
Redis的分库其实没有带来任何效率上的提升,只是提供了一个命名空间,而这个命名空间可以完全通过key的设计来避开这个问题。 一个优雅的Redis的key的设计如下...

String 进阶
字符串拼接 // 常量与常量的拼接结果放在常量池 // 常量池中不会存在相同的常量 String str1 "a" "b"; System.out.println(str1 "ab");// 拼接时有一个为变量,则结果会放在堆中。 // 变量拼接的原理是 StringBuilder append 最后…...
ESP32设备通信-两个ESP32间UART通信
两个ESP32间UART通信 文章目录 两个ESP32间UART通信1、UART介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将使用 Arduino IDE 的 UART 硬件库在两个 ESP32 板之间执行 UART 或串行通信。 要使用 USB 端口调试和编程 ESP32,需要使用称为通用异步接收器/发送器 (UART) 通…...
LCR 052.递增顺序搜索树
题目来源: leetcode题目,网址:LCR 052. 递增顺序搜索树 - 力扣(LeetCode) 解题思路: 中序遍历时修改指针即可。 解题代码: /*** Definition for a binary tree node.* public class TreeNo…...
Mysql集群技术问答
前提:Mysql集群服务部署到一个群组的所有服务器上,一般20台为一个群组,群组内所有节点数据实时同步,动态自动维护节点。 问:集群空间跟传统空间的最大不同是什么? 答:集群空间有数据同步和宕机检…...

2023版 STM32实战4 滴答定时器精准延时
SysTick简介与特性 -1- SysTick属于系统时钟。 -2- SysTick定时器被捆绑在NVIC中。 -3- SysTick可以产生中断,且中断不可屏蔽。 SysTick的时钟源查看 通过时钟树可以看出滴答的时钟最大为72MHZ/89MHZ 通过中文参考手册也可以得到这个结论 代码编写(已经验证&a…...
ESP32设备驱动-数据持久化到Flash
数据持久化到Flash 文章目录 数据持久化到Flash1、Preferences库介绍2、软件准备3、硬件准备4、代码实现4.1 初始化NVS Flash4.2 读写Key/Value对4.3 保存/读取网络凭据4.4 复位后记住最后的 GPIO 状态在本文中,我们将介绍如何使用 Preferences库将数据存储到 ESP32 的Flash中…...

Swift data范围截取问题
文章目录 一、截取字符串的几种方法1. 截取前几位2. 截取后几位3. subData4. 下标截取 二、subData(in:) 报错 EXC_BREAKPOINT 一、截取字符串的几种方法 1. 截取前几位 mobileID.prefix(32)2. 截取后几位 mobileID.suffix(3)3. subData data.subdata(in: 0..<4)4. 下标…...

PICO首届XR开发者挑战赛正式启动,助推行业迈入“VR+MR”新阶段
9月25日,“PICO 2023首届XR开发者挑战赛”(下文简称“挑战赛”)媒体启动会在北京圆满落幕,官方赛事报名通道已于今日开启。据悉,本次挑战赛是PICO首次针对全球开发者举办的大型挑战赛事,旨在与开发者保持连…...

【计算机网络】应用层协议原理
文章目录 网络应用程序体系结构客户-服务器体系结构P2P体系结构 进程通信客户和服务器进程进程与计算机网络之间的接口进程寻址 可供应用程序使用的运输服务可靠数据传输吞吐量定时安全性 因特网提供的运输服务TCP服务面向连接的服务可靠数据传输服务TCP安全 UDP服务因特网运输…...

buuctf-[WUSTCTF2020]CV Maker
打开环境 随便登录注册一下 进入到了profile.php 其他没有什么页面,只能更换头像上传文件,所以猜测是文件上传漏洞 上传一句话木马看看 <?php eval($_POST[a]);?>回显 搜索一下 添加文件头GIF89a。上传php文件 查看页面源代码,看…...
数据库表操作详解
在数据库管理中,表操作是最基础也最常用的一项功能。不论是临时存储一些数据,还是通过派生表进行复杂的查询,表操作的灵活性和多样性都使其在数据库中发挥着重要的作用。 本文将详细解析数据库中常见的表操作,包括临时表、派生表以及与视图、子查询的比较。我们将使用游戏…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...