;whole idea to use create process as suspended is by DarkDragon ;thanks for everyone who have helped with this DisableDebugger ;DISABLES DEBUGGER! This is needed. Procedure RemoteThread() MessageRequester("Success", "Injection successed!") EndProcedure Procedure InjectCode(Process.s, *lpCodeToInject) CreateProcess_(0,Process.s,0,0,0,#CREATE_SUSPENDED,0,0,@sinfo.STARTUPINFO,@pinfo.PROCESS_INFORMATION) dwPID = pinfo\dwProcessId hProcess = pinfo\hProcess dwWritten.l = #Null : pbModule.l = GetModuleHandle_(0) : DwSize.l = PeekL(pbmodule+PeekW(pbmodule+$3c)+$50) VirtualFreeEx_(hProcess, pbModule, 0, #MEM_RELEASE) lpBuffer.l = VirtualAllocEx_(hProcess, pbModule, dwSize, #MEM_COMMIT | #MEM_RESERVE, #PAGE_EXECUTE_READWRITE) If lpBuffer = #Null : While ResumeThread_(pinfo\hThread)>1 : Wend : CloseHandle_(hProcess) : ProcedureReturn #False : EndIf If WriteProcessMemory_(hProcess, lpBuffer, pbModule, dwSize, dwWritten) = 0 While ResumeThread_(pinfo\hThread)>1 : Wend : CloseHandle_(hProcess) ProcedureReturn #False EndIf hThread.l = CreateRemoteThread_(hProcess, #Null, 0, *lpCodeToInject, pbModule, #Null, #Null) If hThread=#Null : CloseHandle_(hProcess) : ProcedureReturn #False : EndIf While ResumeThread_(pinfo\hThread)>1 : Wend CloseHandle_(hThread) ProcedureReturn #True EndProcedure If InjectCode("dreamweaver.exe", @RemoteThread()) = #False MessageRequester("Error!", "Injection failed!") EndIf End ; IDE Options = PureBasic v3.94 (Windows - x86) ; CursorPosition = 26 ; Folding = - ; Executable = ..\..\..\Program Files\SecondLife\inject.exe