Estructura de un ejecutable
1.- Cabeceras
2.- Tabla de secciones
3.- Secciones
4.- EOF (Datos extra's)
Un ejecutable puede meter una cadena o string al final de sí mismo para despues extraerla y usarla en el programa, ahora hize esta función para detectar si un archivo tiene datos extra o EOF, o no los tiene
Código:
#include <stdio.h>
#include <windows.h>
/***************************\
* _ *
* | | *
* | |__ *
* Coder |____|inkgl *
* Fecha: 02/01/11 *
* Indetectables.net/foro *
* Revolutionteams.info *
* Orgulloso de ser... *
* -INDETECTABLE- *
\***************************/
BOOL existe_EOF(char *ruta)
{
//-> Estructuras necesarias
IMAGE_DOS_HEADER idh;
IMAGE_NT_HEADERS inh;
IMAGE_SECTION_HEADER ish;
//-> Variables necesarias
FILE *fp;
DWORD iTam;
DWORD hTam;
//Abrimos el archivo para leer en binario
fp=fopen(ruta,"rb");
if(fp!=NULL)
{
fseek(fp,0,SEEK_END);
iTam=ftell(fp);
rewind(fp);
fread(&idh,sizeof(IMAGE_DOS_HEADER),1,fp);
fseek(fp,idh.e_lfanew,SEEK_SET);
fread(&inh,sizeof(IMAGE_NT_HEADERS),1,fp);
fseek(fp,idh.e_lfanew + sizeof(IMAGE_NT_HEADERS) + sizeof(IMAGE_SECTION_HEADER) * (inh.FileHeader.NumberOfSections - 1),SEEK_SET);
fread(&ish,sizeof(IMAGE_SECTION_HEADER),1,fp);
fclose(fp);
hTam=ish.PointerToRawData + ish.SizeOfRawData;
if(hTam < iTam)
return true;
else
return false;
}
}
//->USO
int main()
{
if(existe_EOF("C:\\salida.exe"))
printf("El ejecutable tiene EOF");
else
printf("El ejecutable no tiene EOF");
getchar();
return 0;
}//Compilado con mingw - Dev C++
=O! buenismo pero pos explica paso x paso el code xD soy del [R]ev
ResponderEliminar