elf32
This commit is contained in:
37
main.c
37
main.c
@@ -133,17 +133,16 @@ int read_elf_magic(FILE* fp)
|
||||
switch(e_ident[5])
|
||||
{
|
||||
case 0x01:
|
||||
printf("(LSB) ");
|
||||
printf("(little-endian) ");
|
||||
break;
|
||||
case 0x02:
|
||||
printf("(MSB) ");
|
||||
printf("(big-endian) ");
|
||||
break;
|
||||
default:
|
||||
printf("\nInvalid data encoding!\n");
|
||||
exit(-EINVAL);
|
||||
}
|
||||
|
||||
|
||||
if (verbose)
|
||||
{
|
||||
// EI_VERSION
|
||||
@@ -178,35 +177,36 @@ void display_elf32(struct Elf32_Ehdr* header)
|
||||
printf("(unknown),");
|
||||
break;
|
||||
}
|
||||
printf(" ");
|
||||
|
||||
switch (header->e_machine)
|
||||
{
|
||||
case 0x00:
|
||||
printf("No architecture");
|
||||
printf("No architecture,");
|
||||
break;
|
||||
case 0x01:
|
||||
printf("AT&T WE 32100");
|
||||
printf("AT&T WE 32100,");
|
||||
break;
|
||||
case 0x02:
|
||||
printf("SPARC");
|
||||
printf("SPARC,");
|
||||
break;
|
||||
case 0x03:
|
||||
printf("i386");
|
||||
printf("i386,");
|
||||
break;
|
||||
case 0x04:
|
||||
printf("Motorola 68000");
|
||||
printf("Motorola 68000,");
|
||||
break;
|
||||
case 0x05:
|
||||
printf("Motorola 88000");
|
||||
printf("Motorola 88000,");
|
||||
break;
|
||||
case 0x07:
|
||||
printf("Intel 80860");
|
||||
printf("Intel 80860,");
|
||||
break;
|
||||
case 0x08:
|
||||
printf("MIPS RS3000");
|
||||
printf("MIPS RS3000,");
|
||||
break;
|
||||
case 0x09:
|
||||
printf("MIPS RS4000");
|
||||
printf("MIPS RS4000,");
|
||||
break;
|
||||
default:
|
||||
printf("Unknown architecture");
|
||||
@@ -272,8 +272,8 @@ unsigned char read_elf_obj_size(FILE* fp)
|
||||
|
||||
void display_sec_common()
|
||||
{
|
||||
printf("\nNX %s\n", nx ? "enabled" : "disabled");
|
||||
printf("PIE %s\n", pie ? "enabled" : "disabled");
|
||||
printf(" %s, ", nx ? "\x1b[32mNX enabled\x1b[0m" : "\x1b[31mNX disabled\x1b[0m");
|
||||
printf("%s, ", pie ? "\x1b[32mPIE enabled\x1b[0m" : "\x1b[31mPIE disabled\x1b[0m");
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
@@ -281,10 +281,15 @@ int main(int argc, char* argv[])
|
||||
// Argument processing
|
||||
if (argc < 2)
|
||||
{
|
||||
printf("Usage: %s <elf>\n", argv[0]);
|
||||
printf("Usage: %s <file> [options]\n -v --verbose displays more information\n", argv[0]);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (int i=1; i<argc; i++)
|
||||
{
|
||||
if (strncmp(argv[i], "-v", 2) == 0) verbose = true;
|
||||
}
|
||||
|
||||
char* filename = argv[1];
|
||||
if (!filename)
|
||||
{
|
||||
@@ -306,6 +311,8 @@ int main(int argc, char* argv[])
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
printf("%s: ", filename);
|
||||
|
||||
// ELF32 or ELF64?
|
||||
unsigned char elf_obj_size = read_elf_obj_size(elf_file);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user