网络游戏逆向分析-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. RHCE_DAY03

    shell函数 在shell环境中,将一些需要重复使用的操作,定义为公共的语句块,即可称为函数(给一堆命令取一个别名) 函数可以使脚本中的代码更加简洁,增强易读性,提高脚本的执行效率 #函数定义格式1 ...

  2. 大写字母与小写字母 相差 一个 空格 A = 65 a = 97 空格 = 32

    1 //大写字母与小写字母 相差 一个 空格 A = 65 a = 97 空格 = 32 2 3 #include <stdio.h> 4 int main() 5 { 6 7 char ...

  3. Kotlin高阶函数实战

    前言 1. 高阶函数有多重要? 高阶函数,在 Kotlin 里有着举足轻重的地位.它是 Kotlin 函数式编程的基石,它是各种框架的关键元素,比如:协程,Jetpack Compose,Gradle ...

  4. Vue-Promise

    promise 就是一种异步编程的的解决方案 当执行网络请求的时候,代码就会出现阻塞,下面的代码要等待请求完成了在运行,所以我们一般网络请求的时候就去开启一个异步任务,一边请求一边执行其他代码 请求到 ...

  5. 代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七)

    代码重构与单元测试(一) 代码重构与单元测试--测试项目(二) 代码重构与单元测试--"提取方法"重构(三) 代码重构与单元测试--重构1的单元测试(四) 代码重构与单元测试--对 ...

  6. Docker命令图

    attach #当前shell下 attach连接指定运行镜像 build #通过DockerFile 定制镜像 commit #提交当前容器为新的镜像 cp #从容器中拷贝指定文件或者目录到宿主机中 ...

  7. Eclipse的XML编辑器解决方案

    现在使用的Eclipse SDK 3.7.2里没有XML编辑器,无法进行语法高亮,也没有格式化(按层次控制缩进量)和设计视图,很不方便.对于ant文件,可以用Ant Editor来打开,ivy文件在装 ...

  8. java基础技术集合面试【笔记】

    java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...

  9. linux 磁盘IO速度测试

    写入速度测试命令:time dd oflag=direct if=/dev/zero of=/data2/test bs=2k count=1000000 //if表示从哪里读取 of表示写入到哪里 ...

  10. CVE-2021-21978 VMware View Planner 远程代码执行漏洞通告 | 附 POC

    漏洞简介 VMware 是一家云基础架构和移动商务解决方案厂商,View Planner 是他旗下推出的一款针对view桌面的测试工具.2021年03月02日,VMware 官方披露了 CVE-202 ...