为了保证局域网内每个玩家的地图一致,War3在游戏开局前会同步、校验玩家的本地地图。
一、查找本地是否有匹配的地图
通过枚举游戏相关目录查找一样名字的地图文件,代码片段如下:
00C9785B |. 0F1045 14 movups xmm0,dqword ptr ss:[ebp+0x14]
00C9785F |. 57 push edi
00C97860 |. FF75 38 push [arg.13]
00C97863 |. 8B75 08 mov esi,[arg.1]
00C97866 |. 8B7D 2C mov edi,[arg.10]
00C97869 |. 8B5D 30 mov ebx,[arg.11]
00C9786C |. 8945 F8 mov [local.2],eax
00C9786F |. 8B45 34 mov eax,[arg.12]
00C97872 |. 50 push eax ; OUT FullMapFilePath
00C97873 |. 51 push ecx ; 计算SHA-1回调函数
00C97874 |. 8D45 D4 lea eax,[local.11]
00C97877 |. 50