Sunteți pe pagina 1din 7

#include <cstdlib>

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
//------------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<leidos;i++){
caracteres[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;i1<leidos1;i1++){
k1=caracteres1[i1];
printf("%c",k1);
}
//----------------------------------------------------------
printf("\n");
g=g+1;
//-------------------------------------------------------
Bucle---------------------------
leidos=fread( caracteres, 1, cabeza[g], archivo );
while (leidos>0) {
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(" Encabezado MZ
EXTENDIDO");
printf("\n");
}
if (j==17){
printf("\n");
for (i=0;i<70;i++)
printf("-");
printf(" Encabezado PE");
printf("\n");
}
if (j==25){
printf("\n");
for (i=0;i<70;i++)
printf("-");
printf(" Encabezado OPCIONAL
NT");
printf("\n");
printf(" Campos Estandar");
printf("\n");
}
if (j==34){
printf("\n");
printf(" Campos Adicionales");
printf("\n");
}
//-----------------SECCIONES-----------------------
if (j==66){
printf("\n");
for (i=0;i<70;i++)
printf("-");
printf(" Encabezado de
SECCIONES");
printf("\n");
if (cont_sec==0){
printf("No hay secciones");
fclose(archivo);
system("PAUSE");
return EXIT_SUCCESS;
}
else{

for (ini_cont=0;ini_cont<cont_sec;ini_cont++){

//----------------
//**********Nombre Seccion**********
printf("Nombre Seccion: ");
printf("%d",ini_cont);
printf("-> ");
leidos=fread( caracteres, 1, cabeza[68], archivo );
for (i=0;i<leidos;i++){
k=caracteres[i];
if (k<0)
k=256+k;
printf("%c",k);
}
printf("\n");
pos=0;
leidos=fread( caracteres, 1, cabeza[69], archivo );
while (rec>pos) {
//**********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;i1++){
k1=caracteres1[i1];
printf("%c",k1);
}
}
else{
//printf("%d",k1);
leidos1=fread( caracteres1, 1, k1, archivo1 );
for(i1=0;i1<leidos1;i1++){
k1=caracteres1[i1];
printf("%c",k1);
}
}
//------------------------------------------
printf("\n");
//if (j==16){
// printf("%d",base_PE);
//}
j=j+1;
//system("PAUSE");
if (j>66){
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;
}

S-ar putea să vă placă și