Hi there
today i have found some source code for a simple injector and i want to share it with you![Smile](images/smilies/smile.gif)
translated to English ( I know It's nothing , but i want to do something )![Smile](images/smilies/smile.gif)
Code here
!!PLEASE DON'T RE-RELEASE IT IF YOU MADE SOMETHING USELESS!!
today i have found some source code for a simple injector and i want to share it with you
![Smile](images/smilies/smile.gif)
translated to English ( I know It's nothing , but i want to do something )
![Smile](images/smilies/smile.gif)
Code here
Code:
#RequireAdmin #include <GUIConstants.au3> GUICreate("Injector", 275, 100) GUISetBkColor(0xFFFFFF) GUICtrlCreateLabel("Process:", 10, 10, 50, 17) $I_ProcessName = GUICtrlCreateInput("", 65, 10, 200, 21) GUICtrlCreateLabel("DLL:", 10, 40, 50, 17) $I_DllPath = GUICtrlCreateInput("", 65, 40, 150, 21) $B_SearchDll = GUICtrlCreateButton("...", 225, 40, 40, 25) $R_Auto = GUICtrlCreateRadio("Auto Inject", 10, 75, 75, 17) GUICtrlSetState(-1, $GUI_CHECKED) $R_Man = GUICtrlCreateRadio("Manual", 130, 75, 55, 17) $B_Inject = GUICtrlCreateButton("Inject", 190, 70, 75, 25) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState() $Injected = False Do $Msg = GUIGetMsg() Switch $Msg Case $B_SearchDll GUICtrlSetData($I_DllPath, FileOpenDialog("Dll", @HomeDrive, "Dynamic Link Library (*.dll)", 3)) Case $R_Auto GUICtrlSetState($B_Inject, $GUI_DISABLE) Case $R_Man GUICtrlSetState($B_Inject, $GUI_ENABLE) Case $B_Inject _InjectDll(ProcessExists(GUICtrlRead($I_ProcessName)), GUICtrlRead($I_DllPath)) _Message(@error) EndSwitch If BitAND(GUICtrlRead($R_Auto), $GUI_CHECKED) And Not $Injected Then $ProcessId = ProcessExists(GUICtrlRead($I_ProcessName)) If $ProcessId > 0 Then _InjectDll($ProcessId, GUICtrlRead($I_DllPath)) _Message(@error) $Injected = True ;Exit EndIf EndIf Sleep(10) Until $Msg == $GUI_EVENT_CLOSE Func _Message($ErrorCode) If $ErrorCode <> 0 Then MsgBox(48, "Error", "There was an error!" & @CRLF & "Fehlercode: " & @error) Else MsgBox(64, "Info", "Injection successfully!") EndIf EndFunc Func _InjectDll($ProcessId, $DllPath) If $ProcessId == 0 Then Return SetError(1, "", False) If Not(FileExists($DllPath)) Then Return SetError(2, "", False) If Not(StringRight($DllPath, 4) == ".dll") Then Return SetError(3, "", False) $Kernel32 = DllOpen("kernel32.dll") If @error Then Return SetError(4, "", False) $DLL_Path = DllStructCreate("char[255]") DllCall($Kernel32, "DWORD", "GetFullPathNameA", "str", $DllPath, "DWORD", 255, "ptr", DllStructGetPtr($DLL_Path), "int", 0) If @error Then Return SetError(5, "", False) $hProcess = DllCall($Kernel32, "DWORD", "OpenProcess", "DWORD", 0x1F0FFF, "int", 0, "DWORD", $ProcessId) If @error Then Return SetError(6, "", False) $hModule = DllCall($Kernel32, "DWORD", "GetModuleHandleA", "str", "kernel32.dll") If @error Then Return SetError(7, "", False) $lpStartAddress = DllCall($Kernel32, "DWORD", "GetProcAddress", "DWORD", $hModule[0], "str", "LoadLibraryA") If @error Then Return SetError(8, "", False) $lpParameter = DllCall($Kernel32, "DWORD", "VirtualAllocEx", "int", $hProcess[0], "int", 0, "ULONG_PTR", DllStructGetSize($DLL_Path), "DWORD", 0x3000, "int", 4) If @error Then Return SetError(9, "", False) DllCall("kernel32.dll", "BOOL", "WriteProcessMemory", "int", $hProcess[0], "DWORD", $lpParameter[0], "str", DllStructGetData($DLL_Path, 1), "ULONG_PTR", DllStructGetSize($DLL_Path), "int", 0) If @error Then Return SetError(10, "", False) $hThread = DllCall($Kernel32, "int", "CreateRemoteThread", "DWORD", $hProcess[0], "int", 0, "int", 0, "DWORD", $lpStartAddress[0], "DWORD", $lpParameter[0], "int", 0, "int", 0) If @error Then Return SetError(11, "", False) DllCall($Kernel32, "BOOL", "CloseHandle", "DWORD", $hProcess[0]) DllClose($Kernel32) Return SetError(0, "", True) EndFunc