Olá, Neste tópico irei mostrar como criar um injetor de dll
Programa usado : Delphi 7 (Logo disponibilizaremos para download aqui no fórum)
Programa usado : Delphi 7 (Logo disponibilizaremos para download aqui no fórum)
Primeiro abra o seu Delphi 7
Depois na form adicione os seguintes itens :
2 Edits (Palleta: Standard) , 2 Buttons (Palleta: Standard) ,2 Labels (Palleta: Standard) , 1 Timer (Palleta: System), 1 Open dialog (Palleta: Diallogs)
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Depois Renomeie os items assim:
Label1 = Processo
Edit1 = (apague deixe nada)
Label2 = DLL
Edit2= (apague deixe nada)
Button1 = Carregar
Button2 Aguardar Processo
Obs: para mudar o nome clique no item vá em object inpector e em caption e altere o nome.
Label1 = Processo
Edit1 = (apague deixe nada)
Label2 = DLL
Edit2= (apague deixe nada)
Button1 = Carregar
Button2 Aguardar Processo
Obs: para mudar o nome clique no item vá em object inpector e em caption e altere o nome.
Irá ficar assim :
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Depois de ter organizado tudo vá na pagina de Codes essa aqui: ->
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Apague Tudo, e cole esse Code:
- Código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, TlHelp32;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
OpenDialog1: TOpenDialog;
Timer1: TTimer;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetPID(ProcessName: string): DWORD;
var MyHandle: THandle;
Struct: TProcessEntry32;
begin
Result:=0;
try
MyHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize:=Sizeof(TProcessEntry32);
if Process32First(MyHandle, Struct) then
if Struct.szExeFile=ProcessName then
begin
Result:=Struct.th32ProcessID;
Exit;
end;
while Process32Next(MyHandle, Struct) do
if Struct.szExeFile=ProcessName then
begin
Result:=Struct.th32ProcessID;
Exit;
end;
except on exception do
Exit;
end;
end;
function InjectDll(PID:DWORD; sDll:string):Boolean;
var
hLib: Pointer;
hThread: THandle;
pMod: Pointer;
hOpen: THandle;
dWritten: Cardinal;
ThreadID: Cardinal;
begin
Result := FALSE;
hOpen := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if hOpen <> INVALID_HANDLE_VALUE then
begin
hLib := GetProcAddress(GetModuleHandle(PChar('kernel32.dll')), PChar('LoadLibraryA'));
pMod := VirtualAllocEx(hOpen, nil, Length(sDll) + 1, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if WriteProcessMemory(hOpen, pMod, @sDll[1], Length(sDll), dWritten) then
Result := TRUE;
hThread := CreateRemoteThread(hOpen, nil, 0, hLib, pMod, 0, ThreadID);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hOpen);
CloseHandle(hThread);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not OpenDialog1.Execute then Exit;
Edit2.Text:=OpenDialog1.FileName;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var PID: DWORD;
begin
Timer1.Enabled:=False;
PID:=GetPID(Edit1.Text);
if PID=0 then
begin
Timer1.Enabled:=True;
Exit;
end;
Timer1.Enabled:=False;
if InjectDll(PID, Edit2.Text) then
MessageBoxA(Handle, 'DLL injetada com sucesso!', 'DLL Injector', MB_ICONEXCLAMATION+MB_SYSTEMMODAL)
else
MessageBoxA(Handle, 'Erro ao injetar DLL.', 'DLL Injector', MB_ICONERROR+MB_SYSTEMMODAL);
end;
end.
Depois disso Clique em Run um botão Verde,o project ficara assim:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Depois Disso, Clique 2 Vezes em cada item, quando clicar 2x no OpenDialog ele abrira uma janela apenas feche.:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Depois Salve o projeto todo em uma pasta separada.
File
Save All.
Depois que Salvar Aperte F9 para Compilar e pronto,
feche o delphi vá até a pasta onde salvou e lá estara seu injector.
File
Save All.
Depois que Salvar Aperte F9 para Compilar e pronto,
feche o delphi vá até a pasta onde salvou e lá estara seu injector.
Créditos:
Matheus
Vini Quinália (Pela incentivação)
Matheus
Vini Quinália (Pela incentivação)