Code:
int Lua_DoString(char *luastr)
{
int res;
do
{
ReadProcessMemory( hProc, (LPVOID)(0x0133D5B0), (LPVOID)&res, sizeof(res), NULL );
}
while (res!=0);
DWORD strmem;
DWORD codemem;
char shellcode[]=
"\x8B\x15\xB0\x05\x27\x01\x8B\x92\x94\x2D\x00\x00"//MOV EDX,DWORD PTR DS:[12705B0], MOV EDX,DWORD PTR DS:[EDX+2D94]
"\xA1\x2C\x00\x00\x00\x8B\x00\x83\xC0\x08"//MOV EAX,DWORD PTR DS:[2C],MOV EAX,DWORD PTR DS:[EAX],ADD EAX,8
"\x89\x10\x6A\x00\xB8\x78\x56\x34\x12"//MOV DWORD PTR DS:[EAX],EDX,PUSH 0,MOV EAX,12345678 - luastr addr
"\x50\x50\xFF\x15\xB0\xF6\x7C\x00\x83\xC4\x0C"//PUSH EAX,PUSH EAX,CALL 007CF6B0,ADD ESP,0C
"\xC3";//retn
SuspendThread(mThread);
strmem=(DWORD)VirtualAllocEx(hProc,NULL,1024,MEM_COMMIT,PAGE_READWRITE);
if (strmem==NULL)
ShowMessage("Can't allocate memory");
WriteProcessMemory(hProc, (LPVOID)(strmem),(LPVOID)&luastr[0],100,NULL);
codemem=(DWORD)VirtualAllocEx(hProc,NULL,1024,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
if (codemem==NULL)
ShowMessage("Can't allocate memory");
WriteProcessMemory(hProc, (LPVOID)(codemem),&shellcode[0],sizeof(shellcode),NULL);
WriteProcessMemory(hProc, (LPVOID)(codemem+27),&strmem,4,NULL);
CreateRemoteThread(hProc,NULL,0,(PTHREAD_START_ROUTINE)codemem,NULL,0,NULL);
ResumeThread(mThread);
if(!VirtualFreeEx(hProc,(LPVOID)strmem,NULL,MEM_RELEASE)) ShowMessage ("Can't free memory");
if(!VirtualFreeEx(hProc,(LPVOID)codemem,NULL,MEM_RELEASE)) ShowMessage ("Can't free memory");
return 0;
}
Does anyone have any idea why it crashes wow (Err 132)?