网络游戏逆向分析-6-使用背包物品call
网络游戏逆向分析-6-使用背包物品call
首先,大家在处理网络游戏的时候,一定得利用好发包函数,因为他就是整个网络游戏的关键。
处理办法:
这里还是直接给发包打断点来处理。
就像我们之前处理喊话函数call一样来处理它:

还是先给send打断点,然后依次往上找函数调用,直到只有使用背包物品才会断下来的函数作为关键函数分析:

肯定会有重复的,重复的就直接继续往上跳就行了

我在这个背包6这个函数这里就满足了所有要求:1:使用背包内容会断下来,2别的不会。所有我就把这个作为一个关键函数call来分析。
首先分析函数的参数,由于这是一个windows内部的函数,所以很有可能是stdcall 或者cdecall,就直接利用堆栈就好了,函数最后肯定会平栈的,不管前面有多少push,直接看函数执行完之后的栈提升就多少就可以大概看出来有多少参数:
现在是这样:

然后是这样:

+C,C就是12,应该是有3个参数在里面,还有需要注意的是ECX这个寄存器,在C++里面尤其要注意他,因为如果扯到了类里面的thiscall就会有一个ecx来存放this指针,所以这里 分析的时候就带着它一起分析了。


不管我用背包的哪一个,这个第一个参数的2和最后一个的1都没有改变过,而中间这个会随着物品的不同而改变不同,推测是根据物品的数组从0开始然后01234这样来处理:
果然再我用第六个物品的时候它变成了5:

然后就是ecx里面的this指针了,这里先拿来用着:

这里我第二个物品栏的东西被我吃完了,所以这里是肯定成功了。然后就来分析参数,其实也就一个ecx需要分析而已,别的都是固定的。

ecx是这样来的,是不是非常像先是ecx得到某个地址的首地址,然后偏移1F54得到了内容.
所以这里来分析mov ecx,....[esp+18]。
前面我们说到过牵扯到esp的就首先考虑参数,临时变量这种东西。首先考虑参数,利用Windows调用函数的极值,是先把参数入栈,然后再把返回地址入栈来看是不是参数:

可以看到这个地址离返回的地址相当的远啊,所以很有可能就不是参数,这里我们再考虑,将函数跳出后看参数堆栈有没有被释放来判断是否是参数:
刚开始:

跳出函数后:
丝毫没有改变,说明它不是这个函数的参数。
很有可能是一个局部变量,局部变量的验证就比较方便了,在函数的头部断下来,然后打一个硬件断点,修改了就断下来,前提是这个函数的esp+18这个地址不会改变(这个自己去验证)。这里我直接操作了
在函数第一条地址下断下来,然后打一个硬件写入断点,段下来后在这里:

这样就一目了然,是被这里的eax给修改了,就分析这个eax就行了。
这个eax前面正好有一个函数调用,来分析看看是不是这个函数的问题,先给函数的上一条指令打断点来分析eax:
先是为0

调用完之后就是这个值了:

直到要调用背包的时候这个值依然是这个值:
因为前面是eax来修改了[esp+18]地址对应的内容

所以一直这样下来没问题。而且这个修改eax的函数根本没有参数调用,所以可以直接拿来用:

这样的话就我们的代码逻辑就成型了:

这里的call函数,就是把eax赋值为后面的mov ecx,dword ptr ss[esp+18]给代替了,
然后push 1 push2是必须的,中间的push 3是物品在物品栏中的位置,最后的call函数是调用背包的函数。
总结
大型网络游戏,发包函数是非常非常重要的,通过发包函数可以贯彻到很多东西,对于ESP这个寄存器必须要考虑到函数参数和临时变量,根据是参数还是临时变量来分别使用分析方法,参数就可以直接看,然后临时变量采用硬件断点来查看修改。区分是不是参数可以通过将函数执行完后的栈是否将其舍弃掉来判断,因为参数是函数栈里面的函数调用完之后就会释放这个栈。
这里还有不合理的地方,如果外挂给别人用,别人肯定是想输入一个名字,比如说 蓝药水就直接用了,这个还要人家来数数组,肯定垃圾不行,所有后面还要来遍历数组来获取对应的内容。
网络游戏逆向分析-6-使用背包物品call的更多相关文章
- 网络游戏逆向分析-3-通过发包函数找功能call
网络游戏逆向分析-3-通过发包函数找功能call 网络游戏和单机游戏的分析有相似点,但是区别还是很大的. 网络游戏和单机游戏的区别: 网络游戏是需要和服务器进行交互的,网游中的所有功能几乎都会先发送封 ...
- 网络游戏逆向分析-4-分析喊话call参数来源
网络游戏逆向分析-4-分析喊话call参数来源 好久没更新了,去实习去了,大家见谅一下. 前面找到了喊话功能call函数,然后分析了它的参数有五个,分别的四个push的和一个ecx: 第一次edx = ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- 技术分享:逆向分析ATM分离器
文章内容仅供技术交流,请勿模仿操作! 背景(作者) 每一次外出时, Elizabeth和我总是格外的小心,同时把我们身上的钱藏在特殊的皮带上面,这样还不够,我们还采取了“狡兔三窟”的方式来藏身上带的银 ...
- C++反汇编与逆向分析技术揭秘
C++反汇编-继承和多重继承 学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...
- TI(德州仪器) TMS320C674x逆向分析之一
一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地 ...
- 一文了解安卓APP逆向分析与保护机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- Android逆向分析(2) APK的打包与安装背后的故事
前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之 ...
- 逆向分析一款国外Blackjack Card Counter软件并附上License生成脚本
没有学过逆向,一时兴起,搞了一下这个小软件,名为“逆向分析”,其实过程非常简单,难登大雅之堂,就当段子看吧.首先介绍一下背景吧.这是一款国外的Blackjack也就是21点算牌软件,我从来不玩牌的,机 ...
随机推荐
- badboy如何录制jmetet脚本
网盘下载: https://pan.baidu.com/s/1mTOEeE47tmk29_wndID3iw 傻瓜式安装即可, 内附教程 1. 打开Badboy, 新建一个文件 2. 输入要录制的网址 ...
- Blazor 模板化组件开发指南
翻译自 Waqas Anwar 2021年4月15日的文章 <A Developer's Guide To Blazor Templated Components> [1] 在我之前的一篇 ...
- 腾讯云TDSQL MySQL版 - 开发指南 二级分区
TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...
- Apache/Nginx/IIS 访问日志详解
Apache日志详解 1.Apache日志文件名称及所在路径 日志文件一般都是保存在在apache/logs目录下,实际情况可以根据Apache的配置文件去查找日志文件所在的路径. 例如phpstud ...
- AlexNet论文总结
论文链接:https://papers.nips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf Q1:解决了什么? 目前主 ...
- 一文搞懂B树、B-树、B+树
前言 B树和B-树是同一种数据结构,如果不清楚的话,会被面试官忽悠,所以本文介绍两种数据结构,B树和B+树,废话不多数咱们开干. B树 介绍 在计算机科学中,B树是一种自平衡的树,能够保持数据有序.这 ...
- CentOS7 安装Oracle12c数据库
在centos7上安装oracle是一个比较麻烦的事,在安装前需要做一些服务器的准备工作 我是在虚拟机里测试的所以需要下载centos7的镜像,可以去官网然后找到中国的镜像站用迅雷插件下载速度比较快这 ...
- NOIP 模拟 $29\; \rm 完全背包问题$
题解 \(by\;zj\varphi\) 一道 \(\rm dp\) 题. 现将所有种类从小到大排序,然后判断,若最小的已经大于了 \(\rm l\),那么直接就是一个裸的完全背包,因为选的总数量有限 ...
- Golang在Linux系统中实现微秒级延迟
在程序中延迟或者等待一段时间一般可以使用Sleep函数实现,但是因为操作系统线程调度的消耗,往往只能做到十几或者数十毫秒的精度,很难达到微秒级,Golang的time.Sleep也是如此. Sleep ...
- 转: SIFT原理解释
1.SIFT概述 SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的.SIFT特征对旋转.尺度缩放.亮度变 ...