当前位置: 首页 > news >正文

48.x86游戏实战-封包抓取进图call

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

本次游戏没法给

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

工具下载:

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

提取码:6tw3

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

上一个内容:47.x86游戏实战-VEHHOOK封包函数

上一个内容里把进图相关的函数都给进行了hook(拦截)获取了它们的入参(给函数的数据),本次就来分析这些入参

之前在 46.x86游戏实战-DXX封包实现进入地图房间 找到了进入有怪物地图(进入副本)的代码,并且成功进入了副本,但是进入副本只能手动点到副本选择界面之后才可以进入副本,本次就来找怎么进入副本选择界面

首先打开OD并且附加游戏并且来到公共call

然后在公共call打断点

然后通过打开副本选择界面触发断点

然后取消断点

然后按CTRL+F9,它给0x1127D60传了一个0xF,然后调用了0x1127EC0然后就发送了数据包,然后使用wctool.exe模拟这段代码

所以通过wctool.exe模拟这段代码,可以正常进入选择地图界面,那么问题来了,它是怎么知道副本有哪些的

然后经过测试发现,这个游戏某些副本只能在某个区域才有,比如a区域的副本有af1、af2、af3,b区域的副本有bf1、bf2、bf3,如果在b区域模拟上方的代码就会是bf1、bf2、bf3,如果在a区域模拟上方的代码就会是af1、af2、af3,所以接下来要找怎么瞬移到a区域或b区域,也就是找切换地图的代码,然后回到OD,还是在公共call打断点,这次通过切换地图触发(移动也会触发切换地图这里要多搞几次避免分析半天分析的是移动的代码)

通过切换地图触发断点

取消断点

然后按CTRL+F9,按完CTRL+F9之后就来到了下图位置

然后接下来观察下图红框函数的参数

上图红框中的函数在上一个内容里已经被HOOK过了

所以接下来通过wctool.exe注入我们的dll,注入之后启动hook,然后来到Dbgview.exe观察打印的参数,首先启动HOOK之前关闭OD,如果不关闭OD我们的dll没法正常hook,没法正常的原因是我们的HOOK会让OD认为成是它的断点,关闭OD后点击下图红框启动HOOK

启动完来到游戏进行切换地图(切换到可以选择副本地图)的操作,然后通过观察Dbgview.exe,看到它们的入参

然后换一个副本选择地图进入看看它的入参有什么不同

它俩不同的地方

然后下图的来数据猜测是坐标

然后下图的俩数据猜测是地图id

通过切换大量地图做对比,最终发现,如下图E是区域的id

然后区域里的地图id

然后下图红框的两个应该分别是x、y坐标,然后其它的就不知道了

可能随便传就行,接下来写代码测试,并且尝试push的值随便写

pushad
push 0x26
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1127D60
call eaxpush 0xE
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128550
call eaxpush 0x2
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128550
call eaxpush 0x1E
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eaxpush 0x10F
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eaxpush 0x5
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128550
call eaxpush 0xE
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eaxpush 0x1
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eaxmov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1127EC0
call eaxpopad

切换地图代码说明:x、y坐标当切换地图之后会把角色放到0x1128580指定的坐标位置

然后切换到有副本选择地图、然后调用副本显示界面、然后调用进入副本的代码,这一套下来就完成了不管在什么地方都可以进入指定副本的功能

完整代码:wctool里的数字默认都是十六进制,如果不加0x就放到c++里它会认为是十进制的数

pushad
// 切换地图
push 0x26
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eaxpush 0xE
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eaxpush 0x2
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eaxpush 0x1E
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eaxpush 0x10F
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eaxpush 0x5
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eaxpush 0xE
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eaxpush 0x1
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eaxmov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127EC0
call eax
// 进入副本选择界面
push 0xF
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eaxmov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127EC0
call eax
// 进入副本
push 0x10
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eaxpush 0x68
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eaxpush 0
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eaxpush 0
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eaxpush 0
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eaxmov eax, 0x1127EC0
call eaxpopad// 进入副本选择界面
pushadpush 0xF
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eaxmov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127EC0
call eax
popad

img

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构之邻接表
  • PTA - C语言国庆题集1
  • 【Python机器学习】NLP分词——利用分词器构建词汇表(一)
  • 题解:UVA1590 IP网络 IP Networks
  • iframe中postmessage重复返回多次相同信息
  • STM32G474的HAL_ADC_Start_DMA()传递指针问题
  • JS中this的指向问题、JS的执行机制、offset、client、scroll
  • 面试题:遍历三颗相连的满二叉树
  • OpenCV(第二关--读取图片和摄像头)实例+代码
  • 探索贪心算法:解决优化问题的高效策略
  • selenium(二)基于java、元素操控、Frame切换、元素等待
  • 【Go语言基础】调度器模型GPM与垃圾回收器GC
  • GNU/Linux - RSYSLOG
  • 基于大数据分析景区消费行为影响因素研究【消费等级预测、携程,去哪网数据抓取】
  • 去雾去雨算法
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • HashMap剖析之内部结构
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • maya建模与骨骼动画快速实现人工鱼
  • Promise面试题,控制异步流程
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 成为一名优秀的Developer的书单
  • 反思总结然后整装待发
  • 记录:CentOS7.2配置LNMP环境记录
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 批量截取pdf文件
  • 少走弯路,给Java 1~5 年程序员的建议
  • 手写双向链表LinkedList的几个常用功能
  • 小程序 setData 学问多
  • Java总结 - String - 这篇请使劲喷我
  • ​【已解决】npm install​卡主不动的情况
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #ifdef 的技巧用法
  • #Lua:Lua调用C++生成的DLL库
  • (~_~)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (一)Dubbo快速入门、介绍、使用
  • (原)Matlab的svmtrain和svmclassify
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .Net 6.0--通用帮助类--FileHelper
  • .net core 6 集成和使用 mongodb
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net 反编译_.net反编译的相关问题
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表