WZAG_API bool AGInit () { DWORD dwOld1,dwOld2; LPVOID lpAddress1,lpAddress2 ; lpAddress1 = (LPVOID) 0x00401000 ; //fix96 lpAddress2 = (LPVOID) 0x0C296000 ; //fix96 if ( VirtualProtect (lpAddress1,0x246000+0x1D000,PAGE_EXECUTE_READWRITE,&dwOld1 ) ) //fix96 { if (VirtualProtect(lpAddress2,0x4000,PAGE_EXECUTE_READWRITE, &dwOld2) ) //fix96 { bool m_result ; m_result= GsSetInit() ; memcpy( (char *) 0x0054D812, cFixLoad,11) ; //fix96 _asm { pushad mov eax,0x00404E86 //jdatasend+1 mov ebx,0x00403491 //jrecv+1 mov ecx,offset MyDataSend sub ecx,0x00404E8A //jsend+next mov edx,offset MyDataRecv sub edx,0x00403495 //jrecv+next mov [eax],ecx mov [ebx],edx // MyMultiByteToWideChar MOV DWORD PTR DS:[AB79F04],0B1C1510 mov DWORD PTR DS:[0xC296F14],offset MyMultiByteToWideChar //fix96 // MyWideCharToMultiByte mov DWORD PTR DS: [0xC296F10],offset MyWideCharToMultiByte //fix96 popad } VirtualProtect (lpAddress1,0x246000+0x1D000,PAGE_EXECUTE_READ,&dwOld1 ); //fix96 VirtualProtect (lpAddress2,0x4000 ,PAGE_EXECUTE_READ,&dwOld2 ); //fix96 } else { return 1 ; } } else { return 1 ; } return 0; }