Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[DELPHI]Criando um Anti-DLL Injection


AceStryker
 Compartilhar

Posts Recomendados

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:

É necessário se cadastrar para acessar o conteúdo.

 

Agora faremos o que o programa fara quando tentarem injetar alguma DLL:

É necessário se cadastrar para acessar o conteúdo.

 

Entre o Begin e o End coloque:

É necessário se cadastrar para acessar o conteúdo.

 

Agora eu vou deixar o codigo inteiro que eu adicionei algumas coisas inuteis para ficar legal.

É necessário se cadastrar para acessar o conteúdo.

 

Pronto, espero que tenham gostado,

  • Curtir 5
Link para o comentário
Compartilhar em outros sites

Fiz um código que faz a mesma coisa, mais simples, já que o seu não dá opção de escolha do nome da dll a evitar o inject.

então é melhor fazer assim logo:

É necessário se cadastrar para acessar o conteúdo.

 

Jogo dos 7 erros

1° vc tem que usar uma var pra receber o oldProtect na VirtualProtect, se não ela não funfa.

 

2° o nome da dll tem que estar correto maiusculo e minusculo, Correto:LdrLoadDll errado:LdrLoadDLL.

 

3° vc não precisa usar as users Dialogs nem Classes só pra mostrar uma

mensagem com showmessage,iso almenta em uns 200 kb a dll,

vc pode usar messagebox(0,'seu texto','',0); que da na mesma.

 

4° vc não precisa pegar o handle HH := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);

para criar uma thread CreateRemoteThread(HH, nil, 0, @InjetadoNoPrograma, @InjetadoNoPrograma, 0, WBytes);

porque é uma dll, ou seja, pra que criar remotamente se seu code já tah lá dentro?

solução: CreateThread(nil, 0, @InjetadoNoPrograma, nil, 0, WBytes);

 

5° vc botou o pointer da propria procedure no lugar onde vai o pointer dos parametros

 

6° H := GetModuleHandle('ntdll.dll');

H := 0;

pra que diabo vc pegou o handle e o zerou logo depois sem nem usar?

 

7° finalmente, não copie o código dos outros e edite colocando seu nome. :pensativo:

 

 

mals aê, mas se a finalidade desse forum é o aprendizado, então vamos aprender direito aqui. :fuma:

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

Belo tópico, impedir que uma Dll seja injetada é uma função muito útil para alguns programas, obg ai @Worgamel por algumas implementações muito importantes que você fez.

 

@nkillaforce Já que estão errados (o que não estão, pois testei aqui e funcionou perfeitamente), porque você não deixa de falar e posta o código correto pra gente ?

Link para o comentário
Compartilhar em outros sites

  • 5 semanas atrás...

@nkillaforce Já que estão errados (o que não estão, pois testei aqui e funcionou perfeitamente), porque você não deixa de falar e posta o código correto pra gente ?

 

 

Mano , e logico que vai funciona , o que a DLL faz ae no caso , ela apenas exibe uma mensagem de Funcionando Perfeitamente.

 

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;

 

 

Quer testar mesmo se funciona ?

 

Cria uma FORM e poem ali na procedure , e veja se vai impedi a injecao mesmo , e impedir de que a FORM seja criada.

 

Ja que e uma anti dll inject , a FORM ao ser posta , nao pode ser aberta , caso nao tenha os parametros pre-definidos.

 

Depois posto um codigo que funcione.

 

Esse codigo esta totalmente errado.

 

Aprenda a testar primeiro , antes de falar merda.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.