002 通过send断点分析功能call
文章目录
- 游戏发包流程
- 分析吃药call
- 分析换装备call
- 总结
游戏发包流程
对于网络游戏来说,发送数据包是必不可少的一个环节,无论是走路还是喊话或者是其他功能都需要通过发包函数向服务器发送数据包。
以技能call为例,整个流程大致如下:
- 接收到用户消息(键盘按下技能快捷键)
- 调用技能call
- 调用技能call2
- 调用技能call3
- 组装数据包
- 对数据进行加密
- send发包
技能call会有很多个,越往外层,功能越完整,但限制越多,越往里层限制越少,功能越强大。
例如在最外层的技能call1会检测是否到达冷却时间,当前人物状态等等,内层的技能call2直接释放技能,那么如果直接调用call2就可以达到无CD的效果。
所谓的变态功能只不过就是绕过游戏的一些限制,然后调用外层call达到目的。如果能找到最里层的call,或者直接发送封包,就可以直接绕过所有的限制。
借助这个特性我们可以在发包的函数下API断点,逆向分析出这个游戏的大部分功能。
当然也不排除底层对抗比较强的一些游戏,会重写三环的所有API,这个时候API断点就无效了。这种情况想要找到游戏的发包函数其实也很简单,我们下次再讨论
发包函数一共有下面的三个
send
sendto
WSASend
分析吃药call
这里以吃药为例,用OD附加游戏,并且下sendAPI断点
随便吃一个药品,这里需要记住以下药品的位置是在第22格
程序断下,打开调用堆栈,这里需要一个一个排除。最后可以确定吃药call是491C50,右键,显示调用
在这个地方下个断点 让程序断下,这个call很明显需要调用两个call。接下来分析代码,先进去上面的那个call看看
这个函数之前我们追血量基址的时候已经分析过了,那么大概可以猜到这个call就是获取当前人物的血量
然后再看edx的值是0x15,也就是十进制的21。药品的位置在第22格,如果从0开始计数的话,那么这个参数大概就是药品的位置了。
这个call的参数相对来说调用起来没有那么方便,如果有多个吃药call的可能性,那么在外层一定还有一个call,是可以通过药品的名称或者其他东西作为参数来调用的
分析完成以后可以通过代码注入器来测试call是否有效
分析换装备call
同样的方法在send下断,然后更换装备让断点断下
点击调用堆栈,挨个排除,最后确定为67D4E0
接下来分析参数,ecx来自[edx+0x20]而edx=[0xD0DF1C],这个数据不难跟
而esi的值是一个地址,指向的值多次测试有下面几种情况
02030011
03100011
000C0011
后面四位的0011是固定的。前面两位02 03 00指的是需要更换的部位,例如:上衣=02,鞋子=03,头盔01,武器=00
第三四位的含义是物品栏装备的位置,依旧是从0开始计数。代码就不写了,各位自行测试
总结
网络游戏的逆向分析的一个大的切入点就是发包函数,通过整个发包流程,可以逆向出绝大部分功能,这里只举了两个例子。
这个方法只适用一些简单的游戏功能,如果功能比较复杂,则会频繁向服务器发送数据包,通过这种简单的调用关系就不一定能找到关键call。
相关工具:
https://github.com/TonyChen56/GameReverseNote
002 通过send断点分析功能call相关推荐
- linux启动程序镜像构建_启动人员分析功能3个构建块
linux启动程序镜像构建 A solid foundation to building a scalable People Analytics function. You've got to sta ...
- GIS叠加分析功能学习
叠加分析一般是2个数据集的运算.获得另一个结果数据集. 先整清楚功能的含义:需要用到时再进行操作,或编程实现之. 1 裁剪 裁剪是用裁剪数据集从被裁剪数据集中提取部分特征集合的运算. 裁剪数据集的类型 ...
- Unity3D的断点调试功能
这篇文章介绍的调试工具是Unity自带的MonoDevelop, 假设要用VS,须要下载unityvs http://unityvs.com/. http://liweizhaolili.blo ...
- D1net阅闻:Google Analytics增AI自动化分析功能
Google Analytics增AI自动化分析功能 该自动化分析功能能自动产生资料分析结果,页面中查看图形化信息,借助该功能在5分钟内提供资料分析的结果. 谷歌发布更新封堵Quadrooter漏洞: ...
- 使用VS2010代码分析功能增强ASP.NET应“.NET研究”用程序安全
任何从事ASP.NET开发的人都不得不承认,在其职业生涯中曾经遇到过应用程序安全问题,开发人员常常被迫尽快交付代码,平台的复杂性和各种配置选项让应用程序的安全总达不到预期,此外,调试和生产环境的配置要 ...
- php采集器分析功能实现
php采集器分析功能实现 a)URL地址分析 根据数据库中采集规则的定义字段,分为一页地址,多页地址,**-**页地址三种形式. //流程控制 switch (URL地址形式) { case 1: / ...
- 知网提供的“导出与分析”功能来确定论文主题
论文选题是毕业论文的第一步,也是至关重要的一步! 论文选题明确了论文的方向.角度和规模,决定了论文的价值,一定程度上也决定了开题报告和论文的质量. 这个选题方法简单而且实用,即使是论文小白,套用这个方 ...
- ncm 汇集 matlab,ncm-solutions 压缩包中的文件主要是基于matlab的数值计算以及分析功能学习的很好的例程 266万源代码下载- www.pudn.com...
文件名称: ncm-solutions下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 1650 KB 上传时间: 2016-11-01 下载次数: 0 提 ...
- matlab怎么控制采集卡,用MATLAB控制NI采集卡实现高精度数据采集与分析功能-l采.pdf...
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 用MATLAB控制NI采集卡实现高精度数据采集与分 ...
最新文章
- java获取系统电量_android操作系统怎么获得电量
- AJAX是否能够取代桌面应用程序
- 使用Angular依赖注入自定义SAP Spartacus的ProductAdapter
- py脚本实现用例执行html报告,pytest文档7-pytest-html生成html报告
- 【资料整理】Eclipse快捷键
- pygame学习_part1_pygame写程序前的准备工作
- 教程——sumolympics
- ubuntu 系统获取和阅读 linux 源码
- 机器学习项目实践——K-means聚类实现广告分析
- cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘错误
- 初识大数据:全国社会保险大数据应用创新大赛
- 日常工作记录:安卓运行时出现的Cause: Dex cannot parse version 52 byte code.问题
- ST-LINK 连接图
- 为实体提供枚举类型的支持
- 网上不需要实名的物联卡能用吗?有什么安全隐患?
- Lidar_imu自动标定源码阅读(二)——calibration部分
- Maven动态统一修改版本号
- Unity发布WebGL运行问题
- iOS、mac开源项目及库
- xfire实现webservice
热门文章
- SLAM:SLAM之VSLAM的简介
- 成功解决graphviz\backend.py, line 162, in pipe raise ExecutableNotFound(args) graphviz.backend.Executab
- Py之scikit-learn:机器学习Sklearn库的简介、安装、使用方法(ML算法如何选择)、代码实现之详细攻略
- golang 学习 (八)协程
- VCL界面控件DevExpress VCL Controls发布v18.2.5|附下载
- 拓展编辑器(五)_监听事件
- dockerfile centos+jdk+时区设置
- VBS 自动打开软件
- 洛谷P1220 关路灯(区间dp)
- iOS 设置状态栏样式