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.

Como criar uma dll, e un injetor Sasuke Nao fexe, Topico Nao existe!


yan321y321
 Compartilhar

Posts Recomendados

Holá Galera...

 

Pelo que tenho visto por aí exitem muitos tutoriais ensinando como fazer um Injetor de DLL.

 

Mas tambem vi que todos aqueles tutoriais possuem erros, ou não injetam em jogos, ou são muito complicados para os iniciantes em delphi entenderem...

 

Pois é..

 

Eu to Aqui denovo e irei ensinar Passo a Passo como Fazer Um Injetor de DLL que injete em Jogos e que Não possui Erros...

 

Chega de Conversa.. Vamo lá

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

 

1° ~> Crie Um novo projeto em DELPHI

 

2° ~> Adicione os Componente A seguir:

 

2 Label's

2 Edit's

1 Botão

 

Arrume + ou - Desta Maneira:

 

imagem3uyb.png

 

Eu Alterei os CAPTIONS:

 

label1 = Processo

label2 = DLL

Button1 = Injetar

 

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

 

Muito Bem Se voce chegou Até aqui sem problemas irá conseguir o resto..

Pois é só copiar e colar..

 

-- CÓDIGOS --

 

3° ~> Na parte USES Adicione -- Tlhelp32 -- ( sem os -- )

 

4° ~> Abaixo de

 

Código:

 

implementation

 

{$R *.dfm}

 

Adicione as Funções :

 

1° Função

 

Código:

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

function ValorAsc(Letra: String): Byte;

begin

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

end;

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;

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;

 

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;-------------------------------------------------------------------------

 

De um enter e adicione

 

2° Função

 

Código:

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

function GetID(Const ExeFileName: string; var ProcessId: DWORD): boolean;

var

i:integer;

ContinueLoop: BOOL;

FSnapshotHandle: THandle;

FProcessEntry32: TProcessEntry32;

begin

i:=0;

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

if i = 1 then begin

ProcessId:= FProcessEntry32.th32ProcessID;

result := true;

break;

end;

i:=i+1;

end;

ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);

end;

CloseHandle(FSnapshotHandle);

end;--------------------------------------------------------------------------

 

AE --

 

Agora clike duas vese no Botão e adicione o código:

 

Código:

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

var

Pid : dword;

ker41280dll : String;

pker41280dll : Pointer;

ker41280prcess,bw41280 : Cardinal;

hRemote_Thread : Cardinal;

begin

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

if ProcessExists(PChar(Edit1.Text)) then begin

if FileExists(ker41280dll) then begin

GetID(PChar(Edit1.Text),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);

ShowMessage('DLL Injetada Com Sucesso');

end;

end;

end;--------------------------------------------------------------------------

 

OK

 

Agora seu Injetor está Criado...

Altere o Visual ao seu Gosto

e crie uma DLL para vc usa-lo...

 

Só uma coisinha..

 

Este Injetor Só irá injetar DLL no Jogo GUNBOUND..Pois fiz ele apenas para pegar o 2º processo do GunBound,e gunbound é o unico jogo que conheço que precisa de 2 processo para funcionar...

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

Mas eu sou Bonzinho e vou passa o código que fara com que voce injete a DLL em qualquer jogo.. (Menos Gunbound) e entao isso enclui o Combat Arms!!!

 

No lugar da 2ª Função Adicione

 

Código:

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

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;

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

-- não tente colocar as Duas funções no injetor senão vai dar problema --

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

Depois de Fazer todo esse Processo de Criação, Vamos para a Parte de salvar e Compilar o Projeto...

 

Muitos Membro ja me Perguntaram como fazer isso então aí vai o Tuto..

 

Apos ter Feito TUDO siga esta Foto para Salvar seu Projeto..

 

imagem23m.jpg

 

O Programa irá pedir para vc Salvar dois Arquivos... ( salve os dois na mesma Pasta )

 

Logo Apos ter Salvado vc tem que Compilar seu Projeto para o arquivo exe ser criado.. ( Project1.exe )

 

Siga esta Imagem para Compilar.

 

imagem2l.jpg

 

Ae..

 

Agora seu Trainer ou qualquer outro programa foi Criado...

O arquivo exe será criado Dentro da Pasta onde voce Salvou o Projeto anteriormente..

 

 

 

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

 

Tudo Pronto GALERA.. Aproveitem

 

* Creditos *

 

*~~MRs.Romanha~~ *

E yan321y321

 

 

Agora ensinarei como criar um Dll Combat arms!!!

 

Primero Criando uma DLL para Combat Arms

 

 

 

Esta

é uma outra dúvida bastante freqüente que chega a nós. "Como posso usar

uma DLL ?", "Como posso criar uma DLL ?", "Ei, moço! Pra quê serve uma

DLL ?"

 

 

 

Pois bem, DLL ou Dynamic Link Libraries, permitem

que um conjunto de funções desenvolvidas em uma linguagem possam ser

utilizadas em programas desenvolvidos em outras linguagens.

 

 

Você

pode, por exemplo, criar uma DLL em Delphi com um conjunto de funções e

utilizá-la em aplicativos desenvolvidos em C++ ou Visual Basic, por

exemplo. Agora, vamos começar criando uma DLL:

 

 

Selecione o

item New do Menu File, para exibir a caixa de diálogo New Items. Agora,

selecione o item DLL e clique em OK, para gerar o código principal da

DLL, que se apresenta a seguir:Código:

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

library Project1;

 

{

Important note about DLL memory management: ShareMem must be the first

unit in your library's USES clause AND your project's (select

Project-View Source) USES clause if your DLL exports any procedures or

functions that pass strings as parameters or function results. This

applies to all strings passed to and from your DLL--even those that are

nested in records and classes. ShareMem is the interface unit to the

BORLNDMM.DLL shared memory manager, which must be deployed along with

your DLL. To avoid using BORLNDMM.DLL, pass string information using

PChar or ShortString parameters. }

 

uses

SysUtils, Classes;

begin

end.--------------------------------------------------------------------------

 

Em

muitas situações, inclusive esta, o arquivo DELPHIMM.DLL deve ser

distribuído junto à sua aplicação. Uma outra observação muito

importante, para que você possa escrever suas DLLs, você deve ter

conhecimentos na Linguagem Object Pascal.

 

 

Vamos continuar

criando nossa DLL, pois é ela que iremos usar mais para frente. Apenas

como exemplificação, vamos criar uma função que receba como parâmetros

dois números reais e retorne o maior deles.

Código:

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

Function Max (a b : double ) : double ; Export ; stdcall ;

begin

If ( a > B ) then Result :=a else Result := b ;

end

 

;-------------------------------------------------------

 

Export = indica que a função poderá ser chamada por outros aplicativos.

 

Stdcall = permite que aplicativos desenvolvidos em outras linguagens façam chamadas à função.

 

 

Após serem feitas estas alterações e salvar o projeto com o nome MAXDLL, nossa DLL ficará assim:

 

library Project1;

 

{

Important note about DLL memory management: ShareMem must be the first

unit in your library's USES clause AND your project's (select

Project-View Source) USES clause if your DLL exports any procedures or

functions that pass strings as parameters or function results. This

applies to all strings passed to and from your DLL--even those that are

nested in records and classes. ShareMem is the interface unit to the

BORLNDMM.DLL shared memory manager, which must be deployed along with

your DLL. To avoid using BORLNDMM.DLL, pass string information using

PChar or ShortString parameters. }

 

uses

SysUtils,

Classes;

function Max(a, b : double):double:expert:stdcall:

begin

if ( a > B ) then result:= a else result := b;

end;

 

exports

Max index 1;

begin

end.

 

 

Você pode compilar uma DLL, assim como a um projeto no Delphi, e distribuir livremente.

 

 

PS: Você não pode executar uma DLL pelo Delphi, através do RUN do Menu Run, pois não se trata de uma aplicação.

 

 

Mais

à frente, você perceberá que uma DLL pode usar formulários e objetos

definidos em outras unidades. Iremos, agora, chamar uma DLL, a partir de

outra aplicação.

 

 

Neste exemplo que iremos montar, iremos

usar: um formulário, duas caixas de texto (os quais o usuário irá

digitar dois números reais), um botão de comando.

 

unit usadll;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

function Max(a, b : double):double;stdcall;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

function Max(a, b : double):double;external 'MaxDLL';

procedure TForm1.Button1Click(Sender: TObject);

var

x, y, resultado : double;

begin

x := StrToFloat(Edit1.Text);

y := StrToFloat(Edit2.Text);

resultado := Max(x,y);

ShowMessage('Valor Máximo ' +FloatToStr(resultado));

end;

 

 

PS:

A função Max está declarada na seção interface e implementada na seção

implementation, ou seja, a função está implementada em uma DLL.

 

 

Bem,

mostramos como criar uma DLL simples e como fazer chamada de uma DLL.

Agora, iremos melhorar nossa DLL, fazendo com que ela exiba um

formulário qualquer em qualquer aplicação desenvolvida para Windows.

 

 

Colocar os bitmaps na dll

 

Por

vezes, quando iniciamos um projecto, temos uma preocupação: fazer uma

aplicação pequena. Bem, a solução pode passar por colocar todos os

bitmaps que vamos utilizar numa dll. Então vamos lá começar:

 

 

Deve

usar o Image Editor, criar uma nova Resource File (.res), neste

ficheiro vamos colocar os bitmaps e icons (ambos funcionam da mesma

forma) que queremos na nossa aplicação, clique com a tecla direita do

rato na nova resource file e crie um novo bitmap, depois desenhe ou cole

do clipboard um bitmap, finalmente guarde o ficheiro com o nome

images.res. Depois disto estar feito vá ao IDE do Delphi e no File menu

clique New... e escolha DLL depois cole o código abaixo, não se esqueça

de adicionar uma unit vazia ao projecto. Guarde o projecta da dll no

mesmo directório do ficheiro image.res, finalmente faça o build da dll

(não se esqueça, que não se pode correr [executar] uma dll!)Código da Dll:

 

Código

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

library ImageRes; {nome da dll}

uses DummyUnit; {DummyUnit é uma unit vazia, que é necessária}

{$R images.res} {nome da resource file, que deve estar no mesmo caminho da dll}

begin

end.--------------------------------------------------------------------------

 

Código da DummyUnit:

 

Código:

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

unit DummyUnit;

interface

implementation

end

 

Usar os bitmaps que estão na dll

 

Estão aqui alguns exemplos como extrair os bitmaps da dll:

 

procedure TForm1.SpeedButton1Click(Sender:TObject);

var

MyHandle :THandle;

Bmp : TBitmap;

begin

MyHandle := LoadLibrary('ImageRes.DLL'); {nome da dll construida acima}

Bmp := TBitmap.Create;

Bmp.Handle := LoadBitmap(MyHandle, 'BITMAP1'); {Bitmap1 é o nome do bitmap criado no ficheiro image.res}

SpeedButton1.Glyph.Handle := LoadBitmap(MyHandle,'BITMAP1'); {Carrega o Bitmap1 para o glyph do SpeedButton1}

Canvas.Draw(0,0,Bmp); {Desenha o bitmap no canvas da form}

Image1.picture.bitmap:=Bmp; {Carrega o bitmap para o componente Timage}

Bmp.Free;

end;--------------------------------------------------------------------------

Se gostaram naum custa nada agradecer ne?

 

Creditos:

yan321y321

Link para o comentário
Compartilhar em outros sites

@tópico,

Cara da um destaque no crédito, apenas pra não haver problemas com Autorias e tal.

Se não floodam sem tópico

 

 

@Gagi120

Esses tipos de comentários são considerados como flood

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

 

Leia as regras do Fórum e ajuda a deixa - lo bem organizado.

 

Espero ter ajudado você.

Coming Back Soon.

Link para o comentário
Compartilhar em outros sites

gostei do topico , ta bem organizado pa , levo meu thx , so tira essas clor , florescente :aplauso:

 

COLOCA O DOWNLOAD DO DELPHI , QUE FICA MELHOR ,

 

 

 

abraços , te mais

 

Ops voltei de novo , esse e o dhelpi 7 ?

Link para o comentário
Compartilhar em outros sites

cara tem como postar uma video aula sou novo com delphi

 

EI TIPO ASSIM , VC SABE MEXE COM O MICROSFT VISUAL C++ 2008 express ?? , se souber , me ajuda ae , kero faze um hack p mim

 

ME MANDA UMA MSGN PRIVATA , SE VC SOUBER ,

Link para o comentário
Compartilhar em outros sites

Atenção!

 

Seu Tópico foi encontrado em Área Errada,

por este motivo estou fechando-lhe e aplicando um Aviso / Warn para que o mal-ocorrido não ocorra novamente.

Procure ler sempre as

É necessário se cadastrar para acessar o conteúdo.
e as descrições das áreas.

 

Tópico Fechado [x]

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.