#1Dom 9 Jun - 20:22
[DELPHI]Criando um Anti-DLL Injection
Bom, ola pessoal, a tempos nao posto entao resolvi postar algo simples sobre criar uma dll que proibi que as pessoas injetem qualquer DLL.
Primeiro de tudo voce precisa saber que a funcao de injetar DLL se localiza nos 5 primeiros bytes da DLL "NTDLL.DLL".
Nossa resolucao e simples, trocaremos esses 5 primeiros bytes por uma funcao X que criaremos.Vamos la.
Primeiro de tudo nossa funcao principal:
Código PHP:
Agora faremos o que o programa fara quando tentarem injetar alguma DLL:
Código PHP:
Entre o Begin e o End coloque:
Código PHP:
Agora eu vou deixar o codigo inteiro que eu adicionei algumas coisas inuteis para ficar legal.
Código PHP:
Pronto, espero que tenham gostado,
Primeiro de tudo voce precisa saber que a funcao de injetar DLL se localiza nos 5 primeiros bytes da DLL "NTDLL.DLL".
Nossa resolucao e simples, trocaremos esses 5 primeiros bytes por uma funcao X que criaremos.Vamos la.
Primeiro de tudo nossa funcao principal:
Código PHP:
- Código:
procedure HookarFunc(NossaFunc : Pointer);
var
Pular : DWORD;
Funcao : Pointer;
begin
Funcao := GetProcAddress(GetModuleHandle('ntdll.dll'), 'LdrLoadDLL');//pegamos o handle da funcao LdrLoadDLL
Pular := DWORD(NossaFunc) - DWORD(Funcao) - 5;
VirtualProtect(Funcao, 5, PAGE_EXECUTE_READWRITE, nil);
Funcao := Pointer(Pular);
end;
Agora faremos o que o programa fara quando tentarem injetar alguma DLL:
Código PHP:
- Código:
procedure OnInject;
var
H : Thandle;
begin
ShowMessage('Impedimos a injecao');
end;
Entre o Begin e o End coloque:
Código PHP:
- Código:
HookFunc(@OnInject);
Agora eu vou deixar o codigo inteiro que eu adicionei algumas coisas inuteis para ficar legal.
Código PHP:
- Código:
library Project2;
{ Criado por AceStryer.SoldierCheats - Cheats for life }
uses
SysUtils,
Classes,
Windows,
Dialogs;
{$R *.res}
var
HH : THandle;
WBytes : Cardinal;
procedure HookarFunc(NossaFunc : Pointer);
var
Pular : DWORD;
Funcao : Pointer;
begin
Funcao := GetProcAddress(GetModuleHandle('ntdll.dll'), 'LdrLoadDLL');//pegamos o handle da funcao LdrLoadDLL
Pular := DWORD(NossaFunc) - DWORD(Funcao) - 5;
VirtualProtect(Funcao, 5, PAGE_EXECUTE_READWRITE, nil);
Funcao := Pointer(Pular);
end;
procedure OnInject;
var
H : Thandle;
begin
ShowMessage('Impedimos a injecao');
H := GetModuleHandle('ntdll.dll');
H := 0;
end;
Procedure InjetadoNoPrograma;
begin
ShowMessage('Agora nosso Anti-DLL esta funcionando.');
end;
begin
HH := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
HookarFunc(@OnInject);
CreateRemoteThread(HH, nil, 0, @InjetadoNoPrograma, @InjetadoNoPrograma, 0, WBytes);
end.
Pronto, espero que tenham gostado,