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
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
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
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
- cifra el primer archivo con la funcion StrReverse
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 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
- Abre el Archivo final
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
- Imprime todos los datos separados por firmas
- Cierra
Explicare linea por linea el codigo del Stub o Dll:
Código
- Declara la Api ShellExecuteA
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
Código
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
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
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
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.
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
Public Function Ext(ruta As String) FullName = Mid$(ruta, InStrRev(ruta, "\") + 1) Ext = Mid$(FullName, InStrRev(FullName, ".") + 1) End Function
Ext:
Código
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.