根据对魔兽世界的分析,和对StormLib的总结出以下代码: #define HASH_TYPE_FILE_INDEX 0x0 #define HASH_TYPE_FILE_NAME1 0X1 #define HASH_TYPE_FILE_NAME2 0X2 #define HASH_TYPE_FILE_SEED 0X3 static DWORD StormBuffer[STORM_BUFFER_SIZE]; //有专门的初始化函数,略 extern BYTE AsciiTableUpperCase[]; //将小写映射为大写的表,解释见我前一篇文章C/C++大小写转换 DWORD HashString(char szFileName[],DWORD dwFlag) { BYTE * pbKey = (BYTE *)szFileName; DWORD dwSeed1 = 0x7FED7FED; DWORD dwSeed2 = 0xEEEEEEEE; DWORD dwOffset = dwFlag<<8; int ch; while(*pbKey != 0) { ch = AsciiTableUpperCase[*pbKey++]; dwSeed1 = StormBuffer[dwOffset + (DWORD)ch] ^ (dwSeed1 + dwSeed2); dwSeed2 = ch + dwSeed1 + dwSeed2 + (dwSeed2 << 5) + 3; } return dwSeed1; } 这是根据汇编代码高度还原的版本,在StormLib中分别写了四个函数- -呵呵