#include #include #include <stdio.h> #include <stdlib.h> #include #include //------------NO Relevante #define MAX_BUFFER1 500 //-----------using namespace std; int main(int argc, char *argv[]) { FILE *archivo; char caracteres[800]; //-----------------NO Relevante long int leidos1,i1; FILE *archivo1; char caracteres1[MAX_BUFFER1]; int j1,k1; //----------------long int leidos,i; int k,j,g,ini_cont,rec; j=0; g=0; int cabeza[100],cabezaPE[100]; int ejec,base_PE,ptr_b,cont_sec,pos; ptr_b=0; pos=0; rec=4; base_PE=1; ejec=0; cont_sec=0; //ENCABEZADO DOS MZ cabeza[0]=2; cabeza[1]=2; cabeza[2]=2; cabeza[3]=2; cabeza[4]=2; cabeza[5]=2; cabeza[6]=2; cabeza[7]=2; cabeza[8]=2; cabeza[9]=2; cabeza[10]=4; cabeza[11]=2; cabeza[12]=2; //ENCABEZADO MZ EXTENDIDO cabeza[13]=4; cabeza[14]=4; cabeza[15]=4; cabeza[16]=20; cabeza[17]=4; //ENCABEZADO PE cabeza[18]=2; cabeza[19]=4; cabeza[20]=2;
cabeza[21]=2; cabeza[22]=4; cabeza[23]=4; cabeza[24]=4; cabeza[25]=2; //ENCABEZADO OPCIONAL NT //Campos Standar cabeza[26]=2; cabeza[27]=2; cabeza[28]=1; cabeza[29]=1; cabeza[30]=4; cabeza[31]=4; cabeza[32]=4; cabeza[33]=4; cabeza[34]=4; //Campos Adicionales cabeza[35]=4; cabeza[36]=4; cabeza[37]=4; cabeza[38]=4; cabeza[39]=2; cabeza[40]=2; cabeza[41]=2; cabeza[42]=2; cabeza[43]=2; cabeza[44]=2; cabeza[45]=4; cabeza[46]=4; cabeza[47]=4; cabeza[48]=4; cabeza[49]=2; cabeza[50]=2; cabeza[51]=4; cabeza[52]=4; cabeza[53]=4; cabeza[54]=4; cabeza[55]=4; cabeza[56]=4; cabeza[57]=4; cabeza[58]=4; cabeza[59]=4; cabeza[60]=4; cabeza[61]=4; cabeza[62]=4; cabeza[63]=4; cabeza[64]=4; cabeza[65]=4; cabeza[66]=4; cabeza[67]=88;//92 //ENCABEZADO DE SECCIONES cabeza[68]=8; cabeza[69]=4;//x 4 archivo=fopen("apdfpr.exe","r+b"); leidos=fread( caracteres, 1, cabeza[g], archivo ); for (i=0;i
k=caracteres[i]; if (k<0) k=256+k; if (k<15) printf("0"); printf("%c",k); if (k==77) ejec=ejec+1; if (k==90) ejec=ejec+1;
} printf("\n"); if (ejec!=2){ fclose(archivo); printf("Archivo no ejecutable"); system("PAUSE"); return EXIT_SUCCESS; } else printf("Archivo ejecutable"); printf("\n"); printf("\n"); for (i=0;i<70;i++) printf("-"); printf(" Encabezado EXE MZ"); printf("\n"); printf("\n"); //-------------------No Relevante--------------------------printf("%d",j); printf(" -> "); archivo1=fopen("Nombres.txt","r+b"); leidos1=fread( caracteres1, 1,1, archivo1 ); k1=caracteres1[0]; leidos1=fread( caracteres1, 1, k1, archivo1 ); for(i1=0;i10) { printf(" "); printf("%d",j); printf(" -> "); if (j==15) printf("26 Bytes"); for (i=leidos-1;i>-1;i--){ caracteres[i]; k=caracteres[i]; if (k<0) k=256+k; if (j!=15 && j!=17 && j!=66){ if (k<16)
printf("0"); printf("%X",k); if (j==20 && i==0){ //printf("ACA---------"); cont_sec=k; //printf("%d",cont_sec); } //------------------Tipo de Archivo Ejecutable----------------------if (j==16){ if (caracteres[3]>0){ printf("Archivo COM"); printf("\n"); fclose(archivo); system("PAUSE"); return EXIT_SUCCESS; } if (caracteres[2]>0){ printf("Archivo COM"); printf("\n"); fclose(archivo); system("PAUSE"); return EXIT_SUCCESS; } if (k>=0 && ptr_b==2){ base_PE=k*256; //printf("Acaaaaaaaaaaaaaaaaaaa"); //printf("%d",ptr_b); } if (k>0 && ptr_b==3) base_PE=base_PE+k; //printf("Acaaaaaaaaaaaaaaaaaaa"); //printf("%d",base_PE); ptr_b=ptr_b+1; } //-----------------------------------------} }
if (j==11){ printf("\n"); for (i=0;i<70;i++) printf("-"); printf("
EXTENDIDO");
printf("\n"); } if (j==17){ printf("\n"); for (i=0;i<70;i++) printf("-"); printf(" printf("\n"); } if (j==25){ printf("\n"); for (i=0;i<70;i++)
Encabezado MZ
Encabezado PE");
printf("-"); printf("
NT");
}
printf("\n"); printf(" printf("\n"); if (j==34){ printf("\n"); printf(" printf("\n");
SECCIONES");
Encabezado OPCIONAL Campos Estandar");
Campos Adicionales");
} //-----------------SECCIONES----------------------if (j==66){ printf("\n"); for (i=0;i<70;i++) printf("-"); printf(" Encabezado de printf("\n"); if (cont_sec==0){ printf("No hay secciones"); fclose(archivo); system("PAUSE"); return EXIT_SUCCESS; } else{ for (ini_cont=0;ini_cont "); leidos=fread( caracteres, 1, cabeza[68], archivo ); for (i=0;ipos) { //**********Tama�o Virtual********** if (pos==0){ printf("Tamano Virtual: "); printf(" -> ");} if (pos==1){ printf("Direcc Virtual: "); printf(" -> ");} if (pos==2){ printf("Tamano Fisico : "); printf(" -> ");} if (pos==3){ printf("Tamano Fisico2: ");
printf(" -> ");} for (i=leidos-1;i>-1;i--){ k=caracteres[i]; if (k<0) k=256+k; if (k<16) printf("0"); printf("%X",k); } printf("\n"); pos=pos+1; leidos=fread( caracteres,sizeof(char),cabeza[69], archivo );
} //--------------leidos=fread( caracteres, 1,8, archivo ); printf("Caracteristics: "); printf(" -> "); leidos=fread( caracteres, 1,4, archivo ); for (i=leidos-1;i>-1;i--){ k=caracteres[i]; if (k<0) k=256+k; if (k<16) printf("0"); printf("%X",k); } printf("\n"); printf("\n");
} fclose(archivo); system("PAUSE"); return EXIT_SUCCESS;
} } //------------------------------------------------//printf("\n"); printf("\n"); printf("%d",j+1); printf(" -> "); if (j==65) printf("Espacio de Enlace con las Seciones"); //-------------No Relevante----------------leidos1=fread( caracteres1,1,1, archivo1 ); k1=caracteres1[0]; if (k1<0) k1=k1+256; if (j==6){ k1=27; leidos1=fread( caracteres1, 1, k1, archivo1 ); for(i1=0;i1
leidos1=fread( caracteres1, 1, k1, archivo1 ); for(i1=0;i166){ fclose(archivo); system("PAUSE"); return EXIT_SUCCESS; } g=g+1; //Seguir leendo.. if (g==18) cabeza[g]=base_PE-66+cabeza[g]; //system("PAUSE"); leidos=fread( caracteres, sizeof(char), cabeza[g], archivo );
} fclose(archivo);
system("PAUSE"); return EXIT_SUCCESS; }