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