当结构发生变化以更新内存结构偏移量时,当新版本出现时,我一直在对游戏进行指针扫描。我决定尝试使用签名扫描来尝试使我的偏移量更耐更改。
当前游戏版本中的指针扫描时 0x1034EF8 是我试图获得的偏移量。我附加了一个调试器和从这个地址读取的函数,并提出了一个独特的模式。当我进行模式扫描时,会发现并按预期返回此模式。
我遇到的问题是将这个汇编指令内存地址 461EE300 转换为这个偏移量 0x1034EF8。作弊引擎能够做这样的事情所以它一定是可能的,以下是从作弊引擎复制并粘贴的,它向我显示了 461EE300 地址的 game_x64.exe + 1034EF8。
如何将 461EE300 转换为 game_x64.exe + 1034EF8 并提取 1034EF8?
//90 - nop
//48 83 43 50 F8 - add qword ptr[rbx + 50],-08
//48 8B 0D 461EE300 - mov rcx,[game_x64.exe + 1034EF8]
//4C 8B 05 471EE300 - mov r8,[game_x64.exe + 1034F00]
//49 3B C8 - cmp rcx, r8
public static readonly Pattern MyPattern = new Pattern(new byte[]
{
0x90,
0x48, 0x83, 0x43, 0x50, 0xF8,
0x48, 0x8B, 0x0D, 0x00, 0x00, 0x00, 0x00,
0x4C, 0x8B, 0x05, 0x00, 0x00, 0x00, 0x00,
0x49, 0x3B, 0xC8
}, "xxxxxxxxx????xxx????xxx");