..::[Fixed][==[By: Matheus]==] Como criar um injetor de dll [==[By: Matheus]==][Fixed]::..

    Matheus
    Matheus
    Admin
    Admin

    Mensagens : 51
    KZ Cash : 110
    Data de inscrição : 18/02/2012
    Idade : 32
    Localização : De boa na lagoa

    ..::[Fixed][==[By: Matheus]==] Como criar um injetor de dll [==[By: Matheus]==][Fixed]::.. Empty ..::[Fixed][==[By: Matheus]==] Como criar um injetor de dll [==[By: Matheus]==][Fixed]::..

    Mensagem por Matheus em Seg Fev 27, 2012 4:12 pm

    Olá, Neste tópico irei mostrar como criar um injetor de dll

    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)


    [Você precisa estar registrado e conectado para ver 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.


    Irá ficar assim :


    [Você precisa estar registrado e conectado para ver esta imagem.]

    Depois de ter organizado tudo vá na pagina de Codes essa aqui: ->


    [Você precisa estar registrado e conectado para ver 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:


    [Você precisa estar registrado e conectado para ver esta imagem.]

    Depois Disso, Clique 2 Vezes em cada item, quando clicar 2x no OpenDialog ele abrira uma janela apenas feche.:


    [Você precisa estar registrado e conectado para ver 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.


    Créditos:

    Matheus
    Vini Quinália (Pela incentivação)

      Tópicos similares

      -

      Data/hora atual: Dom Jan 19, 2020 6:51 pm