GameMode.hpp - cngege/Mod GitHub Wiki
-
虚表
🍳获取方法:
- 首先找到 非本地玩家指针
- 找到他的虚表第 417 项的函数(由虚表符号生成器可知)
- 其实这个函数就是
ServerPlayer::setPlayerGameType
- 找到最后一个call 进入(也许是倒数第二个,如果倒数第一个的call很短那应该就是倒数第二个)
- 这个函数是 Player::setPlayerGameType
- 或者通过找到玩家游戏模式指针,
- 然后找改写找到这个函数
- *(1.19.30.04:Minecraft.Windows.exe+19EE8B0 ) *
- 把这个函数伪源码和BDS的这个函数伪源码就可以找到一个call
- 上面有个分配内存的函数 memset 分配的大小都是 0xB8
- 且这个参数的调用,类型均一致,由此凭借BDS中带符号的伪源码可以判断
- 这个call就是 gamemode::gamemode
- 进入:
- 即可以看到这个 off_xxxxx 就是gamemode虚表地址 GameMode::`vftable'
- 从这里设计特征码
- 参考
- 设计的特征码为:
48 8D 05 ? ? ? ? 48 89 01 48 89 51 ? 48 C7 41 ? ? ? ? ? C7 41 ? ? ? ? ? 44 88 61