elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
23 Mayo 2012, 07:39  


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderadores: Karcrack, [Zero])
| | |-+  Insertar codigo dentro de una sección del crypter
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Insertar codigo dentro de una sección del crypter  (Leído 911 veces)
lucasluks1004

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Insertar codigo dentro de una sección del crypter
« en: 25 Agosto 2011, 02:44 »

Bien como dice el titulo estoy haciendo mi crypter el cual ya es funcional ,,pero me di cuenta (no es gran secreto jaja) q los avs detectan los extra data en el stub como codigo malicisos obviamente el codigo q pego a lo ultimo del stub esta encryptado ,,ahora mi pregunta es como hacer para q ese codigo q meto sea parte del exe osea q este dentro de la ultima sección por ejemplo encotre esto ** algo viejo pero aun no logro hacerlo ,,si alguien me puede dar una mano se lo agredeceria mucho! ,,saludos



** http://foro.elhacker.net/programacion_vb/crear_un_pe_editor_simple-t229389.0.html
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.826


I'Love...!¡.


Ver Perfil WWW
Re: Insertar codigo dentro de una sección del crypter
« Respuesta #1 en: 25 Agosto 2011, 02:47 »

.
Debes realinear las secciones del formato PE, de tal manera que dicha estructura incluya los datos finales...

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
lucasluks1004

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Insertar codigo dentro de una sección del crypter
« Respuesta #2 en: 25 Agosto 2011, 02:52 »

BlackZeroX gracias por contestar tan rapidamente !!!,,no me puedes dar un empujon un poquito mayor jaja ,,realmente entiendo lo q me dices pero hacerlo realidad es otra cosa ..
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.826


I'Love...!¡.


Ver Perfil WWW
Re: Insertar codigo dentro de una sección del crypter
« Respuesta #3 en: 25 Agosto 2011, 03:00 »

.
Traducelo esta en C (Son solo equivalencias...).

Código
 
#include <windows.h>
#include <stdio.h>
#define ReadBinary "r+b"
 
/* Realing PE function
  Programmer : The Swash
  Thanks to  : Thor, Slek
  Dedicated  : Thor, Psymera, [Zero], Steve10120, Karcrack, Cobein
*/

 
int PEFileSize(char * fPath);
int AlingNum(int num, int aling);
char * BytesAling(int number);
 
int main(void)
{
   printf("%i ",RealingPE("C:\\hi.exe"));
   getchar();
 
}
 
int RealingPE(char * FilePath)
{
   int OriginalSize = 0;
   int ActualSize = 0;
   int iEOF = 0, iEOFAlingned = 0, iWrite = 0;
   FILE * lpFile;
   IMAGE_DOS_HEADER IDH;
   IMAGE_NT_HEADERS INH;
   IMAGE_SECTION_HEADER ISH;
 
   OriginalSize = PEFileSize(FilePath);
 
   if (OriginalSize != -1)
   {
                    lpFile = fopen(FilePath, ReadBinary);
                    if (lpFile != NULL)
                    {
                               fseek(lpFile,0,SEEK_END);
                               ActualSize = ftell(lpFile);
                               if (ActualSize - OriginalSize > 0)
                               {
                                              rewind(lpFile);
                                              fread(&IDH, sizeof(IDH), 1, lpFile);
                                              fseek(lpFile, IDH.e_lfanew, SEEK_SET);
                                              fread(&INH, sizeof(INH), 1, lpFile);
                                              fseek(lpFile, IDH.e_lfanew + sizeof(INH) + (sizeof(ISH) * (INH.FileHeader.NumberOfSections-1)), SEEK_SET);
                                              fread(&ISH, sizeof(ISH), 1, lpFile);
                                              iEOF = ActualSize - OriginalSize;
                                              iEOFAlingned = AlingNum(iEOF, INH.OptionalHeader.FileAlignment);
                                              if (ISH.VirtualAddress == INH.OptionalHeader.DataDirectory[2].VirtualAddress)
                                              {
                                                                     ISH.SizeOfRawData += iEOFAlingned;
                                                                     ISH.Misc.VirtualSize += iEOFAlingned;
                                                                     INH.OptionalHeader.SizeOfImage += iEOFAlingned;
                                                                     INH.OptionalHeader.DataDirectory[2].Size += iEOFAlingned;
                                                                     fseek(lpFile, IDH.e_lfanew, SEEK_SET),
                                                                     iWrite = fwrite(&INH, 1, sizeof(INH), lpFile);
                                                                     fseek(lpFile, IDH.e_lfanew + sizeof(INH) + (sizeof(ISH) * (INH.FileHeader.NumberOfSections-1)), SEEK_SET);
                                                                     iWrite = fwrite(&ISH, 1, sizeof(ISH), lpFile);
                                                                     if (iEOFAlingned - iEOF > 0)
                                                                     {
                                                                                      fseek(lpFile, ActualSize, SEEK_SET);
                                                                                      fwrite(BytesAling(iEOFAlingned - iEOF), iEOFAlingned - iEOF, 1, lpFile);
                                                                     }                
                                                                     fclose(lpFile);
                                                                     return 0;
                                              }
                                              else
                                              {
                                                                     ISH.SizeOfRawData += iEOFAlingned;
                                                                     ISH.Misc.VirtualSize += iEOFAlingned;
                                                                     INH.OptionalHeader.SizeOfImage += iEOFAlingned;
                                                                     fseek(lpFile, IDH.e_lfanew, SEEK_SET),
                                                                     iWrite = fwrite(&INH, 1, sizeof(INH), lpFile);
                                                                     fseek(lpFile, IDH.e_lfanew + sizeof(INH) + (sizeof(ISH) * (INH.FileHeader.NumberOfSections-1)), SEEK_SET);
                                                                     fwrite(&ISH, sizeof(ISH), 1, lpFile);
                                                                     if (iEOFAlingned - iEOF > 0)
                                                                     {
                                                                                      fseek(lpFile, ActualSize, SEEK_SET);
                                                                                      fwrite(BytesAling(iEOFAlingned - iEOF), iEOFAlingned - iEOF, 1, lpFile);
                                                                     }                                                                                      
                                                                     fclose(lpFile);
                                                                     return 0;
                                              }
 
                               }
                               else
                               {
                                   return 1;
                               }
                    }
                    else
                    {
                        return -1;
                    }
   }
   else
   {
       return -1;
   }
}
 
 
int PEFileSize(char * fPath)
{
   IMAGE_DOS_HEADER IDH;
   IMAGE_NT_HEADERS INH;
   IMAGE_SECTION_HEADER ISH;
   FILE * lpFile;
   int sTemp = 0, i;
 
   lpFile = fopen(fPath,ReadBinary);
   if (lpFile != NULL)
   {
              fseek(lpFile, 0, SEEK_SET); // Seek to begin of file
              fread(&IDH, sizeof(IDH), 1, lpFile); // Read 64 bytes to IDH struct
              if (IDH.e_magic == IMAGE_DOS_SIGNATURE) // If IDH.e_magic = (MZ)
              {
                              fseek(lpFile, IDH.e_lfanew, SEEK_SET); // Seek in file in begin of NT Headers (PE)
                              fread(&INH, sizeof(INH), 1, lpFile); // Read in structure 248 bytes
                              if (INH.Signature == IMAGE_NT_SIGNATURE) // If INH.Signature = (PE)
                              {
                                                for (i = 0; i < INH.FileHeader.NumberOfSections; i++) // go for all sections
                                                {
                                                    fseek(lpFile, IDH.e_lfanew + sizeof(INH) + sizeof(ISH)*i, SEEK_SET); // Seek in actual section
                                                    fread(&ISH, sizeof(ISH), 1, lpFile); // Read section
                                                    sTemp += ISH.SizeOfRawData; // Save sizeofrawdata of section
                                                }
                                                sTemp += INH.OptionalHeader.SizeOfHeaders;
                                                fclose(lpFile);
                                                return sTemp;
                              }
                              else
                              {
                                  return -1;
                              }
              }
              else
              {
                  return -1;
              }
   }
   else
   {
       return -1;
   }
}
 
int AlingNum(int num, int aling)
{
   if( (num % aling == 0) || (num < aling) )
   {
          return aling;
   }
   else
   {
       return (num / aling) * aling + aling;
   }
}
 
char * BytesAling(int number)
{
    char * sTemp = (char *) malloc(number + 1);
    int i;
    for (i=0; i<number; i++)
    {
        sTemp[i] = '\0';
    }
    return sTemp;
}
 
 

Temibles Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
lucasluks1004

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Insertar codigo dentro de una sección del crypter
« Respuesta #4 en: 25 Agosto 2011, 03:43 »

gracias de vuelta ,,estoy medio oxidado en C ,pero buen veremos si le puedo sacar provecho!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar Artículos dentro de una sección
Desarrollo Web
latinquasar 4 352 Último mensaje 23 Septiembre 2004, 19:54
por latinquasar
Insertar imagen dentro de un Treeview
Programación Visual Basic
el-viejo 4 2,580 Último mensaje 15 Julio 2007, 23:48
por el-viejo
Como introducir el stub dentro del crypter (Al crearlo) « 1 2 »
Programación Visual Basic
Christian.tc 17 3,828 Último mensaje 9 Febrero 2010, 17:07
por Christian.tc
(Duda) Meter archivo dentro de sección
Programación Visual Basic
Pure Ice 0 516 Último mensaje 9 Junio 2010, 10:06
por Pure Ice
Insertar texto dentro de otro?
.NET
Edu 3 1,363 Último mensaje 9 Abril 2011, 20:05
por Edu
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines