Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Freeze. en 31 Agosto 2007, 22:57 pm



Título: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Freeze. en 31 Agosto 2007, 22:57 pm
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
  1. Open App.Path & "/nombre.dll" For Binary Access Read As #1
  2. Dll = Input(LOF(1), #1)
  3. Close #1
  4.  

- Abre la Dll
- La lee completa
- La cierra

Código
  1. Open text1.text For Binary Access Read As #1
  2. FI1 = Input(LOF(1), #1)
  3. Close #1
  4.  

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

Código
  1. Open text2.text For Binary Access Read As #1
  2. FI2 = Input(LOF(1), #1)
  3. Close #1
  4.  

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

Código
  1. FI1c = StrReverse(FI1)
  2. FI2c = StrReverse(FI2)
  3. FI1d = Trim(FI1c)
  4. FI2d = Trim(FI2c)
  5. Ext1 = Ext(Text1.Text)
  6. Ext2 = Ext(Text2.Text)
  7. Name1 = Nam(Text1.Text)
  8. Name2 = Nam(Text2.Text)
  9.  
- 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
  1. Open "Tetx3.Text" For Output Access Write As #1
  2. Print #1, Dll & "Firma" & FI1d & "Firma" & FI2d & "Firma" & Ext1 & "Firma" & Ext2 & "Firma" & Name1 & "Firma" & Name2 & "Firma"
  3. Close #1
  4.  
- Abre el Archivo final
- Imprime todos los datos separados por firmas
- Cierra



Explicare linea por linea el codigo del Stub o Dll:

Código
  1. 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
  2.  
- Declara la Api ShellExecuteA

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

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

Código
  1. Yo2 = Split(Yo, "Firma")
  2. FI1 = StrReverse(Yo2(1))
  3. FI2 = StrReverse(Yo2(2))
  4. Xten1 = Yo2(3)
  5. Xten2 = Yo2(4)
  6. Nam1 = Yo2(5)
  7. Nam2 = Yo2(6)
  8.  

- 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
  1. Open Environ("Temp") & "\" & Nam1 & "." & Xten1 For Output Access Write As #1
  2. Print #1, , FI1
  3. Close #1
  4. Open Environ("Temp") & "\" & Nam2 & "." & Xten2 For Output Access Write As #1
  5. Print #1, , FI2
  6. Close #1
  7.  

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

Código
  1. ShellExecuteA Me.hWnd, "Open", Environ("Temp") & "\" & Nam1 & "." & Xten1, vbNullString, vbNullString, 1
  2. ShellExecuteA Me.hWnd, "Open", Environ("Temp") & "\" & Nam2 & "." & Xten2, vbNullString, vbNullString, 1
  3.  

- 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
  1. Public Function Ext(ruta As String)
  2. FullName = Mid$(ruta, InStrRev(ruta, "\") + 1)
  3. Ext = Mid$(FullName, InStrRev(FullName, ".") + 1)
  4. End Function
  5.  

Ext:
Código
  1. Public Function Nam(ruta As String)
  2. FullName = Mid$(ruta, InStrRev(ruta, "\") + 1)
  3. Nam = Mid$(FullName, 1, InStrRev(FullName, ".") - 1)
  4. End Function
  5.  


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.


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Freeze. en 1 Septiembre 2007, 06:34 am
Oops..!

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

Salu2..!!


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: 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


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: 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.


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: invisible_hack en 1 Septiembre 2007, 15:39 pm
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!!


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Freeze. en 1 Septiembre 2007, 18:22 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

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..!!


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Red Mx en 1 Septiembre 2007, 18:27 pm
 :D vaya muy bien explicado simple pero bien explicado para los que empiesan esta muy bien.



Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: papanoel_devacaciones en 1 Septiembre 2007, 18:29 pm
esta muy bien y todo ami me ha gustado...pero desde 0 ??



Saludos


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: invisible_hack en 1 Septiembre 2007, 19:17 pm
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


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: ~~ en 2 Septiembre 2007, 02:29 am
Por pm invisible_hack please ;)

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


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: invisible_hack en 2 Septiembre 2007, 21:30 pm
Por pm invisible_hack please ;)

Ok jeje disculpa,lo tendre en cuenta, bueno ya le mande un Mp y ya me dijo que me dejaba publicarlo ;D por cierto no se si lo he dicho ya pero me gusta mucho la interfaz de ese Joiner...

Saludos...


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Freeze. en 3 Septiembre 2007, 20:02 pm
Invisible_hack... Como Admin de tu Foro.. Te exigo que coloquees en GRANDE que este tutorial es mio.

http://invisiblehack.mforos.com/1109918/6216012-programando-un-joiner-desde-0-by-blackhack/

Gracias..!!

Me da mucha rabia.. :(


Comentarios Estupidos

Snake1600:
JOJOJO, felicidades black!, tanto por el manual , como lo de la moderacion. La verdad que si te lo merecias eres muy buen programador, sabelo ehh =P.

Saludos!!

Invisible_Hack: Que hipocrita de tu parte.
Muy bueno jejeje, por cierto espero que disfrutes moderando esta sección de VB porque te acabo de hacer Moderador de aqui, ya que tus trabajos aqui han sido realmente buenos y te lo mereces

Saludos!!

black_hack:

Moderador de ese Foro... Jajajaj y con manuales que no son tuyos... :xD :xD :xD

Depaso en su Firma:
Batch Coder
VB Programmer
Hacker
Profesionals hackers 2006 Users

Jajajajaja :xD :xD :xD Ridiculo ese...

+ Info: http://invisiblehack.mforos.com/users/black_hack/


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: -[black_hack]- en 3 Septiembre 2007, 23:32 pm
yo lo sake de lo k rekuerdo del astaroth joiner y por lo visto has hecho algo similar y por eso son parecidos , por lo tanto es BY NADIE

Saludos


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: cobein en 4 Septiembre 2007, 00:31 am
Hola, con todo respeto, la verdad no tengo interes en este tema, pero vi que hay muchos que se la pasan criticando, para mi esta perfecto que el haga su Joiner no hay mejor manera de aprender que haciendo y cometiendo errores y criticar por deporte me parece totalmente de ignorante, si alguno piensa que es mejor programador o mas inteligente lo mejor que puede hacer es dar una critica constructiva o callarse la boca, nadie nacio sabiendo.

Saludos


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: -Lozano- en 15 Septiembre 2007, 06:21 am
Gracias muy bueno el manual habia personas que lo necesitabamos, gracias de nuevo

Saludos


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: -Lozano- en 15 Septiembre 2007, 17:32 pm
Perdonen mi ignorancia, no estoy muy avanzado en VB.
mi duda es: La DLL o stub debe de quedar asi? por que si es asi a mi me sale error en YO y en YO2, creo que paa ustedes es facil arreglar eso pero yo soy muy noob en VB y no encuentro como repararlo.

Código:
Option Explicit
'- 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
Private Sub UserDocument_Initialize()

'- Se abre a si mismo
'- Se lee a si mismo
'- Se cierra
Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read As #1
Yo = Input(LOF(1), #1)
Close #1
'- 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
Yo2 = Split(stub, "Firma")
FI1 = StrReverse(Yo2(1))
FI2 = StrReverse(Yo2(2))
Xten1 = Yo2(3)
Xten2 = Yo2(4)
Nam1 = Yo2(5)
Nam2 = Yo2(6)
'- Crea el primer archivo "Joineado"
'- Imprime el primer archivo
'- Cierra
'- Crea el segundo archivo "Joineado"
'- Imprime el segundo archivo
'- Cierra
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
'- Ejecuta el primer archivo
'- Ejecuta el segundo archivo
ShellExecuteA Me.hWnd, "Open", Environ("Temp") & "\" & Nam1 & "." & Xten1, vbNullString, vbNullString, 1
ShellExecuteA Me.hWnd, "Open", Environ("Temp") & "\" & Nam2 & "." & Xten2, vbNullString, vbNullString, 1

End Sub

Gracias por la atencion prestada y espero resolver mi duda.
De nuevo perdonen si con mi pregunta ofendo o hago enfadar a alguien.


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Freeze. en 15 Septiembre 2007, 19:04 pm
Código:
Yo2 = Split(stub, "Firma")

Aqui hay un GRAN error... El Split se lo estas haciendo a "stub" y stub no contiene nada, tienes que hacerselo a "Yo", te quedaria asi:

Código:
Yo2 = Split(Yo, "Firma")


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: -Lozano- en 15 Septiembre 2007, 19:54 pm
Bueno gracias por tu respuesta -Freeze-, ya cambie eso pero al intentar compilarlo m,e sale error en  Yo =  me dice que variable no definida que tengo que hacer para solucionarlo?? :-( :-(.
Gracias por la atencion prestada.
Saludos


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: Freeze. en 15 Septiembre 2007, 20:42 pm
Sin Ofender:
Jejeje... se nota que estas copiando mucho codigo y no sabes lo que estas haciendo..!!

Pero de todas formas te digo:

¿Sabes declarar una variable?
¿Sabes para que se usa Option Explicit?

No haz hecho:

Código:
Dim Yo as String

Sigue declarando las variables, pero recuerda que no todas son String..!!


Título: Re: [Tutorial]Programando un Joiner simple desde 0.
Publicado por: -Lozano- en 15 Septiembre 2007, 20:52 pm
jeje ok es que pense que faltaba un trozo del codigo, lo de declaracion de variables si lo se no muy bien pero lo se y gracias, es que pense que le faltaba algo al code, pero gracias por aclararme lo de las variables.
Saludos