[Tutorial]Programando un Joiner simple desde 0.

Iniciado por Freeze., 31 Agosto 2007, 22:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Freeze.

Hola.

Este tutorial tiene como objetivo enseñar a hacer su porpio Joiner. Lo hice basandome en la primera version de mi Fire Joiner y bueno vamos a ver que les parece.

En este tutorial NO se enseñara a crear un Joiner con miles de utilidades tan solo tendra las de unir 2 archivos con cualquier extension.

Comenzemos:

En primer lugar les explicare basicamente como trabaja un Joiner:

Exe

1- Lee la dll o Stub
2- Lee los archivos a unir
3- Los separa por Firmas
4- Los guarda en un archivo final

Stub o Dll

1- Se lee a si mismo
2- Se divide a si mismo con la funcion Split con determinada firma
3- Guarda los 2 archivos en otro lugar
4- Los ejecuta con la api ShellExecuteA

Como ven es muy simple pero desde este momento les advierto que tienen que tener conocimientos sobre VB 6.0.



Explicare linea por linea el codigo del Ejecutable o Exe:

Código (vb) [Seleccionar]

Open App.Path & "/nombre.dll" For Binary Access Read As #1
Dll = Input(LOF(1), #1)
Close #1


- Abre la Dll
- La lee completa
- La cierra

Código (vb) [Seleccionar]

Open text1.text For Binary Access Read As #1
FI1 = Input(LOF(1), #1)
Close #1


- Abre el primer archivo a unir
- Lo lee completo y lo guarda en la variable FI1
- Lo cierra

Código (vb) [Seleccionar]

Open text2.text For Binary Access Read As #1
FI2 = Input(LOF(1), #1)
Close #1


- Abre el segundo archivo a unir
- Lo lee completo y lo guarda en la variable FI2
- Lo cierra

Código (vb) [Seleccionar]

FI1c = StrReverse(FI1)
FI2c = StrReverse(FI2)
FI1d = Trim(FI1c)
FI2d = Trim(FI2c)
Ext1 = Ext(Text1.Text)
Ext2 = Ext(Text2.Text)
Name1 = Nam(Text1.Text)
Name2 = Nam(Text2.Text)

- cifra el primer archivo con la funcion StrReverse
- cifra el segundo archivo con la funcion StrReverse
- Le quita los espacios que sobran a los lados
- Le quita los espacios que sobran a los lados
- Saca la extension del primer archivo con la funcion Ext
- Saca la extension del segundo archivo con la funcion Ext
- Saca el nombre de el primer archivo con la funcion Nam
- Saca el nombre de el segundo archivo con la funcion Nam

Código (vb) [Seleccionar]

Open "Tetx3.Text" For Output Access Write As #1
Print #1, Dll & "Firma" & FI1d & "Firma" & FI2d & "Firma" & Ext1 & "Firma" & Ext2 & "Firma" & Name1 & "Firma" & Name2 & "Firma"
Close #1

- Abre el Archivo final
- Imprime todos los datos separados por firmas
- Cierra




Explicare linea por linea el codigo del Stub o Dll:

Código (vb) [Seleccionar]

Private Declare Function ShellExecuteA Lib "SHELL32.DLL" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

- Declara la Api ShellExecuteA

Código (vb) [Seleccionar]

Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read As #1
Yo = Input(LOF(1), #1)
Close #1


- Se abre a si mismo
- Se lee a si mismo
- Se cierra

Código (vb) [Seleccionar]

Yo2 = Split(Yo, "Firma")
FI1 = StrReverse(Yo2(1))
FI2 = StrReverse(Yo2(2))
Xten1 = Yo2(3)
Xten2 = Yo2(4)
Nam1 = Yo2(5)
Nam2 = Yo2(6)


- Divide el archivo con la funcion Split usando las Firmas
- descifra el primer archivo y lo guarda en la variable FI1
- descifra el segundo archivo y lo guarda en la variable FI2
- Saca la Extension del primer archivo y la guarda en la variable Xten1
- Saca la Extension del segundo archivo y la guarda en la variable Xten2
- Saca el Nombre del primer archivo y la guarda en la variable Nam1
- Saca el Nombre del segundo archivo y la guarda en la variable Nam2

Código (vb) [Seleccionar]

Open Environ("Temp") & "\" & Nam1 & "." & Xten1 For Output Access Write As #1
Print #1, , FI1
Close #1
Open Environ("Temp") & "\" & Nam2 & "." & Xten2 For Output Access Write As #1
Print #1, , FI2
Close #1


- Crea el primer archivo "Joineado"
- Imprime el primer archivo
- Cierra
- Crea el segundo archivo "Joineado"
- Imprime el segundo archivo
- Cierra

Código (vb) [Seleccionar]

ShellExecuteA Me.hWnd, "Open", Environ("Temp") & "\" & Nam1 & "." & Xten1, vbNullString, vbNullString, 1
ShellExecuteA Me.hWnd, "Open", Environ("Temp") & "\" & Nam2 & "." & Xten2, vbNullString, vbNullString, 1


- Ejecuta el primer archivo
- Ejecuta el segundo archivo




Bueno y eso es todo..

Solo queda arreglar un poquito el code. Que por cierto no se los hare tambien. :xD

Y tendran su Joiner Listo.

Sin presumir mucho les digo que con este Tutorial, cualquiera con conocimientos minimos o medios de Visual Basic 6 puede crear su propio Joiner. Asi que aprovechenlo, que esta muy bueno. Claro tiene sus fallas y eso se va a ir mejorando.

Nota: Si lo van a pegar a otra parte por favor coloquen la fuente o el autor:

Freeze
foro.elhacker.net o http://freeze-web.com

Salu2..!! ;) ;) ;)



Editado 1/09/07 12:55 p.m.

Como todos los tutoriales tienen sus fallas y aqui algunas que nadie ha visto:

En alguna parte del Tutorial para sacar el Nombre de el Programa y la Extension de un archivo se utilizan 2 Funciones que son Nam y Ext, esas no estan prestablecidas tienen que agregarlas al codigo:

Ext:
Código (vb) [Seleccionar]

Public Function Ext(ruta As String)
FullName = Mid$(ruta, InStrRev(ruta, "\") + 1)
Ext = Mid$(FullName, InStrRev(FullName, ".") + 1)
End Function


Ext:
Código (vb) [Seleccionar]

Public Function Nam(ruta As String)
FullName = Mid$(ruta, InStrRev(ruta, "\") + 1)
Nam = Mid$(FullName, 1, InStrRev(FullName, ".") - 1)
End Function




Y ahora para que esten mucho mas claros en lo que estan haciendo les explicare algunas de las funciones que se utilizan:

Open:
Le dice al Visual Basic a que archivo debe acceder.

Input:
Funciona junto con Open e indica si quiere abrir el archivo.

LOF:
Lenght Of File. Significa Tamaño del Archivo. Sirve para sacar la longitud del archivo.

StrReverse:
Devuelve la cadena invertida.

Trim:
Devuelve una cadena sin espacios a los lados.

Split:
Sirve para delimitar y dividir en arrays una cadena.

Environ:
Devuelve una cadena la cual esta asociada con una variable del Sistema Operativo.

Freeze.

Oops..!

Todo lo que me esforze para hacer este tutorial (a mano) y luego para pasarlo aqui y pues nadie escribe... :xD

Salu2..!!

ranslsad

Muy bueno amigo, ahora no lo voy a probar porque ando con otras cosillas pero ta bueno ;)..
Are alguno con mi nombre para ayudar a los colegas... lo que deberias hacer es para "Desjoinear" xD es decir separar :D
Se Podra?

Salu2

Ranslsad

skapunky

Yo tengo una dudilla ya que nunca me he interesado en esto de los joiners, pero alguna otra vez que he vsto sobre ellos a aparece el stubb...Haber si m entero:

Se compone de dos archivos, el EXE que es el joiner y despues el Stubb..vale, hasta aí perfecto, pero cuando haces la mezcla de dos archivo que quieras juntar, estos se convierten en el stub o se convierten a un tercer archivo?

Si se convierten en el stubb, se ha de tener una copia del stubb pa no perderlo, no?

Ahora que he visto el funcionamiento, quiza me anime uy program un joiner que junte hasta un maximo de unos cuantosd archivos..ya se me ha ocurrido un par de formas para programarlo.  ;D

Saludos.
Killtrojan Syslog v1.44: ENTRAR

invisible_hack

Jejeje que wapo esta el manual, buen trabajo Freeze :D

P.D. por cierto, esto que voy a decir no tiene que ver con el tutorial que se trata en este post, pero el banner animado que tienes en tu firma y que en teoria lleva a tu web pues cuando pincho sale un error, osea que no redirige bien a tu web, lo digo por si no estabas al tanto de eso... :rolleyes:

Saludetes!!
"Si no visitas mi blog, Chuck te dará una patada giratoria"

Freeze.

Cita de: ranslsad en  1 Septiembre 2007, 14:49 PM
Muy bueno amigo, ahora no lo voy a probar porque ando con otras cosillas pero ta bueno ;)..
Are alguno con mi nombre para ayudar a los colegas... lo que deberias hacer es para "Desjoinear" xD es decir separar :D
Se Podra?
Salu2
Ranslsad

Si te fijas bien y lees... Realmente el Joiner lo que hace es copiar esos archivos a otros lugares que no se vean y ejecutarlos desde el exe final

Cita de: skapunky en  1 Septiembre 2007, 15:08 PM
pero cuando haces la mezcla de dos archivo que quieras juntar, estos se convierten en el stub o se convierten a un tercer archivo?
En un Tercer Archivo. Simplemente los archivos son:
- 1er Archivo a juntar con extension cualquiera
- 2do Archivo a juntar con extension cualquiera
- Stub o Dll
- Joiner o Exe
- Archivo Final el cual es un exe que ejecuta los 2 primeros archivos

invisible_hack: Gracias... lo arreglare..!!

Red Mx

 :D vaya muy bien explicado simple pero bien explicado para los que empiesan esta muy bien.

Desarrollar Malware Es Causa De Cancer...

papanoel_devacaciones

esta muy bien y todo ami me ha gustado...pero desde 0 ??



Saludos

invisible_hack

Bueno, acabo de volver a pinchar en tu banner y veo que ya lo has arreglado, ahora si que funka jeje ;D

Y respecto a tu Joiner, te molesta si lo pongo en mi foro para descargar? No te preocupes con lo de los derexos de autor, pondre claramente que fue hecho por ti aqui en Elhacker.net y todo no te preocupes...

¿Puedo? Eske no me gusta andar poniendo programas de otros en mi foro sin antes haber avisado a su creador...

Saludos, espero respuesta jeje
"Si no visitas mi blog, Chuck te dará una patada giratoria"

~~

Por pm invisible_hack please ;)

Cita de: skapunky en  1 Septiembre 2007, 15:08 PM
Yo tengo una dudilla ya que nunca me he interesado en esto de los joiners, pero alguna otra vez que he vsto sobre ellos a aparece el stubb...Haber si m entero:

Se compone de dos archivos, el EXE que es el joiner y despues el Stubb..vale, hasta aí perfecto, pero cuando haces la mezcla de dos archivo que quieras juntar, estos se convierten en el stub o se convierten a un tercer archivo?

Si se convierten en el stubb, se ha de tener una copia del stubb pa no perderlo, no?

Ahora que he visto el funcionamiento, quiza me anime uy program un joiner que junte hasta un maximo de unos cuantosd archivos..ya se me ha ocurrido un par de formas para programarlo.  ;D

Saludos.

Esos archivos se "pegan" al final del stub. Como tu dices lo mas lógico es hacer una copia del stub para no perderlo... aunke añadirlo como resource o joinearlo a tu propio joiner (al exe) keda mas elegante q camuflarlo como una dll..