Página 1 de 1

[Source] Funcion detectar PE en binario

Publicado: 30 Dic 2010, 19:28
por linkgl
Bueno desde que toqué el runPE del cryptic me salió la curiosidad de meterme en eso del PE y bueno leyendo y documentandome he hecho esta función que te dice si existe el PE en el archivo o no.!

Código: Seleccionar todo

/**************************
* Coder: Linkgl           *
* Fecha 30/12/2010        *
* Indetectables.net       *
***************************/

#include <windows.h>
#include <stdio.h>

BOOL existe_header(char *sRuta)
{
  IMAGE_DOS_HEADER iDh; //Estructuras PE necesarias
  IMAGE_NT_HEADERS iNt;
  
  FILE *f1;
  f1=fopen(sRuta,"rb"); //Abrimos el archivo
  if(f1==NULL) //Si es nulo retornamos false
    return false;
  fread(&iDh,sizeof(IMAGE_DOS_HEADER),1,f1); //leemos y el IMAGE_DOS_HEADER
  fseek(f1,iDh.e_lfanew,SEEK_SET); //Nos posicionamos para leer el IMAGE_NT_HEADERS
  fread(&iNt,sizeof(IMAGE_NT_HEADERS),1,f1); //leemos el IMAGE_NT_HEADERS
  //Si ambos existen retornamos true
  if(iDh.e_magic==IMAGE_DOS_SIGNATURE && iNt.Signature == IMAGE_NT_SIGNATURE)
    return true;
  else
    return false;
}

//uso ->
int main()
{
  if(existe_header("c:\\crackme.exe")==true)
  {
    printf("Existen los headers");
  }
  else 
    printf("No existen");
  getchar();
}

Re: [Source] Funcion detectar PE en binario

Publicado: 01 Ene 2011, 20:58
por p0is0n-123
Muy bueno link,tengo que ponerme a leer el formato PE...

Ahora agarro el codigo para ver con detenimiento,gracias...

Re: [Source] Funcion detectar PE en binario

Publicado: 02 Ene 2011, 05:03
por linkgl
También puedes declarar PIMAGE_NT_HEADERS (lo mismo con dos_header...) y llamarla como en C++ piNh->OptionalHeader.AddressOfEntryPoint; (Por un decir) una vez que lees las propiedades de ambas estructuras leer el PE es pan comido :P