58.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏菜单文字资源读取的逆向分析

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

之前的内容:接管游戏的自动药水设定功能-CSDN博客

码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git

码云版本号:34b9c1d43b512d0b4a3c395b81c03c0b8e8aa374

代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-游戏菜单文字资源读取的逆向分析.zip

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg

提取码:q9n5

--来自百度网盘超级会员V4的分享

HOOK引擎,文件名为:黑兔sdk.zip

链接:https://pan.baidu.com/s/1IB-Zs6hi3yU8LC2f-8hIEw

提取码:78h8

--来自百度网盘超级会员V4的分享

 接管游戏的自动药水设定功能-CSDN博客 它的代码为基础进行修改

修改了分析记录文件

现在我们基本的思路是要改内存,所以首先要确定,改内存的行为可不可行,就要看它的复杂度,复杂度太高那就没办法了,复杂度还行就有的玩了。

正常情况下 自动药水设定 它在内存里一定存在,接下里就搜索,首先打开游戏,然后再打开Cheat Engine

如下图红框里的内容,然后点击首次扫描

可以找到三个地址

修改内存之后游戏中并没有生效,原因也很简单,这种东西肯定只会初始化一次,我们改晚了,接下来就要想办法触发自动药水设定这个地方的变化

触发的方式可以通过修改它的快捷键

然后就改成功了,也就是说当修改快捷键的时候,它是一定会读取,下图红框里的字符串的

接下来找出是什么访问了它,通过更改快捷键,来获取是什么访问了它

然后游戏初始化的时候也会初始化,所以在通过游重新开始找是什么访问了字符串

可以发现它们的地址都是一样的

然后先记入一下信息:不管是通过修改快捷键,还是重新开始,它们的寄存器的值都是一样的,所以下方每个地址只有一个图

接下来打开x96dbg,C50E5C、C51668,优先C50E5C这个地址,然后断到C50E5C地址(通过条件断点,C50E5C是一个被经常调用的函数,不用条件断点没法玩),然后字符串是通过edi寄存器来的,edi的值不知道从哪来,所以按ctrl+f9再按f8来到调用方,先确定一下大体的范围

来到调用方,可以发现在调用方这里,自动药水设定字符串就已经存在了,所以 C50E5C 这个函数不用看了,然后再按ctrl+f9再按f8

再来到上一层,自动药水设定字符串还是存在,我现在要看的是自动药水设定字符串是从哪来的,所以还要往上,所以按ctrl+f9再按f8,来到它的上一层

然后就在栈里没有看到了,这里记入下一它的地址,C3D969

 然后给C3D969位置打断点,可以看出它好像是用来处理,快捷键与按钮字符串绑定的,一个拼接字符串的操作

所以再来到它的上一层打断点

可以发现这里只有自动药水设定才会触发

然后可以看到,自动药水设定字符串是通过eax来的,eax寄存器会跟函数返回值有关,所以要注意一下eax的值3是从上一次传递的还是通过函数返回值来的

然后下图红框,在6DA8B8位置,有一个比较,根据下图中的值来说就是 if(F>8){*((char*)(eax+4))}这样的代码,然后继续往下看

意思就是,下图红框位置是一个缓冲区,缓冲区大小是8,所以eax+18位置是字符串的长度,也就是说0xF是长度,接下来也就是我们也调用下图中6DA8B3位置的函数也就能得到字符串的地址,然后通过模拟它的一个基本的判断得出来,最终eax的地址,得出来以后就可以修改了

然后就分析9A46C0函数,直接在返回的位置打断点,找一个eax+18小于8的可以看出eax+4位置是一个字符串,锁定俩字,然后eax+18位置是7,eax+14位置是2,这个2可能就是有效字符的意思,7是缓冲区大小,2是有效字符,所以现在就可以给它的返回值定义一个结构体了

 定义的结构体:

typedef struct sro_string{
    int un1;
    union{
        wchar_t title[0x4];
        wchar_t* Ptitle;
    }
    int lenth;
    int size;

    wchar_t* wcstr(){
        if(size<0x8){
            return title;
        }else{
            return Ptitle;
        }
    }
}*psro_string;

psro_string 1036518::ReadTitle(wchar_t* index);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch地理位置数据索引

地理位置数据索引 在 Elasticsearch 中&#xff0c;地理位置数据的索引涉及两种主要的字段类型&#xff1a;geo_point 和 geo_shape。这些字段类型允许 Elasticsearch 存储和查询地理空间数据&#xff0c;如坐标点、线和多边形。 geo_point Elasticsearch的geo_point字段类型…

Springboot支付宝沙箱支付(完整详细步骤)

Springboot支付宝沙箱支付&#xff08;完整详细步骤&#xff09; 网页操作步骤1.进入支付宝开发平台—沙箱环境2.点击沙箱进入沙箱环境3.进入沙箱&#xff0c;配置接口加签方式4.配置应用网关5.生成自己的密钥 IntelliJ IDEA 操作步骤1.导入依赖2.在 application.yml 里面进行配…

java基于SSM的毕业生就业管理系统+vue论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本毕业生就业管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信…

TypeScript接口、对象

目录 1、TypeScript 接口 1.1、实例 1.2、联合类型和接口 1.3、接口和数组 1.4、接口和继承 1.5、单继承实例 1.6、多继承实例 2、TypeScript 对象 2.2、对象实例 2.3、TypeScript类型模板 2.4、鸭子类型&#xff08;Duck typing&#xff09; 1、TypeScript 接口 接口…

问题 H: 取余运算

题目描述 输入b&#xff0c;p&#xff0c;k的值&#xff0c;求b^p mod k的值&#xff08;即b的p次方除以k的余数&#xff09;。其中b&#xff0c;p&#xff0c;k*k为32位整数。 输入 输入b&#xff0c;p&#xff0c;k的值 输出 输出b^p mod k的值 样例输入 2 10 9 样例…

Backtrader 文档学习-Strategy(中)

Backtrader 文档学习-Strategy&#xff08;中&#xff09; Strategy是BT的核心模块&#xff0c;需要慢慢摸索内部设计的流程&#xff0c;方法的用途&#xff0c;使用场景&#xff0c;还要一些常用的状态值。 本章主要介绍关于strategy的生存周期&#xff0c;notify_order方法&…

npm指令

1、npm install express&#xff1a;安装Node模块 安装完毕后会产生一个node_modules目录&#xff0c;其目录下就是安装的各个node模块。 2、npm view express&#xff1a;查看node模块的package.json文件夹 注意事项&#xff1a;如果想要查看package.json文件夹下某个标签的…

Mac启动时候出现禁止符号

Mac启动时候出现禁止符号 启动时候出现禁止符号,意味着 选定的启动磁盘 包含 Mac 操作系统&#xff0c;但它不是 您的 Mac 可以使用的 macOS 。您应该在这个磁盘上 重新安装 macOS 。 可以尝试以下苹果提供的方法&#xff1a; Mac启动时候出现禁止符号 不要轻易抹除磁盘&am…

指针和引用

指针使用操作符 "*" 和 "->"&#xff0c;引用使用操作符"."&#xff0c;他们具有相同的功能&#xff0c;都是间接的引用其他对象。 指针和引用的选择 在任何情况下都不能使用指向空值的引用&#xff0c;引用总是必须指向某些对象。如果你使…

鸡兔同笼问题加强版

描述 已知鸡和兔的总数量为 n,总腿数为 m。输入 n 和 m,依次输出鸡和兔的数目&#xff0c;如果无解&#xff0c;则输出 “No answer”(不要引号)。 输入描述 第一行输入一个数据 a,代表接下来共有几组数据&#xff0c;在接下来的 (a≤100000) a 行里&#xff0c;每行都有一个…

GhostscriptExample GS

1.导出图片 package cn.net.haotuo.pojo; import java.io.*;public class GhostscriptExample {public static void main(String[] args) { String gsPath "C:/Program Files/gs/gs9.54.0/bin/gswin64c.exe";String inputFilePath "C:\\Users\\Admini…

idea将本地编译好的代码上传到hub镜像仓库

第一步&#xff1a;编译打包本地的文件 package 第二步&#xff1a;执行docker bulid打包命令 docker build -t sunyuhua/algo-ability:1.0.0 .sunyuhuasunyuhua-HKF-WXX:~/workspace/shbgit/algo-ability$ docker build -t sunyuhua/algo-ability:1.0.0 . [] Building 141.…

C语言编译器(C语言编程软件)完全攻略

介绍常用C语言编译器的安装、配置和使用。 常用的C语言编译器&#xff08;编程软件&#xff09;介绍&#xff0c;同时附带下载地址、详细的安装教程和使用教程。我们还对比了不同C语言编译器&#xff08;C语言编程软件&#xff09;的优缺点&#xff0c;让初学者知道该如何选择…

差分电路原理以及为什么输出电压要偏移

我们在使用放大器芯片的时候&#xff0c;除了对放大器芯片本身应用外&#xff0c;通常还需要搭建一些外围电路来满足放大器芯片的使用条件&#xff0c;最终满足应用的功能&#xff0c;下面通过一个差分电路来熟悉这些应用。 差分运算放大电路&#xff0c;对共模信号得到有效抑…

微软的一些公开课,Python、机器学习、SQL、AI,全部免费

大家好&#xff0c;我是老章&#xff0c;刷X看到一位博主Alif Hossain⚡alifcoder总结了微软的一些公开课&#xff0c;全部免费&#xff0c;蛮不错的。感兴趣可以学一波&#xff0c;还能领徽章。 1. 机器学习简介 本课程是学习机器学习基础知识和用例的好方法。 → 11 个模块…

C# Image Caption

目录 介绍 效果 模型 decoder_fc_nsc.onnx encoder.onnx 项目 代码 下载 C# Image Caption 介绍 地址&#xff1a;https://github.com/ruotianluo/ImageCaptioning.pytorch I decide to sync up this repo and self-critical.pytorch. (The old master is in old ma…

实战演练 | Navicat 中编辑器设置的配置

Navicat 是一款功能强大的数据库管理工具&#xff0c;为开发人员和数据库管理员提供稳健的环境。其中&#xff0c;一个重要功能是 SQL 编辑器&#xff0c;用户可以在 SQL 编辑器中编写和执行 SQL 查询。Navicat 的编辑器设置可让用户自定义编辑器环境&#xff0c;以满足特定的团…

ejs默认配置 造成原型链污染

文章目录 ejs默认配置 造成原型链污染漏洞背景漏洞分析漏洞利用 例题 [SEETF 2023]Express JavaScript Security ejs默认配置 造成原型链污染 参考文章 漏洞背景 EJS维护者对原型链污染的问题有着很好的理解&#xff0c;并使用非常安全的函数清理他们创建的每个对象 利用Re…

鸿蒙应用中的通知

目录 1、通知流程 2、发布通知 2.1、发布基础类型通知 2.1.1、接口说明 2.1.2、普通文本类型通知 2.1.3、长文本类型通知 2.1.4、多行文本类型通知 2.1.5、图片类型通知 2.2、发布进度条类型通知 2.2.1、接口说明 2.2.2、示例 2.3、为通知添加行为意图 2.3.1、接…

Python基础知识总结1-Python基础概念搞定这一篇就够了

时隔多年不用忘却了很多&#xff0c;再次进行python的汇总总结。好记性不如烂笔头&#xff01; PYTHON基础 Python简介python是什么&#xff1f;Python特点Python应用场景Python版本和兼容问题解决方案python程序基本格式 Python程序的构成代码的组织和缩进使用\行连接符 对象…