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.

[Tutorial]Criar um Injector de DLL Funcional para Grand Chase


Posts Recomendados

1- Criando nova aplicação e editando a aparencia

 

-----------------------------------------------------------------------------

 

1.1 - Criando a Nova Aplicação:

 

Va¡ em File > New > Application, ira abrir um novo form e então comessaremos nosso projeto de la. (Se você tiver acabado de abrir o delphi nem precisa ^^)

 

1.2 - Componentes necessários:

 

Imagem de onde fica cada componente:

17888086.png

 

Plaheta System:

97866802.png

 

1.3 - Customizando aparencia e renomeando nomes:

 

Organize os componentes de acordo com esta imagem (Isto é opicional, você pode fazer do jeito que quiser) e renomei eles pelo Caption, como mostra a imagem abaixo:

80055231.png

 

 

1.4 - Mudando nome do Programa:

 

 

No Delphi va¡ em Project > Options, como mostra a foto abaixo

93509595.png

 

Agora ira abrir uma janela, vá na aba Application e mude o nome do programa la, como mostra a imagem abaixo:

79526391.png

 

Pronto agora vamos a parte dos códigos:(Parte Mais Chata!!!)

 

2 - Adicionando os códigos e Compilando.

 

2.1 - Adicionando as funções:

 

Obs: adicione as funções do lado de fora de qual quer procedure:

 

Função:

CODE

function ValorAsc(Letra: String): Byte;

 

begin

 

if Length(letra) > 0 then ValorAsc := Ord(Letra[1]) else ValorAsc := 0;

 

end;

 

Função:

 

CODE

function crypt(Texto: String): String;

 

var

 

Cont, Cod: Integer;

 

Retorna: String;

 

begin

 

for Cont := 1 to Length(Texto) do begin

 

Cod := ValorAsc(Copy(Texto, Cont, 1));

 

Retorna := Retorna + Chr(Cod + 57(*valor a ser adicionado - pode ser modificado*));

 

end;

 

Crypt := Retorna;

 

end;

 

Imagem de como vai ficar:60848134.png

 

Função:

 

CODE

function Descript(Texto: String): String;

 

var

 

Cont, Cod: integer;

 

Retorna: String;

 

begin

 

for Cont := 1 to Length(Texto) do begin

 

Cod := ValorAsc(Copy(Texto, Cont, 1));

 

Retorna := Retorna + Chr(Cod - 57);

 

end;

 

Descript := Retorna;

 

end;

 

Imagem de como vai ficar:

85287400.png

 

Função:

 

CODE

function processExists(exeFileName: string): Boolean;

 

var

 

ContinueLoop: BOOL;

 

FSnapshotHandle: THandle;

 

FProcessEntry32: TProcessEntry32;

 

begin

 

FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 

FProcessEntry32.dwSize := SizeOf(FProcessEntry32);

 

ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

 

Result := False;

 

while Integer(ContinueLoop) <> 0 do

 

begin

 

if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =

 

UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =

 

UpperCase(ExeFileName))) then

 

begin

 

Result := True;

 

end;

 

ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);

 

end;

 

CloseHandle(FSnapshotHandle);

 

end;

 

Imagem de como vai ficar:

66446471.png

 

Função:

 

CODE

function CMKGETID(ExeFileName: string; var ProcessId: dword) :boolean; // A função

 

var

 

ContinueLoop: BOOL;

 

FSnapshotHandle: THandle;

 

FProcessEntry32: TProcessEntry32;

 

begin

 

result := false;

 

FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 

FProcessEntry32.dwSize := Sizeof(FProcessEntry32);

 

ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

 

while integer(ContinueLoop) <> 0 do begin

 

if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0)

 

or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then begin

 

ProcessId:= FProcessEntry32.th32ProcessID;

 

result := true;

 

break;

 

end;

 

ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);

 

 

 

end;

 

CloseHandle(FSnapshotHandle);

 

end;

 

Imagem de como vai ficar:

47560449.png

 

2.2 - Adicionando códigos no Timer, Button e CheckBox

 

Timer, de 2 clicks em cima do timer e coloque o seguinte código:

CODE

var

 

Pid : dword;

 

ker41280dll : String;

 

pker41280dll : Pointer;

 

ker41280prcess,bw41280 : Cardinal;

 

hRemote_Thread : Cardinal;

 

begin

 

ker41280dll := ExtractFilePath(Application.Exename)+Edit1.Text;

 

if ProcessExists('main.exe') then begin

 

if FileExists(ker41280dll) then begin

 

cmkGetID('main.exe',pid);

 

ker41280prcess:= OpenProcess(PROCESS_ALL_ACCESS, false, PID);

 

pker41280dll := VirtualAllocEx(ker41280prcess,nil, length(ker41280dll), MEM_COMMIT,PAGE_EXECUTE_READWRITE);

 

WriteProcessMemory(ker41280prcess, pker41280dll, PChar(ker41280dll), length(ker41280dll), bw41280);

 

CreateRemoteThread(ker41280prcess, nil, 0, GetProcAddress(GetModuleHandle('kernel32.dll'),'LoadLibraryA'), pker41280dll, 0, hRemote_Thread);

 

CloseHandle(ker41280prcess);

 

Timer1.Enabled:=False;

 

ShowMessage('DLL Injetada Com Sucesso');

 

end

 

else begin

 

Timer1.Enabled:=False;

 

end;

 

end;

 

end;

 

Imagem de como vai ficar:

81084813.png

 

e mude a proriedade Enabled do timer para Flase

e mude a propriedade Interval para 300

 

Button, de 2 clicks em cima do button e coloque o seguinte código:

 

Entre o begin e o ende coloque o código:

CODE

Timer1.Enabled:=True;

 

Imagem de como vai ficar:

86476344.png

 

CheckBox, de 2 clicks em cima do checkbox e coloque o seguinte código:

CODE

 

begin

 

if CheckBox1.Checked = False then begin

 

Timer1.Enabled:=False;

 

Edit1.Enabled:=True;

 

end

 

else begin

 

Timer1.Enabled:=True;

 

Edit1.enabled:=false;

 

end;

 

end;

 

Imagem de como vai ficar:

31333179.png

 

Declarando TLHelp32 na uses:

 

no começo dos códigos la em cima terá algo assim:

 

CODE

 

uses

 

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 

Dialogs, ExtCtrls, StdCtrls;

 

 

add TLHelp32 nele, e ficara assim:

 

CODE

 

uses

 

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 

Dialogs, ExtCtrls, StdCtrls, tlhelp32;

 

Compilando:

1º salve seu projeto, depois aperte Crtl F9 que irá compilar, e então o seu programa (.exe) aparecerá na pasta do projeto.

 

Créditos: GamerZBrasil e My

 

Ajudei, Gostou? Agradeça se Puder!

 

 

502rsrs.png

Link para o comentário
Compartilhar em outros sites

Tópico muito bom,

mas faltou o download do delphi né?

 

E a área, na minha opinião está errada.

A área certa seria programação > delphi.

 

A iniciativa é boa, mas para uma coisa tão complexa está mau explicado...

 

Você deve mostrar: "mas o que é função?" "onde coloco essa função?"

 

Precisa melhorar muito ainda, mas vlw,

 

Xté~

Link para o comentário
Compartilhar em outros sites

Cara é melhor vc fazer uma video aula !

E a área, na minha opinião está errada.

A área certa seria programação > delphi.

 

Sim mano como pode ser aki e la mais aki ele fez um tutorial para grand chase!

 

Entao esta na Area certa!

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.