郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

郁金香终身VIP管理员QQ150330575项目合作(有实力的+)视频教程+每月更新+QQ群
飞郁视频分享(每周更新)
查看: 1700|回复: 0

超激斗梦境之如何实现瞬移

[复制链接]
发表于 2021-1-30 15:30:47 | 显示全部楼层 |阅读模式
本帖最后由 任鸟飞 于 2021-1-30 15:33 编辑

超激斗梦境之如何实现瞬移
交流QQ群:762613518  咨询qq:415004929
1.png

超激斗梦境是网易新出的游戏 还未公测 我们有幸拿到测试资格 以下数据是我们在内测期间得到的人物坐标数据来实现瞬间移动 下面我们就开始

首先我们打开CE工具 附加游戏
然后数值类型选着浮点数 大部分游戏的坐标一般都是选用浮点数的多一下 但是也不排除整数等类型
扫描类型为未知初始值 我们会得到很多 然后我们改变我们游戏内的坐标 向前走一步 在搜索变动的
2.png
然后保值不动 在搜索未变动的值 这样反复搜索
到后面我们扫描到6个
3.png
这时我们对其挨个修改 看看 游戏内是否有变化
3.png
发现其中有一个是可以改变的 并且没有被修正
那么我们在改一下远一点的地方 验证一下 是否真实有效
因为有时距离太近的话 在我们眼里是瞬移 实则是跑过去的
只是我们看不到
更改了一个远一点的 发现我们已经跑到地图外了
坐标并没有被修正 那么就说明 我们可以使用这个坐标达到瞬移的效果
那么我们现在可以打开x64_dbg(调试工具)
附加游戏 输入我们的地址

在下面的代码中我们断到了一个+88偏移 有同学总是会问 我要最哪个 怎么确定 哪个寄存器是我要追的

最简单的方式 就是标记一下我们用CE搜出来的地址
然后我们在断下的位置 看一眼寄存器 右键窗口跟随
然后发现 我们刚刚标记的位置 和我们刚刚打开的这个寄存器的地址 就是差偏移的位置
那么就可以确定需要追那个寄存器了

$+192 | E8 C3 DF EE FF | call nightmarebreaker.7FF718FDFA30 |
$+197 | 85 C0 | test eax,eax |
$+199 | 75 0A | jne nightmarebreaker.7FF7190F1A7B |
$+19B | 8B 44 24 40 | mov eax,dword ptr ss:[rsp+40] |
$+19F | 89 83 A8 00 00 00 | mov dword ptr ds:[rbx+A8],eax |
$+1A5 | 4C 89 B3 9C 00 00 00 | mov qword ptr ds:[rbx+9C],r14 |
$+1AC | 48 8B 45 F8 | mov rax,qword ptr ss:[rbp-8] |
$+1B0 | 48 89 83 8C 00 00 00 | mov qword ptr ds:[rbx+8C],rax |
$+1B7 | 45 33 C0 | xor r8d,r8d |
$+1BA | 8B 54 24 40 | mov edx,dword ptr ss:[rsp+40] |
$+1BE | 48 8B CB | mov rcx,rbx |
$+1C1 | E8 F4 7D FB FF | call nightmarebreaker.7FF7190A9890 |
$+1C6 | F2 48 0F 2C C0 | cvttsd2si rax,xmm0 |
$+1CB | 48 89 83 94 00 00 00 | mov qword ptr ds:[rbx+94],rax |
$+1D2 | 41 8B 8D 88 00 00 00 | mov ecx,dword ptr ds:[r13+88] | +88
$+1D9 | 84 C9 | test cl,cl |
$+1DB | 78 2B | js nightmarebreaker.7FF7190F1ADE |
$+1DD | 8B 44 24 40 | mov eax,dword ptr ss:[rsp+40] |
$+1E1 | 41 39 85 80 00 00 00 | cmp dword ptr ds:[r13+80],eax |
$+1E8 | 75 0C | jne nightmarebreaker.7FF7190F1ACC |
$+1EA | 41 83 BD 24 02 00 00 00 | cmp dword ptr ds:[r13+224],0 |
$+1F2 | 8B C6 | mov eax,esi |
$+1F4 | 75 05 | jne nightmarebreaker.7FF7190F1AD1 |
$+1F6 | B8 80 00 00 00 | mov eax,80 |
$+1FB | 0F BA F1 07 | btr ecx,7 |
$+1FF | 0B C8 | or ecx,eax |
$+201 | 41 89 8D 88 00 00 00 | mov dword ptr ds:[r13+88],ecx |
$+208 | 8B 54 24 40 | mov edx,dword ptr ss:[rsp+40] |
$+20C | 49 8B CD | mov rcx,r13 |

然后我们继续向上追
中间有一些返回的地方就不在这里复制了 就和我们所学的一样 正常追寄存器
然后我们追到一个rax 学过我们的前面基础课程的都知道
rax是有什么特性 rax遇到CALL就需要我们进到CALL里面去追
CALL外面下断 然后F7步进 进到CALL里面后 F8步过 一直走出这个CALL
当返回CALL了 我们就按减号键返回 去追rax
然后看到了 基址
这时我们发现这地方附近很不好定位
那么我们在代码里搜索下 常数
这时我们来到这



$+64 | 74 47 | je nightmarebreaker.7FF718F41F2C |
$+66 | 89 3D 25 8E 89 02 | mov dword ptr ds:[7FF71B7DAD10],edi |
$+6C | 48 8B 0D 6E 93 89 02 | mov rcx,qword ptr ds:[7FF71B7DB260] |
$+73 | 48 85 C9 | test rcx,rcx |
$+76 | 75 1F | jne nightmarebreaker.7FF718F41F16 |
$+78 | 48 8D 0D 0A 0A 72 01 | lea rcx,qword ptr ds:[7FF71A662908] |
$+7F | E8 2D 9F 08 00 | call nightmarebreaker.7FF718FCBE30 |
$+84 | 48 89 05 56 93 89 02 | mov qword ptr ds:[7FF71B7DB260],rax |
$+8B | E8 11 A0 09 00 | call nightmarebreaker.7FF718FDBF20 |
$+90 | 48 8B 0D 4A 93 89 02 | mov rcx,qword ptr ds:[7FF71B7DB260] |
$+97 | 33 D2 | xor edx,edx |
$+99 | E8 43 29 30 FF | call nightmarebreaker.7FF718244860 |
$+9E | 48 8B C8 | mov rcx,rax |
$+A1 | E8 3B 84 0E 00 | call nightmarebreaker.7FF71902A360 |
$+A6 | 48 89 05 DC 8D 89 02 | mov qword ptr ds:[7FF71B7DAD08],rax | 人物坐标基址
$+AD | FF 15 DE 8A 40 01 | call qword ptr ds:[<&GetTickCount>] |
$+B3 | 89 05 D8 8D 89 02 | mov dword ptr ds:[7FF71B7DAD10],eax |
$+B9 | F3 0F 10 93 8C 00 00 00 | movss xmm2,dword ptr ds:[rbx+8C] |
$+C1 | F3 0F 5C 93 70 03 00 00 | subss xmm2,dword ptr ds:[rbx+370] |
$+C9 | F3 0F 10 83 88 00 00 00 | movss xmm0,dword ptr ds:[rbx+88] |
$+D1 | F3 0F 5C 83 6C 03 00 00 | subss xmm0,dword ptr ds:[rbx+36C] |
$+D9 | F3 0F 10 8B 90 00 00 00 | movss xmm1,dword ptr ds:[rbx+90] |
$+E1 | F3 0F 5C 8B 74 03 00 00 | subss xmm1,dword ptr ds:[rbx+374] |
$+E9 | F3 0F 59 D2 | mulss xmm2,xmm2 |
$+ED | F3 0F 59 C0 | mulss xmm0,xmm0 |
$+F1 | F3 0F 58 D0 | addss xmm2,xmm0 |
$+F5 | F3 0F 59 C9 | mulss xmm1,xmm1 |
$+F9 | F3 0F 58 D1 | addss xmm2,xmm1 |



我们在这段代码里看到 人物坐标基址 附近比较好定位一下
那我们就选用这里
这时我们就可以写公式了

[0x7ff71b7dad08]+88 人物X坐标 DWORD
[0x7ff71b7dad08]+8C 人物Y坐标 DWORD
[0x7ff71b7dad08]+90 人物Z坐标 DWORD

因为游戏是动态加载的 这时我们需要用基址减去模块地址 算出偏移

nightmarebreaker.exe+383AD08 人物坐标基址

特征码:
40 57 48 83 EC 60 48 C7 44 24 30 FE FF FF FF 48 89 5C 24 70 48 8B D9 33 FF 89 B9 78 03 00 00
向下+A6 QWORD 人物基址


现在我们看这个公式很简单 他附近还有一些别的人物数据 有同学感兴趣的可以再去分析别的数据
下一篇我们分析下人物基础信息


郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

限时限量优惠

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2021-5-11 14:25 , Processed in 0.054135 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表