网络游戏逆向分析-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的更多相关文章

  1. 网络游戏逆向分析-3-通过发包函数找功能call

    网络游戏逆向分析-3-通过发包函数找功能call 网络游戏和单机游戏的分析有相似点,但是区别还是很大的. 网络游戏和单机游戏的区别: 网络游戏是需要和服务器进行交互的,网游中的所有功能几乎都会先发送封 ...

  2. 网络游戏逆向分析-4-分析喊话call参数来源

    网络游戏逆向分析-4-分析喊话call参数来源 好久没更新了,去实习去了,大家见谅一下. 前面找到了喊话功能call函数,然后分析了它的参数有五个,分别的四个push的和一个ecx: 第一次edx = ...

  3. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  4. 技术分享:逆向分析ATM分离器

    文章内容仅供技术交流,请勿模仿操作! 背景(作者) 每一次外出时, Elizabeth和我总是格外的小心,同时把我们身上的钱藏在特殊的皮带上面,这样还不够,我们还采取了“狡兔三窟”的方式来藏身上带的银 ...

  5. C++反汇编与逆向分析技术揭秘

    C++反汇编-继承和多重继承   学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...

  6. TI(德州仪器) TMS320C674x逆向分析之一

    一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地 ...

  7. 一文了解安卓APP逆向分析与保护机制

    "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...

  8. Android逆向分析(2) APK的打包与安装背后的故事

    前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之 ...

  9. 逆向分析一款国外Blackjack Card Counter软件并附上License生成脚本

    没有学过逆向,一时兴起,搞了一下这个小软件,名为“逆向分析”,其实过程非常简单,难登大雅之堂,就当段子看吧.首先介绍一下背景吧.这是一款国外的Blackjack也就是21点算牌软件,我从来不玩牌的,机 ...

随机推荐

  1. 【C++】使用 libass,完成 Direct3D 11 下的字幕渲染

    前言 前段时间曾经写过一个视频播放器:https://www.cnblogs.com/judgeou/p/14746051.html . 然而这个播放器却无法显示出外挂或者内封的字幕,这里要稍微解释一 ...

  2. 启动或重启Oracle数据以及监听

    (以下均为命令行形式) 1.切换到oracle数据库用户: su - oracle 2.查看数据库的监听状态: lsnrctl status 3.停止监听: lsnrctl stop 4.登陆到ora ...

  3. DVWA(三):SQL injection 全等级SQL注入

    (本文不定期更新) 一.所需环境: 1.DVWA 2.web环境 phpstudy/wamp 3.burp suite 二.SQL注入产生的原因: 程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  4. DHCP服务-自动管理IP地址和分配固定IP

    dhcp服务 端口:67 配置文件:/etc/dhcp/dhcpd.conf 自动分配IP: 一. 安装服务:yum install dhcp 安装过程省略 二.首先,看到配置文件中啥也没有,他的配置 ...

  5. vue同一个页面可以有多个router-view

    参考:https://blog.csdn.net/u011615787/article/details/80075240 参考:https://router.vuejs.org/zh/guide/es ...

  6. Nacos 服务注册的原理

    Nacos 服务注册需要具备的能力: 服务提供者把自己的协议地址注册到Nacos server 服务消费者需要从Nacos Server上去查询服务提供者的地址(根据服务名称) Nacos Serve ...

  7. [SWMM]软件启动不了,出现 “ RPC服务器不可用 ” 错误

    [问题]打开SWMM5.1软件时,初选"RPC服务器不可用"的错误 [解决]计算机管理--服务 设置Print Spooler服务状态为启动,并设置为自启动.

  8. 面向对象之编写驱动程序--中断(linux系统、s3c6410开发板)

    /*------------------------- *先申明下,本人是个菜鸟,刚开始接触驱动程序编写,交代下开发环境(主机系统redhat6.3,开发板ARM-s3c6410) 以watchdog ...

  9. mzy,struts学习(三):action中获得servlet中三域一参的三种方法

    package com.mzy.servlet; import java.util.Arrays; import java.util.Map; import javax.servlet.Servlet ...

  10. 刷题-力扣-113. 路径总和 II

    113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...