Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×

Criando DLL com Forms e Movendo Memória


Ryokusei
 Compartilhar

Posts Recomendados

Neste artigo irei ensinar a utilizar Forms em uma DLL.

O projeto final será criar uma DLL que leia e escreva um valor em algum endereço da memória, e só seja executada se for injetada em um processo.

 

[DOWN]

É necessário se cadastrar para acessar o conteúdo.
[/DOWN]

 

[sENHA]

É necessário se cadastrar para acessar o conteúdo.
[/sENHA]

 

OBS: Para ampliar uma imagem, clique sobre ela.

 

1 - Inicie o Delphi, vá no menu "File/New/Other".

 

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

 

2 - Selecione "DLL Wizard".

 

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

 

3 - Declare as units "Windows" e "Forms". Abaixo de "{$R *.res}" e acima do "begin end." declare os seguinte procedimento:

 

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

 

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

 

4 - Entre o "begin end." insira o seguinte algorítmo:

 

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

 

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

 

5 - Vá no menu "File/New/Form".

 

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

 

6 - No novo Form, adicione os seguintes componentes com as seguintes propriedades:

 

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

 

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

 

7 - Salve o projeto. Voltando à unit da DLL, verifique se a unit do Form criado está declarada.

 

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

 

8 - Volte ao Form, e dê dois cliques no botão "Ler" para ir ao evento OnClick dele. Insira este algoritmo no evento:

 

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

 

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

 

9 - Dê dois cliques botão "Escrever" para ir ao evento OnClick dele. Insira este algoritmo no evento:

 

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

 

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

 

10 - Compile e seja feliz. Para testar a DLL use o Cheat Engine para injetá-la e pegar os endereços que quiser.

 

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

 

Dúvidas Frequentes:

 

P: Quando eu fecho o jogo com a DLL injetada dá erro, por que?

R: Só ocorrerá o erro se você não fechar o Form antes de finalizar o jogo, porque os Forms do Delphi não são criados por API e muita coisa deles fica ocupando espaço na memória e na finalização do jogo esta memória não é liberada (Form1.Free;), portanto há esse erro, mas não é importante.

 

P: Por que foi criada uma thread para iniciar a execução do Form?

R: Se a thread não fosse criada o Form seria executado na Main Thread do aplicativo, deixando assim o jogo "travado".

 

P: Por que não utilizou o procedimento MoveMemory?

R: Fazendo o algorítmo em assembly fica mais rápido, pois senão seria necessário chamar uma função, e isso é mais lento. No caso de um aplicativo como esse não faz diferença.

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

huummmm... isso seria para traners não ?

Sim olhe a ultima imagem

 

@topic muito bom eu adorei lembrando em geral quando for uzar feche primeiro o jogo e nao a dll

 

Nao so o turtorial vai ajudar tbm como colocar um form em uma dll que e simples e muita gente nao sabe

 

Vlw

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...

Bom tuto, só arrume o codigo na parte do "escrever"

continue fazendo tuto, pois tem gente que quer aprender, tipo aquelas pessoas que não quer tudo na mão, acho que vc entende...

Meus brinquedos em WinAPI:

Calculador

MemoryScanner

Faça parte também da DarkProgramming Team!

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.