PHP Code:
ONAUTOITEXITREGISTER("OnExit")
$HWND=WINGETHANDLE("Guild Wars 2")
IF $HWND=="" THEN
MSGBOX(16,"Error","Guildwars2 is not running!")
EXIT
ENDIF
FILEINSTALL("..\Release\autolooter.dll",@TEMPDIR&"\autolooter.dll",1)
GLOBAL CONST $DLLPATH=@TEMPDIR&"\autolooter.dll"
GLOBAL CONST $DLLNAME="autolooter.dll"
IF NOT FILEEXISTS($DLLPATH)THEN
MSGBOX(16,"Error",$DLLPATH&" Not found!")
EXIT
ENDIF
$HMOD=GETMODULE($HWND,$DLLNAME)
IF $HMOD=0 THEN
$IDLL=INJECTMODULE($HWND,$DLLPATH)
IF NOT @ERROR THEN
TRAYTIP("","Injection Successfull",1)
ELSE
MSGBOX(16,"Error in DLL Injection","Couldn't inject dll to "&$HWND&@CRLF&"Code: "&@ERROR)
ENDIF
ELSE
TRAYTIP("",$DLLNAME&" was already injected: "&$HMOD,1)
ENDIF
EXIT
FUNC GETMODULE($HWND,$MODULENAME)
LOCAL CONST $MODULEENTRY32STRUCT=DLLSTRUCTCREATE("dword dwsize;"&"dword th32ModuleID;"&"dword th32ProcessId;"&"dword GlblcntUsage;"&"dword ProccntUsage;"&"dword modBaseAddr;"&"dword modBaseSize;"&"dword hModule;"&"char szModule[256];"&"char szExePath[260];")
LOCAL $SNAPSHOT=DLLCALL("Kernel32.dll","hwnd","CreateToolhelp32Snapshot","dword",8,"dword",WINGETPROCESS($HWND))
DLLSTRUCTSETDATA($MODULEENTRY32STRUCT,"dwsize",DLLSTRUCTGETSIZE($MODULEENTRY32STRUCT))
LOCAL $STATE=DLLCALL("Kernel32.dll","int","Module32First","hwnd",$SNAPSHOT[0],"ptr",DLLSTRUCTGETPTR($MODULEENTRY32STRUCT))
DO
$READMODULE=DLLSTRUCTGETDATA($MODULEENTRY32STRUCT,"szModule")
IF $READMODULE==$MODULENAME THEN RETURN "0x"&(HEX(DLLSTRUCTGETDATA($MODULEENTRY32STRUCT,"modBaseAddr")))
$STATE=DLLCALL("Kernel32.dll","int","Module32Next","hwnd",$SNAPSHOT[0],"ptr",DLLSTRUCTGETPTR($MODULEENTRY32STRUCT))
SLEEP(1)
UNTIL NOT $STATE[0]
DLLCALL("Kernel32.dll","int","CloseHandle","int",$SNAPSHOT[0])
RETURN 0
ENDFUNC
FUNC INJECTMODULE($HWND,$DLLPATH)
IF ISHWND($HWND)=0 THEN
SETERROR(-1)
RETURN FALSE
ELSEIF STRINGLEN($DLLPATH)<=4 OR STRINGRIGHT($DLLPATH,4)<>".dll" THEN
SETERROR(-2)
RETURN FALSE
ENDIF
LOCAL $PID,$PHANDLE,$PLIBREMOTE,$MODHANDLE,$LOADLIBRARYA,$HTHREAD
LOCAL $KERNEL32=DLLOPEN("kernel32.dll")
IF $KERNEL32=-1 THEN
EXIT
ENDIF
$PID=DLLCALL("user32.dll","int","GetWindowThreadProcessId","hwnd",$HWND,"int*",0)
IF ISARRAY($PID)THEN
$PID=$PID[2]
ELSE
SETERROR(-3)
RETURN FALSE
ENDIF
$PHANDLE=DLLCALL($KERNEL32,"int","OpenProcess","int",2035711,"int",0,"int",$PID)
IF ISARRAY($PHANDLE)AND $PHANDLE[0]>0 THEN
$PHANDLE=$PHANDLE[0]
ELSE
SETERROR(-4)
RETURN FALSE
ENDIF
$PLIBREMOTE=DLLCALL($KERNEL32,"int","VirtualAllocEx","int",$PHANDLE,"short",0,"int",4096,"int",4096,"int",4)
IF ISARRAY($PLIBREMOTE)THEN
IF $PLIBREMOTE[0]>0 THEN
$PLIBREMOTE=$PLIBREMOTE[0]
ELSE
SETERROR(-5)
RETURN FALSE
ENDIF
ELSE
SETERROR(-6)
RETURN FALSE
ENDIF
FOR $I=0 TO STRINGLEN($DLLPATH)
$RET=DLLCALL("kernel32.dll","int","WriteProcessMemory","int",$PHANDLE,"int",$PLIBREMOTE+$I,"int*",ASC(STRINGMID($DLLPATH,$I+1,1)),"int",1,"int",0)
IF ISARRAY($RET)THEN
IF $RET[0]=0 THEN
SETERROR(-7)
RETURN FALSE
ENDIF
ELSE
SETERROR(-8)
RETURN FALSE
ENDIF
NEXT
$MODHANDLE=DLLCALL($KERNEL32,"long","GetModuleHandle","str","kernel32.dll")
IF ISARRAY($MODHANDLE)THEN
IF $MODHANDLE[0]>0 THEN
$MODHANDLE=$MODHANDLE[0]
ELSE
SETERROR(-9)
RETURN FALSE
ENDIF
ELSE
SETERROR(-10)
RETURN FALSE
ENDIF
$LOADLIBRARYA=DLLCALL($KERNEL32,"long","GetProcAddress","long",$MODHANDLE,"str","LoadLibraryA")
IF ISARRAY($LOADLIBRARYA)THEN
IF $LOADLIBRARYA[0]>0 THEN
$LOADLIBRARYA=$LOADLIBRARYA[0]
ELSE
SETERROR(-11)
RETURN FALSE
ENDIF
ELSE
SETERROR(-12)
RETURN FALSE
ENDIF
$HTHREAD=DLLCALL($KERNEL32,"int","CreateRemoteThread","int",$PHANDLE,"int",0,"int",0,"long",$LOADLIBRARYA,"long",$PLIBREMOTE,"int",0,"int",0)
IF ISARRAY($HTHREAD)THEN
IF $HTHREAD[0]>0 THEN
$HTHREAD=$HTHREAD[0]
ELSE
SETERROR(-13)
RETURN FALSE
ENDIF
ELSE
SETERROR(-14)
RETURN FALSE
ENDIF
DLLCALL($KERNEL32,"int","VirtualFreeEx","int",$PHANDLE,"int",$PLIBREMOTE,"int",4096,"int",32768)
DLLCALL($KERNEL32,"int","CloseHandle","int",$HTHREAD)
DLLCALL($KERNEL32,"int","CloseHandle","int",$PHANDLE)
DLLCLOSE($KERNEL32)
RETURN TRUE
ENDFUNC