1 [TUTORIAL]Criando Injetor DLL Seg Mar 14, 2011 8:28 pm
FoemaPc
Membro
Eai galera da directon.tk vou trzer aqui para vcs um tutorial de criar injetor de dll !
FoemaPc ( eu , post )
Download parte 1 : [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Download parte 2 : [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Download parte 3 : [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Tutorial : Download parte 2 : [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Download parte 3 : [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Adicione os seguintes componentes:
2- GroupBox - Renomeia a 1 como "Configurações" e a segunda como "Injeção".
2- Labels - O primeiro escrito "Processo" e o Segundo "Dll".
3- Buttons - O primeiro escrito "Aguardar..."(Voce pode substituir por um RadioButton escrito Automatico) o segundo "Procurar" e o terceiro "Limpar Lista"
1- Listbox
1- Timer
1- OpenDialog
Tente deixar ele mais ou menos assim:
2- GroupBox - Renomeia a 1 como "Configurações" e a segunda como "Injeção".
2- Labels - O primeiro escrito "Processo" e o Segundo "Dll".
3- Buttons - O primeiro escrito "Aguardar..."(Voce pode substituir por um RadioButton escrito Automatico) o segundo "Procurar" e o terceiro "Limpar Lista"
1- Listbox
1- Timer
1- OpenDialog
Tente deixar ele mais ou menos assim:
De dois cliques no form e declare nas uses TlHelp32.
Declare a função acima de end. :
Código:
Declare a função acima de end. :
Código:
function GetPID(ProcessName: string): DWORD;
var MyHandle: THandle;
Struct: TProcessEntry32;
begin
Result:=0;
try
MyHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROC ESS, 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;
baixo da função declarada acima, declare :
Código:
Código:
function InjectDll(PIDWORD; 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;
Clique 2 vezes no botão "Procurar" e adicione o seguinte código:
Código:
Código:
Código:
De dois cliques no botão "Aguardar..." e adicione:
if not OpenDialog1.Execute then Exit;
Listbox1.Items.Add(ExtractFileName(OpenDialog1.Fil eName));
Código:
Timer1.Enabled:=True;
De dois cliques no Timer e adicione:
Obs: Apague o begin.
Código:
Obs: Apague o begin.
Código:
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, Opendialog1.Filename) 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);
o botão Limpar Lista Adicione o seguinte código:
Código:
Código:
Agora para configurar o Opendialog para abrir somente .dlls clique no openDialog e no canto esquerdo procure por Filter e clique em "..." La coloque:
ListBox1.Clear
Filenamell Filter: *.dll
Video Aula 1 :
Video Aula 2 :
Créditos :
ExFoemaPc ( eu , post )FoemaPc ( eu , post )