42.第二阶段x86游戏实战2-lua寻找状态指针

news/2024/11/13 21:39:02/

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:41.第二阶段x86游戏实战2-C++实现lua寻路

上一个内容里使用C++对接到了lua里,本次写一个状态指针

首先游戏它是怎样调用lua的?一般它用到的是doString、doFile函数,doString和doFile的区别,DoFile用来读取文件然后再去执行文件里的内容,它只执行一次,简单点说DoFile做的事是把文件内容读出来然后去调用doString,doString就只doString,这是DoFile和DoString的区别

当前靶场游戏只需要使DoString函数,然后需要了解一下DoString函数的入参和返回值,所以打开OD并附加到游戏,然后找到游戏里的LuaPlus.dll,如下图红框,然后双击它进入LuaPlus模块里

进入LuaPlus模块里

然后按CTRL+G,lua_dostring然后点OK

点了OK就会来到下图红框位置

然后在下图红框位置打断点

然后如下图断下来,一打断点它就会断下来,因为游戏里会不断的很频繁的调用lua脚本

然后如下图取消断点

然后按CTRL+F9来到下图位置

然后开始分析这附近的代码,如下图有一句add esp,8,这意思平栈,然后esp是栈顶寄存器,然后栈顶寄存器加0x8的意思是lua_dostring函数有两个参数,这是一个外平栈的写法

然后接下来在下图红框位置打断点

然后如下图红框,lua_dostring函数的两个入参

如下图红框是状态指针,有了状态指针就可以去调用游戏里的lua函数了也就是可以调用游戏里的lua脚本,所以要找一下eax的值哪来的

然后eax的值来自于下图红框函数的返回值

如下图通过返回值得到的eax

所以接下来进入下图红框的函数看看里面是怎样的

然后如下图红框打断点并断下来

然后取消断点

然后按F7进入函数里

如下图红框,可以看到它来自于0xCA4220这个基址,然后现在就找到了状态指针

然后复制一下特征码,方便后续定位,然后使用特征码定位的时候发现了一个问题,把下图红框里的代码全部复制出来会发现特征码定位工具定位的位置是错的

然后把下图红框的代码复制成特征码发现可以正常定位了

如下图红框

然后如下图红框,可以把这些东西也给复制成特征码,如果上方的基址没法用了,可以通过调用函数获取返回值的方式获取状态指针

如下图通过特征码定位的偏移

然后DoString函数的第二个参数,如下图第二个参数可以看出它是lua代码,然后到这就解决了调用游戏中lua的所有问题,后面可以写C++代码了

然后再定位一下doString函数的偏移


img


http://www.ppmy.cn/news/1546318.html

相关文章

websphere CVE-2015-7450反序列化和弱口令,后台Getshell

靶场安装 docker pull iscrosales/websphere7docker run -d -p 9060:9060 -p 9043:9043 -p 8880:8880 -p 9080:9080 iscrosales/websphere7 端口: 9080—web(http)应用访问端口、9443—web(https)应用访问端口、9060—管理后台访问端口、9043—管理控制台安全端口…

WPF中的依赖属性

1.创建项目后下载两个NuGet程序包 2.创建一个MyButton类继承Button MyButton类如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Contro…

大数据新视界 -- 大数据大厂之 Impala 性能优化:为企业决策加速的核心力量(下)(14/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Linux环境基础开发工具的使用

Linux软件包管理器yum yum是一个软件下载安装管理的客户端,相当于手机上的应用商店 Linux中软件包可能存在依赖关系,而yum会帮我们解决依赖关系的问题 Linux系统(centos)的生态 安装软件的方式:源代码安装、rpm包安…

汇盈策略股票杠杆交易加仓超1000亿,大幅买入这些股票

查查配分析上周,A股市场反弹,上证指数、深证成指、创业板指分别累计上涨5.51%、6.75%、9.32%。在市场反弹的情况下,Wind数据显示,截至11月8日,A股市场融资余额报17944.52亿元,创2015年7月3日以来新高,上周融资余额增加1031.35亿元。 汇盈策略但凭借其优秀的业务模式和高效的运…

智能家居的未来:AI让生活更智能还是更复杂?

内容概要 智能家居的概念源于将各种家居设备连接到互联网,并通过智能技术进行控制和管理。随着人工智能的迅速发展,这一领域也迎来了前所未有的机遇。从早期简单的遥控器到如今可以通过手机应用、语音助手甚至是环境感应进行操作的设备,智能…

【Linux】 IPC 进程间通信(三)(消息队列 信号量)

📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 一、消息队列 💌…

sed awk 第二版学习(九)—— 高级主题

目录 一、getline 函数 1. 从输入数据流中读取 2. 从文件中读取 3. 将输入赋给一个变量 4. 从管道读取输入 二、close() 函数 三、system() 函数 四、基于菜单的命令生成器 五、直接向文件和管道输出 1. 直接输出到一个文件 2. 直接输出到一个管道 3. 处理多个文件…