diff --git a/a.out b/a.out index f722c30..5e9a6d4 100755 Binary files a/a.out and b/a.out differ diff --git a/helpelf b/helpelf index 37b3d93..6a1f727 100755 Binary files a/helpelf and b/helpelf differ diff --git a/main.c b/main.c index e7c0d53..aacd17f 100644 --- a/main.c +++ b/main.c @@ -127,24 +127,23 @@ int read_elf_magic(FILE* fp) return 0; } - void display_elf_common(unsigned char e_ident[EI_NIDENT]) +void display_elf_common(unsigned char e_ident[EI_NIDENT]) +{ + // EI_DATA + switch(e_ident[5]) { - // EI_DATA - switch(e_ident[5]) - { - case 0x01: - printf("(LSB) "); - break; - case 0x02: - printf("(MSB) "); - break; - default: - printf("\nInvalid data encoding!\n"); - exit(-EINVAL); - } + case 0x01: + printf("(little-endian) "); + break; + case 0x02: + printf("(big-endian) "); + break; + default: + printf("\nInvalid data encoding!\n"); + exit(-EINVAL); + } - - if (verbose) + if (verbose) { // EI_VERSION printf("version %d ", e_ident[6]); @@ -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 \n", argv[0]); + printf("Usage: %s [options]\n -v --verbose displays more information\n", argv[0]); return -EINVAL; } + for (int i=1; i