游戏逆向基础-跳出游戏线程发包

附加游戏后下断点 bp ws2_32.send

send函数断下后,可以看到数据地址每次都一样

可以说明这个游戏是线程发包,所以直接在数据窗口中转到这个地址,然后对这个地址下硬件写入断点。

下了硬件写入断点后可以一层一层往上面跟,确定写包的CALL,但是由于这个游戏发包异常的频繁,这种方式跟的话费时费力,所以采取第二种办法:

下硬件断点断下来后看调用堆栈,多观察几个包的调用堆栈,一般来讲都有一个公共的写包函数,只要找到这个写包函数,再往上面跳就是各个功能了。

我这里地址是f1b9020 所以我执行命令dump f1b9020跳转到这个地址来:

接下来下硬件写入断点观察:

几次断下来后堆栈如下:

观察了几个包 只有00D8EAA2值公共调用,说明这个包很有可能就是写包函数

转到00D8EAA2这个地址,注意,这个地址是返回到了这个地址的意思,也就是说call是在这个地址上面一行。

在00d8ea9f处下断发现一直断 说明这个游戏在不断的发包,所以需要下条件断点过滤我们不必要的包。

经过几次观察发现唯一的规律就是 esp+8的值会变,我们过滤掉几个不是我们动作产生的包 断点条件如下:

esp+8!= 0f2eae7b&&esp+8!= 0f2eaabb 下好条件断点后去游戏选怪

断下来后返回到上一层 给这个call下段

然后再返回到上一层 给这个call下段

这里不打算返回上一层了。因为看这个call就有点像选怪call的样子。

这里下了一个断点,然后去游戏里面选个怪,看看参数,然后注入试试。

可以看到是有两个参数 第一次参数是41 第二个固定是1 盲猜第一个是怪物的ID,因为我换了几个怪这个参数就在不断的变换。

这里ecx也赋值了,ecx一般是this指针。可以去call里面看一下使用ecx的时候有没有先赋值,如果没有的话ecx就是传的this

所以 选怪的汇编代码如下:

mov ecx,dword ptr ds:0xBBB05C

push 0x1

mov eax,dword ptr ds:ecx

push 怪物ID

call dword ptr ds:eax+0x3C

注入之前没有选怪物。

注入后的效果:

由此可见 选怪CALL是OK的。

相关推荐
是三一seven19 小时前
Sql注入基础
数据库·安全·网络安全
智慧地球(AI·Earth)1 天前
MAX-API v1.0.5-preview.2:安全加固、计费一致性与限流隔离
安全·max api·差额计费修复
王维同学1 天前
Credential Provider、Filter 与 PLAP 的 CLSID 枚举
c++·windows·安全·注册表
其实防守也摸鱼1 天前
Kimi K3深度测评:长文本之外的真实力
运维·开发语言·网络·人工智能·python·学习·安全
xian_wwq1 天前
【学习笔记】Agent 安全护栏 —— 当 Agent DROP TABLE 了你的生产数据库-07/15
笔记·学习·安全
fanchenxinok1 天前
基于图莫斯的CAN UDS升级上位机-LabVIEW版本(四):TOOMOSS_SID27_SecurityAccess.vi — 安全访问
安全·labview·uds升级·子vi
海兰1 天前
【高速缓存】RedisVL 索引迁移指南:安全演进索引结构
前端·数据库·redis·安全·缓存·bootstrap
其实防守也摸鱼1 天前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·运维·网络·人工智能·学习·安全·macos
●VON2 天前
鸿蒙 PC Markdown 编辑器内核:在 ArkWeb 中离线运行 CodeMirror 6
安全·华为·编辑器·harmonyos·鸿蒙
zzq77972 天前
加固包闪退四象限定位:targetSdk 与保护策略实战解析
android·安全·安卓·安全架构