逆向看了下war3.exe发现只是个加载器,核心都是在game.dll内,因此剥之……
直接上代码
#define BlizAxOffset 0x4C2E4
#define GameTitle "Warcraft III"
HMODULE hStorm;
typedef BOOL (__stdcall *FStorm425)(char *szTitle,char *szPathName,DWORD dwType,char *szBinPath);
FStorm425 pStorm425;
typedef DWORD (__stdcall *FGameMain)(HMODULE hGameDll);
FGameMain pGameMain;
bool SetGameDirectory(){
char szPath[MAX_PATH] = {0};
if (GetModuleFileName(NULL,szPath,MAX_PATH)){
char *szDir = strrchr(szPath,0x5C);
if (szDir){
if (pStorm425(GameTitle,"GamePath",4,szPath) == TRUE){
printf("Set GamePath=%s\r\n",szPath);
}
szDir[1] = 0;
if (pStorm425(GameTitle,"InstallPath",4,szPath