56.网游逆向分析与插件开发-游戏增加自动化助手接口-通过UI分析自动药水设定功能

内容来源于:易道云信息技术研究院VIP课

上一节内容:自动药水设定功能的逆向分析-CSDN博客

这次是假设没有之前的思路积累的话,怎样去找按钮事件。

通过ui当做切入点去做,就是一个窗口它显示不显示,游戏怎样控制这个事情,窗口渲染不渲染,它肯定是有一个标志位的东西,默认来讲假设它是0或者1,也就是肯定会通过数据变化找到这个内容的,当找到这个相关的内容以后,接下来就可以很轻松的去处理这个事情。

接下来打开Cheat Engine,如下图选择位置的初始值,然后点击首次扫描

然后把游戏的自动药水设定窗口关闭,然后在Cheat Engine里输入0,再点击 再次扫描,这样一步的意思就是假设 自动药水设定窗口 显示时标志位是1,关闭时标志位是0,如果这样找不到东西,那就把它们反过来,显示时标志位是0,关闭时标志位是1,这样再找,应该就能找到了,这样说的原因是,如果是我们开发这个东西,在显示窗口时肯定是传一个bool或者BOOL类型,一般人也都会这样去做,所以才这样去找,

然后显示出来之后再用1找,就一直重复这一步与上一步的操作就完了

最终找到了33个值,这个时候,这么多数据的原因,是有可能它窗口里每一个按钮,继续往下看

下图红框中,每个按钮都有一个显示不显示的值,所以这么多值是正常的

接下来要看看它有没有与其它界面共享数据,是有共享的,因为我们的自动药水设定窗口没有打开,所在可以再扫一次0

最终就17个了

 在分析的时候可以看出第一个红框的值更新的慢,下面十六个更新的很快,所以直接把第一个给移除掉了

然后把它们的值都改成1

但是很尴尬都没有显示出来,然后通过游戏中的按钮把自动药水设定窗口打开发现,它在这个基础上加了一个1

我们是想找一个象开关一样的东西,很遗憾没有找到,不管是之前的操作失误还是怎样,反正就是没找到,既然没找到那就死马当活马医,因为我们发现不管是快捷键打开自动药水设定窗口还是按钮打开,它会把值加1,会导致数据的变化,这一点是绝对没问题的,既然没问题,那我们就通过这个变化往上找,除非用了多线程技术来回倒,那么否则的话我们一定能够找到,我们要找的地方。所以通过找出是什么改写了这个地址的方式往上找

发现有两个地方改写了它

可以发现一个是减1一个是加1

先保存一下,寄存器信息,98bc81

接下来把Cheat Engine关掉,打开x96dbg调试

一下断点,就会卡主,所以这里是共用的,所以之前保存的哪两个信息图有用了,所以这时要下条件断点

设置完条件断点,再从游戏中打开自动药水设定窗口,就断点住了

然后直接按ctrl+f9在按f8往上找,然后就到了下图中的函数里,到函数之后就是一步一步往上分析的过程了

 0x722A59地址一直找到一个只有自动药水设定功能才会调用的位置,但是到了这里也并不知道这里是偏底层的位置还是偏上层的位置,所以还得往上,就是找到最后一层它们不共用的地方,就是现在有三个接口 a接口 b接口 c接口调用了一个共用的函数,共用函数又调用了一个x函数,x函数又调用了另外的函数,现在不知道是在x函数还是另外的函数里,最好的方式使用共用函数里下手,共用函数的特定就是再往上一层就会跑到abc三个不同的函数,就是按下快捷键a函数响应,bc函数不响应,按下自动药水设定按钮时,b函数响应,ac函数不响应,也就是说现在还是处于abc三个接口共用阶段,所以还得网上找

0x84CB6B 经过一直往上找,最终来到了下图位置,下图位置的代码是一块一块的,它只有按快捷时才会触发,另外两个接口没法触发,所以现在按照我们的逻辑来讲,abc三个地方,现在已经找到a快捷键的这个地方,快捷键调用的地方bc也会调用,所以说快捷键到上一个函数之间是要分析的过程,所以 0x84CB6B位置调用的0x8687F0  函数要重点找。

0x8687F0 函数abc三个接口都会调用它,但是取消按钮也会调用,取消按钮的处理看上一节的分析(通过入参决定的是取消还是其它的),接下来就是分析参数、调用约定、写原型(跟上节一模一样),所以通过这种方式我们也找到了,上一节找到的函数,查找的方式不只这一种,逆向分析的方式有很多种,这只是其中一种,熟练正向开发,逆向的方式也就多了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/280571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【unity中使用高度图创建地图】

unity中使用高度图创建地图 插件 讲解案例为unity2022版本 这个是插件地址 也可以在资源商店中搜索 terrain-tools 介绍 Terrain Tools入门Terrain Tools是一个软件包,你可以选择将其添加到Unity 2019.1或更高版本中的任何项目中。要将该软件包添加到你的项目…

2023年03月21日_chatgpt宕机事件的简单回顾

你能想象吗 ChatGPT挂了 昨天半夜呢 来自全球各地的用户纷纷发现 ChatGPT的网站弹出了报错警告的信息 然后立即就无法使用了 即使是有特权的plus账户也未能幸免 一时之间呢 chatgptdown的话题在Twitter刷屏 不少重度的用户表示很着急 有的用户说呢没了ChatGPT 这工作…

uniapp打包Android、Ios、微信小程序

首先我们需要在我们的代码中,把我们所要用到的配置信息配置好,在检查一下我们测试的内容是否有打开(取消注释),在检查一下我们的版本信息是否正确,查看一下接口ip是否是正式线 这里的配置信息一定要配置好…

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解 目录 时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现贝叶斯变化点检测与时间序列分解 1.Matlab实现贝叶斯变化点检测与时间序列分解,完…

产品经理学习-策略产品指标

目录: 数据指标概述 通用指标介绍 Web端常用指标 移动端常用指标 如何选择一个合适的数据指标 数据指标概述 指标是衡量目标的一个参数,指一项活动中预期达到的指标、目标等,一般用数据表示,因此又称为数据指标;…

python+django在线学习教学辅助作业系统gp6yp

本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中 技术栈 后端:pythondjango 前端:vue.jselementui 框架:django/flask Python版本:python3.…

【计算机毕业设计】python+django数码电子论坛系统设计与实现

本系统主要包括管理员和用户两个角色组成;主要包括:首页、个人中心、用户管理、分类管理、数码板块管理、数码评价管理、数码论坛管理、畅聊板块管理、系统管理等功能的管理系统。 后端:pythondjango 前端:vue.jselementui 框架&a…

SpringValidation自定义注解以及分组校验

SpringValidation的参数校验使用可参考:【SpringMVC应用篇】Spring Validation 参数校验-CSDN博客 目录 1. 引入依赖 2. 自定义注解校验 2.1 创建Validation类 2.2 创建注解对象 2.3 使用注解 3. 分组校验 3.1 实体类内部定义接口 3.2 在参数上指定分组 1. …

leetcode 315. 计算右侧小于当前元素的个数(hard)【小林优质解法】

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码: class Solution {int[]counts; //用来存储结果int[]index; //用来绑定数据和原下标int[]helpNums; //用于辅助排序 nums 数组int[]helpIndex; //用于辅助排序 i…

学习动态规划不同路径、最小路径和、打家劫舍、打家劫舍iii

学习动态规划|不同路径、最小路径和、打家劫舍、打家劫舍iii 62 不同路径 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量dp[i][j] dp[i-1][j] dp[i][j-1] import java.util.Arrays;/*** 路径数量* 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量…

KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models

论文链接:2023.12-https://arxiv.org/pdf/2312.06185.pdf 1.Background & Motivation 目前生成式的语言模型,如ChatGPT等在通用领域获得了巨大的成功,但在专业领域,由于缺乏相关事实性知识,LLM往往会产生不准确的…

List常见方法和遍历操作

List集合的特点 有序: 存和取的元素顺序一致有索引:可以通过索引操作元素可重复:存储的元素可以重复 List集合的特有方法 Collection的方法List都继承了List集合因为有索引,所以有了很多操作索引的方法 ublic static void main…

sklearn学习的一个例子用pycharm jupyter

环境 运行在jupyter 进行开发。即一个WEB端的开发工具。能适时显示开发的输出。后缀用的是ipynb.pycharm也可以支持。但也要提示按装jupyter. 或直接用andcoda 这里我们用pycharm进行项目创建 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyterlab pip ins…

Java关键字(1)

Java中的关键字是指被编程语言保留用于特定用途的单词。这些关键字不能用作变量名或标识符。以下是Java中的一些关键字: public:表示公共的,可以被任何类访问。 private:表示私有的,只能被定义该关键字的类访问。 cl…

centos 7.9 升级系统默认的python2.7到python 2.7.18

centos 7.9 升级系统默认的python2.7到python 2.7.18 备份旧版本 mv /usr/bin/python /usr/bin/python_2.7.5 下载新版本 Download Python | Python.org Python Release Python 2.7.18 | Python.org wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz cd /…

2023 IoTDB Summit:天谋科技 CTO 乔嘉林《IoTDB 企业版 V1.3: 时序数据管理一站式解决方案》...

12 月 3 日,2023 IoTDB 用户大会在北京成功举行,收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题,多位学术泰斗、企业代表、开发者,深度分享了工业物联网时序数据库 IoTDB 的技术创新…

Rust开发⼲货集(1)--迭代器与消费器

本内容是对 Rust开发干货集[1] 的实践与扩展. iter() 不转移所有权 先简单解释下什么叫"转移所有权": 在 Rust 中,"转移所有权"(Ownership Transfer)是一种核心概念,它涉及变量和数据的所有权从一个实体转移…

2023.12.28 关于 Redis 数据类型 List 内部编码、应用场景

目录 List 编码方式 早期版本 现今版本 List 实际应用 多表之间的关联关系 消息队列 频道(多列表)消息队列 微博 Timeline 栈 & 队列 List 编码方式 早期版本 早期版本 List 类型的内部编码方式有两种 ziplist(压缩列表&#xf…

vscode: make sure you configure your user.name and user.email in git

一、问题描述 使用VScode编辑代码后,Push到云端报错:Make sure you configure your "user.name" and "user.email" in git 二、解决方案 解决步骤: 1.打开Git Bash: 2.输入命令: git config -…

ElasticSearch学习笔记(二)

通过前面的一阵胡乱操作,显然提升了我的学习兴趣,趁热打铁,接着往下学。还是先看看别人的教程吧。这里我看的是B站上【尚硅谷】的ElasticSearch教程,有兴趣的同学也可以去看看。 一、缘起–索引操作 看B站上的视频教程&#xff0…