From 88ff8d7aaa5a91143918aa2fd627de80e02bd8ce Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 17 Apr 2024 15:08:56 +0200 Subject: [PATCH 01/13] Search for jump value instead of E9 Decrypt rot1 ~OK --- Makefile | 2 +- includes/woody.h | 4 +++- print.s | 20 ++++++++++---------- srcs/woody.c | 15 +++++---------- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index c441a74..6ecb028 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ RM = rm -f LIBFT_FLAGS = ft_printf/libftprintf.a -CFLAGS = -Wall -Wextra -Werror +CFLAGS = -Wall -Wextra -Werror -g3 all: ${NAME} diff --git a/includes/woody.h b/includes/woody.h index 6183a7b..d2d3b51 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -16,7 +16,9 @@ #define JUMP "\xe9" -#define WOODY "..WOODY.." +#define WOODY "....WOODY...." +#define JUMP_VALUE "\xda\xda\xda" + #define TEXT_OFFSET "\xba\xba\xba\xba\xba\xba\xba\xba" #define SECTION_SIZE "\xca\xca\xca\xca\xca\xca\xca\xca" diff --git a/print.s b/print.s index 5c2c123..0b5475f 100644 --- a/print.s +++ b/print.s @@ -14,15 +14,15 @@ _start: mov r8, qword [rel section_sisze] ;text_section size mov r9, 0 ;increment register xor r10, r10 - ; encrypt: - ; cmp r8, r9 - ; je end_encrypt - ; mov r10b, byte[rax + r9] - ; inc r10b ;rot + 1 - ; mov byte[rax + r9], r10b - ; inc r9 - ; jmp encrypt - ; end_encrypt: + encrypt: + cmp r8, r9 + je end_encrypt + movzx r10, byte[rax + r9] + inc r10b ;rot + 1 + mov byte[rax + r9], r10b + inc r9 + jmp encrypt + end_encrypt: mov rdx, 14 mov rax, 1 syscall @@ -31,7 +31,7 @@ _start: pop rdi pop rax - jmp 0x00000000 ;for now it needs to be the first jmp + jmp 0xdadadada msg db "....WOODY....",10 text_section dq 0xbabababababababa section_sisze dq 0xcacacacacacacaca diff --git a/srcs/woody.c b/srcs/woody.c index 3344599..e097122 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -99,15 +99,14 @@ t_payload *get_payload() int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_position) { - char *ptr_jmp = ft_strnstr_nullterminated(payload->payload, JUMP, payload->len); + char *ptr_jmp_value = ft_strnstr_nullterminated(payload->payload, JUMP_VALUE, payload->len); char *ptr_woody = ft_strnstr_nullterminated(payload->payload, WOODY, payload->len); char *ptr_text_section = ft_strnstr_nullterminated(payload->payload, TEXT_OFFSET, payload->len); char *ptr_section_size = ft_strnstr_nullterminated(payload->payload, SECTION_SIZE, payload->len); - if (ptr_jmp && ptr_woody && ptr_text_section && ptr_section_size) + if (ptr_jmp_value && ptr_woody && ptr_text_section && ptr_section_size) { int32_t woody_index = ptr_woody - payload->payload; - - int32_t jmp_index = ptr_jmp - payload->payload; + int32_t jmp_index = ptr_jmp_value - sizeof(JUMP) - payload->payload; int32_t jump_value = ((payload_position + jmp_index + 5) - woody->Ehdr->e_entry) * -1; // 5 = JUMP SIZE (OPCODE + 4 bytes operand) ft_memcpy(&payload->payload[jmp_index + 1], &jump_value, sizeof(jump_value)); @@ -121,10 +120,6 @@ int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_posi ft_memcpy(woody->file + payload_position, payload->payload, payload->len); - printf("jmp_index : %d (%x)\n", jmp_index, jmp_index); - printf("woody index :%d (%x)\n", woody_index, woody_index); - printf("jmp_index++ : %ld (%lx)\n", jmp_index + sizeof(JUMP) + sizeof(jump_value), jmp_index + sizeof(JUMP) + sizeof(jump_value) - 1); - printf("text_value : %ld (%lx)\n", text_value, text_value); printf("Old entry : %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); printf("Code cave start = %ld (%lx)\n", payload_position, payload_position); printf("Payload size = %ld (%lx)\n", payload->len, payload->len); @@ -159,7 +154,7 @@ void inject(t_elf_content *woody) woody->Phdr[i].p_filesz += payload->len; woody->Phdr[i].p_memsz += payload->len; woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; - woody->text_section->sh_size += payload->len; + // woody->text_section->sh_size += payload->len; printf("New entry = %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); } @@ -216,7 +211,7 @@ int prepare_injection(t_elf_content *woody) if (elf_statut) return elf_statut; inject(woody); - // encrypt(woody->file, woody->text_section->sh_offset, woody->text_section->sh_size); + encrypt(woody->file, woody->text_section->sh_offset, woody->text_section->sh_size); char *woody_file; if (!(woody_file = malloc(woody->file_size))) return ft_put_error("Allocation error"); -- 2.20.1 From 2c14d6f0c52b3ec72e0359d6622dec0c50cab9cf Mon Sep 17 00:00:00 2001 From: pbonilla Date: Fri, 19 Apr 2024 11:41:15 +0200 Subject: [PATCH 02/13] infection of PT_LOAD reference to text section removed multiple infections OK --- includes/woody.h | 1 - resources/sample.c | 2 +- srcs/encrypt.c | 4 ++++ srcs/main.c | 6 +++--- srcs/woody.c | 50 +++++++++------------------------------------- 5 files changed, 17 insertions(+), 46 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index d2d3b51..0833ae4 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -36,7 +36,6 @@ typedef struct elf_content Elf64_Ehdr *Ehdr; Elf64_Phdr *Phdr; Elf64_Shdr *Shdr; - Elf64_Shdr *text_section; char *extra_data; } t_elf_content; diff --git a/resources/sample.c b/resources/sample.c index 5fffccb..3b68c69 100644 --- a/resources/sample.c +++ b/resources/sample.c @@ -2,6 +2,6 @@ int main(void) { - printf("Hello, World!\n"); + ft_printf("Hello, World!\n"); return (0x0); } diff --git a/srcs/encrypt.c b/srcs/encrypt.c index f7866d7..c57c8f1 100644 --- a/srcs/encrypt.c +++ b/srcs/encrypt.c @@ -8,4 +8,8 @@ void encrypt(char *file, unsigned long int offset, unsigned long int size) file[offset + i] = file[offset + i] - 1; ++i; } + printf("\nENCRYPTION : \n"); + printf(" File encrypted from %ld (%lx) to %ld (%lx)\n", offset, offset, offset + size, offset + size); + printf(" Size of encryption = %ld (%lx)\n", size, size); + printf("\n"); } \ No newline at end of file diff --git a/srcs/main.c b/srcs/main.c index 807f492..173f3e1 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -8,14 +8,14 @@ int get_elf_file(t_elf_content *woody) fd = open(woody->file_path, O_RDONLY); if (fd < 0) { - ft_printf("Error: Failed to open \'%s\'\n", woody->file_path); + printf("Error: Failed to open \'%s\'\n", woody->file_path); return EXIT_FAILURE; } off = lseek(fd, 0, SEEK_END); if (off == -1) { close(fd); - ft_printf("Error: Failed to read file offset \'%s\'\n", woody->file_path); + printf("Error: Failed to read file offset \'%s\'\n", woody->file_path); return EXIT_FAILURE; } woody->file_size = off; @@ -23,7 +23,7 @@ int get_elf_file(t_elf_content *woody) if (woody->file == MAP_FAILED) { close(fd); - ft_printf("Error: Failed to map file \'%s\'\n", woody->file_path); + printf("Error: Failed to map file \'%s\'\n", woody->file_path); return EXIT_FAILURE; } close(fd); diff --git a/srcs/woody.c b/srcs/woody.c index e097122..580758c 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -9,18 +9,18 @@ int save_elf(char *path, char *file, unsigned long int size) { int fd = open(path, O_CREAT | O_WRONLY | O_TRUNC, 0755); if (fd == -1) { - ft_printf("Error: Failed to create new file \'%s\'\n", path); + printf("Error: Failed to create new file \'%s\'\n", path); return EXIT_FAILURE; } if (write(fd, file, size) == -1) { close(fd); - ft_printf("Error: Failed to write new file \'%s\'\n", path); + printf("Error: Failed to write new file \'%s\'\n", path); return EXIT_FAILURE; } if (close(fd) == -1) { - ft_printf("Error: Failed to close new file \'%s\'\n", path); + printf("Error: Failed to close new file \'%s\'\n", path); return EXIT_FAILURE; } return EXIT_SUCCESS; @@ -97,7 +97,7 @@ t_payload *get_payload() return payload; } -int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_position) +int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_position, int load_segment_index) { char *ptr_jmp_value = ft_strnstr_nullterminated(payload->payload, JUMP_VALUE, payload->len); char *ptr_woody = ft_strnstr_nullterminated(payload->payload, WOODY, payload->len); @@ -111,11 +111,11 @@ int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_posi ft_memcpy(&payload->payload[jmp_index + 1], &jump_value, sizeof(jump_value)); int64_t text_index = ptr_text_section - payload->payload; - int64_t text_value = payload_position - woody->Ehdr->e_entry + woody_index; + int64_t text_value = payload_position - woody->Phdr[load_segment_index].p_offset + woody_index; ft_memcpy(&payload->payload[text_index], &text_value, sizeof(text_value)); int64_t section_index = ptr_section_size - payload->payload; - int64_t section_value = woody->text_section->sh_size; + int64_t section_value = woody->Phdr[load_segment_index].p_memsz; //woody->text_section->sh_size; ft_memcpy(&payload->payload[section_index], §ion_value, sizeof(section_value)); ft_memcpy(woody->file + payload_position, payload->payload, payload->len); @@ -148,30 +148,22 @@ void inject(t_elf_content *woody) { payload_position = create_codecave(woody, &woody->Phdr[i], payload); } - insert_payload(woody, payload, payload_position); + encrypt(woody->file, woody->Phdr[i].p_offset, woody->Phdr[i].p_memsz); + insert_payload(woody, payload, payload_position, i); woody->Ehdr->e_entry = payload_position; woody->Phdr[i].p_filesz += payload->len; woody->Phdr[i].p_memsz += payload->len; woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; - // woody->text_section->sh_size += payload->len; printf("New entry = %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); } -int is_special_section_indice(uint16_t section_index) { - return (section_index == SHN_LOPROC || section_index == SHN_BEFORE || - section_index == SHN_AFTER || section_index == SHN_HIPROC || - section_index == SHN_LOOS || section_index == SHN_HIOS || - section_index == SHN_ABS || section_index == SHN_COMMON || - section_index == SHN_XINDEX || section_index == SHN_HIRESERVE); -} - int get_elf_sections(t_elf_content *woody) { woody->Ehdr = (Elf64_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf64_Ehdr)); if (!woody->Ehdr || !elf_magic_numbers(woody->file) || woody->Ehdr->e_ident[EI_CLASS] != ELFCLASS64) { - ft_printf("Error: \'%s\' is not a valid 64-bit ELF file\n", woody->file_path); + printf("Error: \'%s\' is not a valid 64-bit ELF file\n", woody->file_path); return EXIT_FAILURE; } woody->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_phoff, sizeof(Elf64_Phdr)); @@ -179,29 +171,6 @@ int get_elf_sections(t_elf_content *woody) woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); if (!woody->Shdr|| !fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, woody->Ehdr->e_shnum * sizeof(Elf64_Shdr))) return EXIT_FAILURE; - - if (!fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (woody->Ehdr->e_shstrndx * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr))) - { - return EXIT_FAILURE; - } - char *Sshstrtab = (char *)fetch(woody->file, woody->file_size, woody->Shdr[woody->Ehdr->e_shstrndx].sh_offset, 0); - if (Sshstrtab == NULL) - { - return EXIT_FAILURE; - } - for (int j = 0; j < woody->Ehdr->e_shnum;j++) - { - if (woody->Shdr[j].sh_name > woody->Shdr[woody->Ehdr->e_shstrndx].sh_size) return EXIT_FAILURE; - if (woody->Shdr[j].sh_type == SHT_PROGBITS && woody->Shdr[j].sh_flags & SHF_EXECINSTR && - woody->Shdr[j].sh_flags & SHF_ALLOC && - Sshstrtab + woody->Shdr[j].sh_name < (char *)woody->file + woody->file_size && - !ft_strncmp(".text\0", Sshstrtab + woody->Shdr[j].sh_name, 6)) - { - woody->text_section = &woody->Shdr[j]; - break; - } - } - return EXIT_SUCCESS; } @@ -211,7 +180,6 @@ int prepare_injection(t_elf_content *woody) if (elf_statut) return elf_statut; inject(woody); - encrypt(woody->file, woody->text_section->sh_offset, woody->text_section->sh_size); char *woody_file; if (!(woody_file = malloc(woody->file_size))) return ft_put_error("Allocation error"); -- 2.20.1 From b1675739253af69a696a11c43f9aa3b0e35cdea9 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Thu, 23 May 2024 13:37:43 +0200 Subject: [PATCH 03/13] Refactoring : code cave creation --- includes/woody.h | 1 - srcs/woody.c | 32 ++++++++++++++------------------ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index 0833ae4..e04b480 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -36,7 +36,6 @@ typedef struct elf_content Elf64_Ehdr *Ehdr; Elf64_Phdr *Phdr; Elf64_Shdr *Shdr; - char *extra_data; } t_elf_content; // utils.c diff --git a/srcs/woody.c b/srcs/woody.c index 580758c..d5557c7 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -49,7 +49,10 @@ void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offse for (int i = 0; i < woody->Ehdr->e_phnum; i++) { if (woody->Phdr[i].p_offset > from) + { woody->Phdr[i].p_offset += offset_ammount; + woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; + } } for (int i = 0; i < woody->Ehdr->e_shnum; i++) { @@ -58,25 +61,23 @@ void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offse } } -size_t create_codecave(t_elf_content *woody, Elf64_Phdr *load_segment, t_payload *payload) +void create_codecave(t_elf_content *woody, t_payload *payload, size_t payload_position) { const unsigned int page_size = 4096; // getpagesize(); not authorized unsigned int padding_size = ((payload->len / page_size) + 1) * page_size; - unsigned int codecave_start = load_segment->p_offset + load_segment->p_filesz; - offset_sections(woody, codecave_start, padding_size); + offset_sections(woody, payload_position, padding_size); char *new_woody = malloc(woody->file_size + padding_size); if (!new_woody) - return 0; - ft_memcpy(new_woody, woody->file, codecave_start); - ft_bzero(new_woody + codecave_start, padding_size); - ft_memcpy(new_woody + codecave_start + padding_size, woody->file + codecave_start, woody->file_size - codecave_start); + return ; + ft_memcpy(new_woody, woody->file, payload_position); + ft_bzero(new_woody + payload_position, padding_size); + ft_memcpy(new_woody + payload_position + padding_size, woody->file + payload_position, woody->file_size - payload_position); munmap(woody->file, woody->file_size); woody->file = new_woody; woody->file_size += padding_size; woody->Ehdr = (Elf64_Ehdr *)new_woody; woody->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_phoff, sizeof(Elf64_Phdr)); woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); - return codecave_start; } t_payload *get_payload() @@ -136,18 +137,13 @@ void inject(t_elf_content *woody) int j = get_load_segment(woody, i + 1, false); size_t code_cave_size = woody->Phdr[j].p_offset - (woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz); - size_t payload_position; - printf("load position = : %ld (%lx)\n", woody->Phdr[i].p_offset, woody->Phdr[i].p_offset); - printf("load size = : %ld (%lx)\n", woody->Phdr[i].p_filesz, woody->Phdr[i].p_filesz); - if (code_cave_size > payload->len) // inverse here to test the other technique + size_t payload_position = woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz; + + if (code_cave_size < payload->len) // inverse here to test the other technique { - payload_position = woody->Phdr[i].p_offset + woody->Phdr[i].p_memsz; - printf("Code_cave_size = %ld (%lx)\n", code_cave_size, code_cave_size); - } - else - { - payload_position = create_codecave(woody, &woody->Phdr[i], payload); + create_codecave(woody, payload, payload_position); } + encrypt(woody->file, woody->Phdr[i].p_offset, woody->Phdr[i].p_memsz); insert_payload(woody, payload, payload_position, i); -- 2.20.1 From 1bdcef2b95ad55d8747a380881e1aa2fe4cb54b9 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 12 Jun 2024 13:38:39 +0200 Subject: [PATCH 04/13] test file added --- big_sample | Bin 0 -> 20104 bytes big_sample.hex | 1257 ++++++++++++++++++++++++++++++++++++++ not_that_big | Bin 0 -> 16008 bytes not_that_big.hex | 1001 ++++++++++++++++++++++++++++++ resources/big_sample.c | 412 +++++++++++++ resources/not_that_big.c | 332 ++++++++++ 6 files changed, 3002 insertions(+) create mode 100755 big_sample create mode 100644 big_sample.hex create mode 100755 not_that_big create mode 100644 not_that_big.hex create mode 100644 resources/big_sample.c create mode 100644 resources/not_that_big.c diff --git a/big_sample b/big_sample new file mode 100755 index 0000000000000000000000000000000000000000..59a083db40411a1e9acc4bf2e6441f1819e946f9 GIT binary patch literal 20104 zcmeI4e{fXQ702%;VnX?mM2P%IF^fnk(rgj}DAGtm2-(y`0wKdN79X4JlI*aXh5b>8 zRDq!sGsq}qD0P&vjCIgK#xUv#Lm7e;l~Rff<0!*epq3HFBEJhrVSCPd_k7*FCj8-a zI{xwQ%qAJnhofZDsds(SCM0mFnaqlH1@^e>(2}F74H6zk#|#b~(F)a~_j9_n=bMe6XX!ceer!nneazaSKBO)M!`^6-R$3FADmh-a)>Gxy6) zA0AUxk2ff)rjvC#j4Expm6!UsY@jY@`>NNk^#4n&z5b(|Cp(%8+SWXH`_NLh;eN9Z z+i>FgWQcH{IfFiIW5r_yk)>mKB=FZT%bwCGD!8YcLTF0q^^}YQj`fUJM)j;(!ykwSnuD=;AUdnIA{1#2%qUZ4@=_9R|F(~?vQ}jHJ zo#aHoiGULUCjw3coCr7(a3b*ijKJlr`@Zq6{AZ?jO|N5=03B- z$??A-^`+#<^(3Xm%QvLvi_cZJ zA9>Q-{&(-ne_W`WRax9we89W5^v_glGPi^*ugv#k<^PIXRivLo8t>X(Gg(Z$9?zw& z-^)y0@0~oEmA{qfPtq_p=y%+uMG@yZ7tK-o4k;y{-?uM{dUlQU#|UwJOL= zo}8bRPyH5u?*H;qE>?*#4c?Wd?=yPaPsjUu*OY!hnKQlVxX<|M>w{jqDesy~zFqv! zE~Y}RsDb>bL(knuUYBntlY87$*O_CW!=U}3U7+otEuc-H^`LgpGEf4v0OSMB2GxQp zKodcQppl?FP!1>qbnBKJ)W&2b~5T2OR-@2-*#L8}tU~70?FI8qf;RVo(^=1eyby z4ypuA0u_TsfrfzwfO>_3fc_X2wDqT32FmHKmpJb zpc$YlP${ScG#Zo-$_4cSxj@%$NDR(_z5pEq9R}?O?E-BFZ2@fptp~M(mVpwW1t1@2 zHmDX<0h$OZ1dRmcfpS0@pj+4F$S;G=f=+-w0UZSG1-%E_26`3rBItS0D$r8UB2Y7E zE~p+<4VnxZ4;lj+4jKgN2TBLsxF#_;4>}Dx4mtw*5VRZgHs}q|E1(UaHJ}xs#h@^# z2{Z>Z9aIUL1S$rN0u2KV0QCkX|0PF$74#M86zEgXA<#b1PS9JR*FZ0U)`3=oo(9E0 zL68Az06hjO2R#HT0F3|*0cC-Dfo@)v7+eH>3Hls#6m$Tz2lOszD`+!lBWNvXC8!M) z0R=!$fM$TIK&7A(&}dLTC>PWRwzBS_Vph z7Jz)9*`Qib1!y9u5Hu2$2g(6ufNouuBfktf3pxS%1auIz7xW%z8|YQgi=gL0t3XRZ zi$KkwxuAMbHE1$uJZKDPIA{>4A1EDk3Hls#6m$Tz2lOszD`+!lBWNvX zC8!M)0R=!$fM$TIK&7A(&}dLTC>PWRwzB zS_Vph7Jz)9*`Qib1!y9u5Hu2$2g(6u5bdBxdo_0-KlYoyuizII);r0GfD-{H0!{>+ z2sjaNBH%>8iGULUCjw3coCy4XBf#&kdIO{()qOWDUs%dJEu>B>CNDPOhhBD%X;1S6<(Y%opgr0M_$6{DaB`X_trNsI; zec0bkQWCet{ai=wUCSb+2sjaN zBH%>edmjN=FDUB+`PFMqg_cl#wUh;k{d9gFKiE+kVhJVd5c70io{Wa-ysSs$=P6E7 ze)V=T!ubxpxKP#-{_ZZ;%9>QAKGWqtu+(aUmVLAwtYxm2B4o{Chh9%8Ya7jHL^9&% zK2EYGagdc&MSAg~=ojjaNxwU_9WBN*leAB-Vw*|q=)Fzz_$aQXir!>4^JTg|dXrnq zO+We{x0(0oa(eU6%*%1;>i=g#)`8nAEYc6hWvLIzcB4DwWnF1iMa3iTA2&26TH^_K zagk@dr>LMfVP=b;89UZfG;Xw3-=Q)p;&FMGx|pw0~w@Q`zB>~qj*PG~{HSKe8 z{fK@GL3jP{>A2o8>lvsn6iE%=%I@lU-?Sg3?C1ZW={7*gI(n()Z>IfVCD)PYuMl*% z&O4I=(w%-J>D}U-B7LTw?j|~(QdHhUJu^w4O?MxOzu3=V`?MS-_b1UC+TLD&i1cnT zN|8%RpOZF3$vBpxXIaljrsJ${Q)(mWvuQjGw)HrF|zbWjOI|J(HAoO@klgg_!3K0QzX1F6o?1> zo}%t8cnyBg@I|A(HY3m)kG84#QC~P<_!Hr98@Z(946=-OF>MSs8!;cZK)o`IX*0`f zD~-y>ry8`(e(IdZ%WJDENKKm^7?oaK>YX}M8C5mYrgT-! zs;85cKiFy{VgbLR2+^0(7>j9NbE^Wwp#28quz4ebZg&^xy5m9DzHwlc^2FN0abF|J zc+`?DLcvzr)nK9Wv_|3qPjhR+voIQ27>LH(QdEtJAnj)n^lMf5lP=uFV>*i3gTYmIo49 zN6a{T0xf#zwD_qu$ys$+W61Ilrlx%1AXR3$Q;3y^25*?gBrb~Y4m=N{OO5XNR(JqCz)?pIi)5Lr25cnG8Fly&0ofks8190r;j|h$n&A> zn`F0_yvU2>o0Z}(^XVOWA1kpV6EjI(EWo-6xc$$nRS{c#dMIjvhs$KzN0 zW!~FCtA07vSpwhUFY<13PW6XFndKtwNCo02`M%`LI%!|#ec5G}h25UpN=-SseSO+c zB>rQdu|WJ&CB|NgZCRO>S)w~OjIulyr9X22<>xZ#yX9eh@2Ifk6=_Hp+Ojmq?%w~+ NO3PuW&B2yc{{frmLofgU literal 0 HcmV?d00001 diff --git a/big_sample.hex b/big_sample.hex new file mode 100644 index 0000000..d6fb082 --- /dev/null +++ b/big_sample.hex @@ -0,0 +1,1257 @@ +00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............ +00000010: 0300 3e00 0100 0000 8010 0000 0000 0000 ..>............. +00000020: 4000 0000 0000 0000 c846 0000 0000 0000 @........F...... +00000030: 0000 0000 4000 3800 0d00 4000 1f00 1e00 ....@.8...@..... +00000040: 0600 0000 0400 0000 4000 0000 0000 0000 ........@....... +00000050: 4000 0000 0000 0000 4000 0000 0000 0000 @.......@....... +00000060: d802 0000 0000 0000 d802 0000 0000 0000 ................ +00000070: 0800 0000 0000 0000 0300 0000 0400 0000 ................ +00000080: 1803 0000 0000 0000 1803 0000 0000 0000 ................ +00000090: 1803 0000 0000 0000 1c00 0000 0000 0000 ................ +000000a0: 1c00 0000 0000 0000 0100 0000 0000 0000 ................ +000000b0: 0100 0000 0400 0000 0000 0000 0000 0000 ................ +000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000000d0: 6006 0000 0000 0000 6006 0000 0000 0000 `.......`....... +000000e0: 0010 0000 0000 0000 0100 0000 0500 0000 ................ +000000f0: 0010 0000 0000 0000 0010 0000 0000 0000 ................ +00000100: 0010 0000 0000 0000 6d11 0000 0000 0000 ........m....... +00000110: 6d11 0000 0000 0000 0010 0000 0000 0000 m............... +00000120: 0100 0000 0400 0000 0030 0000 0000 0000 .........0...... +00000130: 0030 0000 0000 0000 0030 0000 0000 0000 .0.......0...... +00000140: f400 0000 0000 0000 f400 0000 0000 0000 ................ +00000150: 0010 0000 0000 0000 0100 0000 0600 0000 ................ +00000160: b03d 0000 0000 0000 b04d 0000 0000 0000 .=.......M...... +00000170: b04d 0000 0000 0000 6002 0000 0000 0000 .M......`....... +00000180: 6802 0000 0000 0000 0010 0000 0000 0000 h............... +00000190: 0200 0000 0600 0000 c03d 0000 0000 0000 .........=...... +000001a0: c04d 0000 0000 0000 c04d 0000 0000 0000 .M.......M...... +000001b0: f001 0000 0000 0000 f001 0000 0000 0000 ................ +000001c0: 0800 0000 0000 0000 0400 0000 0400 0000 ................ +000001d0: 3803 0000 0000 0000 3803 0000 0000 0000 8.......8....... +000001e0: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... +000001f0: 3000 0000 0000 0000 0800 0000 0000 0000 0............... +00000200: 0400 0000 0400 0000 6803 0000 0000 0000 ........h....... +00000210: 6803 0000 0000 0000 6803 0000 0000 0000 h.......h....... +00000220: 4400 0000 0000 0000 4400 0000 0000 0000 D.......D....... +00000230: 0400 0000 0000 0000 53e5 7464 0400 0000 ........S.td.... +00000240: 3803 0000 0000 0000 3803 0000 0000 0000 8.......8....... +00000250: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... +00000260: 3000 0000 0000 0000 0800 0000 0000 0000 0............... +00000270: 50e5 7464 0400 0000 1430 0000 0000 0000 P.td.....0...... +00000280: 1430 0000 0000 0000 1430 0000 0000 0000 .0.......0...... +00000290: 3400 0000 0000 0000 3400 0000 0000 0000 4.......4....... +000002a0: 0400 0000 0000 0000 51e5 7464 0600 0000 ........Q.td.... +000002b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000002c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000002d0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +000002e0: 52e5 7464 0400 0000 b03d 0000 0000 0000 R.td.....=...... +000002f0: b04d 0000 0000 0000 b04d 0000 0000 0000 .M.......M...... +00000300: 5002 0000 0000 0000 5002 0000 0000 0000 P.......P....... +00000310: 0100 0000 0000 0000 2f6c 6962 3634 2f6c ......../lib64/l +00000320: 642d 6c69 6e75 782d 7838 362d 3634 2e73 d-linux-x86-64.s +00000330: 6f2e 3200 0000 0000 0400 0000 2000 0000 o.2......... ... +00000340: 0500 0000 474e 5500 0200 00c0 0400 0000 ....GNU......... +00000350: 0300 0000 0000 0000 0280 00c0 0400 0000 ................ +00000360: 0100 0000 0000 0000 0400 0000 1400 0000 ................ +00000370: 0300 0000 474e 5500 47a8 f40e cc73 8953 ....GNU.G....s.S +00000380: c811 5eb0 672d 798b 2afe cd7b 0400 0000 ..^.g-y.*..{.... +00000390: 1000 0000 0100 0000 474e 5500 0000 0000 ........GNU..... +000003a0: 0300 0000 0200 0000 0000 0000 0000 0000 ................ +000003b0: 0200 0000 0700 0000 0100 0000 0600 0000 ................ +000003c0: 0000 8100 0000 0000 0700 0000 0000 0000 ................ +000003d0: d165 ce6d 0000 0000 0000 0000 0000 0000 .e.m............ +000003e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000003f0: 2700 0000 1200 0000 0000 0000 0000 0000 '............... +00000400: 0000 0000 0000 0000 1000 0000 1200 0000 ................ +00000410: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000420: 5000 0000 2000 0000 0000 0000 0000 0000 P... ........... +00000430: 0000 0000 0000 0000 2200 0000 1200 0000 ........"....... +00000440: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000450: 6c00 0000 2000 0000 0000 0000 0000 0000 l... ........... +00000460: 0000 0000 0000 0000 7b00 0000 2000 0000 ........{... ... +00000470: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000480: 0100 0000 2200 0000 0000 0000 0000 0000 ...."........... +00000490: 0000 0000 0000 0000 005f 5f63 7861 5f66 .........__cxa_f +000004a0: 696e 616c 697a 6500 5f5f 6c69 6263 5f73 inalize.__libc_s +000004b0: 7461 7274 5f6d 6169 6e00 7075 7473 0070 tart_main.puts.p +000004c0: 7574 6368 6172 006c 6962 632e 736f 2e36 utchar.libc.so.6 +000004d0: 0047 4c49 4243 5f32 2e33 3400 474c 4942 .GLIBC_2.34.GLIB +000004e0: 435f 322e 322e 3500 5f49 544d 5f64 6572 C_2.2.5._ITM_der +000004f0: 6567 6973 7465 7254 4d43 6c6f 6e65 5461 egisterTMCloneTa +00000500: 626c 6500 5f5f 676d 6f6e 5f73 7461 7274 ble.__gmon_start +00000510: 5f5f 005f 4954 4d5f 7265 6769 7374 6572 __._ITM_register +00000520: 544d 436c 6f6e 6554 6162 6c65 0000 0000 TMCloneTable.... +00000530: 0200 0300 0100 0200 0100 0100 0200 0000 ................ +00000540: 0100 0200 2f00 0000 1000 0000 0000 0000 ..../........... +00000550: b491 9606 0000 0300 3900 0000 1000 0000 ........9....... +00000560: 751a 6909 0000 0200 4400 0000 0000 0000 u.i.....D....... +00000570: b04d 0000 0000 0000 0800 0000 0000 0000 .M.............. +00000580: 6011 0000 0000 0000 b84d 0000 0000 0000 `........M...... +00000590: 0800 0000 0000 0000 2011 0000 0000 0000 ........ ....... +000005a0: 0850 0000 0000 0000 0800 0000 0000 0000 .P.............. +000005b0: 0850 0000 0000 0000 d84f 0000 0000 0000 .P.......O...... +000005c0: 0600 0000 0200 0000 0000 0000 0000 0000 ................ +000005d0: e04f 0000 0000 0000 0600 0000 0300 0000 .O.............. +000005e0: 0000 0000 0000 0000 e84f 0000 0000 0000 .........O...... +000005f0: 0600 0000 0500 0000 0000 0000 0000 0000 ................ +00000600: f04f 0000 0000 0000 0600 0000 0600 0000 .O.............. +00000610: 0000 0000 0000 0000 f84f 0000 0000 0000 .........O...... +00000620: 0600 0000 0700 0000 0000 0000 0000 0000 ................ +00000630: c84f 0000 0000 0000 0700 0000 0100 0000 .O.............. +00000640: 0000 0000 0000 0000 d04f 0000 0000 0000 .........O...... +00000650: 0700 0000 0400 0000 0000 0000 0000 0000 ................ +00000660: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000670: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000680: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000690: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000700: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000710: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000720: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000730: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000740: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000750: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000760: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000770: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000780: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000790: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000800: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000810: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000820: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000830: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000840: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000850: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000860: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000870: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000880: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000890: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000900: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000910: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000920: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000930: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000940: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000950: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000960: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000970: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000980: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000990: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000aa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ab0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ae0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000af0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ba0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000be0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ca0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ce0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000da0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000db0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000dc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000dd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000de0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000df0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ea0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000eb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ec0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ed0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ee0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ef0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001000: f30f 1efa 4883 ec08 488b 05d9 3f00 0048 ....H...H...?..H +00001010: 85c0 7402 ffd0 4883 c408 c300 0000 0000 ..t...H......... +00001020: ff35 923f 0000 f2ff 2593 3f00 000f 1f00 .5.?....%.?..... +00001030: f30f 1efa 6800 0000 00f2 e9e1 ffff ff90 ....h........... +00001040: f30f 1efa 6801 0000 00f2 e9d1 ffff ff90 ....h........... +00001050: f30f 1efa f2ff 259d 3f00 000f 1f44 0000 ......%.?....D.. +00001060: f30f 1efa f2ff 255d 3f00 000f 1f44 0000 ......%]?....D.. +00001070: f30f 1efa f2ff 2555 3f00 000f 1f44 0000 ......%U?....D.. +00001080: f30f 1efa 31ed 4989 d15e 4889 e248 83e4 ....1.I..^H..H.. +00001090: f050 5445 31c0 31c9 488d 3dca 0000 00ff .PTE1.1.H.=..... +000010a0: 1533 3f00 00f4 662e 0f1f 8400 0000 0000 .3?...f......... +000010b0: 488d 3d59 3f00 0048 8d05 523f 0000 4839 H.=Y?..H..R?..H9 +000010c0: f874 1548 8b05 163f 0000 4885 c074 09ff .t.H...?..H..t.. +000010d0: e00f 1f80 0000 0000 c30f 1f80 0000 0000 ................ +000010e0: 488d 3d29 3f00 0048 8d35 223f 0000 4829 H.=)?..H.5"?..H) +000010f0: fe48 89f0 48c1 ee3f 48c1 f803 4801 c648 .H..H..?H...H..H +00001100: d1fe 7414 488b 05e5 3e00 0048 85c0 7408 ..t.H...>..H..t. +00001110: ffe0 660f 1f44 0000 c30f 1f80 0000 0000 ..f..D.......... +00001120: f30f 1efa 803d e53e 0000 0075 2b55 4883 .....=.>...u+UH. +00001130: 3dc2 3e00 0000 4889 e574 0c48 8b3d c63e =.>...H..t.H.=.> +00001140: 0000 e809 ffff ffe8 64ff ffff c605 bd3e ........d......> +00001150: 0000 015d c30f 1f00 c30f 1f80 0000 0000 ...]............ +00001160: f30f 1efa e977 ffff fff3 0f1e fa55 4889 .....w.......UH. +00001170: e548 8d3d 8c1e 0000 e8f3 feff ffbf 2000 .H.=.......... . +00001180: 0000 e8d9 feff ffbf 2000 0000 e8cf feff ........ ....... +00001190: ffbf 2000 0000 e8c5 feff ffbf 2000 0000 .. ......... ... +000011a0: e8bb feff ffbf 2000 0000 e8b1 feff ffbf ...... ......... +000011b0: 2000 0000 e8a7 feff ffbf 2000 0000 e89d ......... ..... +000011c0: feff ffbf 2000 0000 e893 feff ffbf 2000 .... ......... . +000011d0: 0000 e889 feff ffbf 2000 0000 e87f feff ........ ....... +000011e0: ffbf 2000 0000 e875 feff ffbf 2000 0000 .. ....u.... ... +000011f0: e86b feff ffbf 2000 0000 e861 feff ffbf .k.... ....a.... +00001200: 2000 0000 e857 feff ffbf 2000 0000 e84d ....W.... ....M +00001210: feff ffbf 2000 0000 e843 feff ffbf 2000 .... ....C.... . +00001220: 0000 e839 feff ffbf 2000 0000 e82f feff ...9.... ..../.. +00001230: ffbf 2000 0000 e825 feff ffbf 2000 0000 .. ....%.... ... +00001240: e81b feff ffbf 2000 0000 e811 feff ffbf ...... ......... +00001250: 2000 0000 e807 feff ffbf 2000 0000 e8fd ......... ..... +00001260: fdff ffbf 2000 0000 e8f3 fdff ffbf 2000 .... ......... . +00001270: 0000 e8e9 fdff ffbf 2000 0000 e8df fdff ........ ....... +00001280: ffbf 2000 0000 e8d5 fdff ffbf 2000 0000 .. ......... ... +00001290: e8cb fdff ffbf 2000 0000 e8c1 fdff ffbf ...... ......... +000012a0: 2000 0000 e8b7 fdff ffbf 2000 0000 e8ad ......... ..... +000012b0: fdff ffbf 2000 0000 e8a3 fdff ffbf 2000 .... ......... . +000012c0: 0000 e899 fdff ffbf 2000 0000 e88f fdff ........ ....... +000012d0: ffbf 2000 0000 e885 fdff ffbf 2000 0000 .. ......... ... +000012e0: e87b fdff ffbf 2000 0000 e871 fdff ffbf .{.... ....q.... +000012f0: 2000 0000 e867 fdff ffbf 2000 0000 e85d ....g.... ....] +00001300: fdff ffbf 2000 0000 e853 fdff ffbf 2000 .... ....S.... . +00001310: 0000 e849 fdff ffbf 2000 0000 e83f fdff ...I.... ....?.. +00001320: ffbf 2000 0000 e835 fdff ffbf 2000 0000 .. ....5.... ... +00001330: e82b fdff ffbf 2000 0000 e821 fdff ffbf .+.... ....!.... +00001340: 2000 0000 e817 fdff ffbf 2000 0000 e80d ......... ..... +00001350: fdff ffbf 2000 0000 e803 fdff ffbf 2000 .... ......... . +00001360: 0000 e8f9 fcff ffbf 2000 0000 e8ef fcff ........ ....... +00001370: ffbf 2000 0000 e8e5 fcff ffbf 2000 0000 .. ......... ... +00001380: e8db fcff ffbf 2000 0000 e8d1 fcff ffbf ...... ......... +00001390: 2000 0000 e8c7 fcff ffbf 2000 0000 e8bd ......... ..... +000013a0: fcff ffbf 2000 0000 e8b3 fcff ffbf 2000 .... ......... . +000013b0: 0000 e8a9 fcff ffbf 2000 0000 e89f fcff ........ ....... +000013c0: ffbf 2000 0000 e895 fcff ffbf 2000 0000 .. ......... ... +000013d0: e88b fcff ffbf 2000 0000 e881 fcff ffbf ...... ......... +000013e0: 2000 0000 e877 fcff ffbf 2000 0000 e86d ....w.... ....m +000013f0: fcff ffbf 2000 0000 e863 fcff ffbf 2000 .... ....c.... . +00001400: 0000 e859 fcff ffbf 2000 0000 e84f fcff ...Y.... ....O.. +00001410: ffbf 2000 0000 e845 fcff ffbf 2000 0000 .. ....E.... ... +00001420: e83b fcff ffbf 2000 0000 e831 fcff ffbf .;.... ....1.... +00001430: 2000 0000 e827 fcff ffbf 2000 0000 e81d ....'.... ..... +00001440: fcff ffbf 2000 0000 e813 fcff ffbf 2000 .... ......... . +00001450: 0000 e809 fcff ffbf 2000 0000 e8ff fbff ........ ....... +00001460: ffbf 2000 0000 e8f5 fbff ffbf 2000 0000 .. ......... ... +00001470: e8eb fbff ffbf 2000 0000 e8e1 fbff ffbf ...... ......... +00001480: 2000 0000 e8d7 fbff ffbf 2000 0000 e8cd ......... ..... +00001490: fbff ffbf 2000 0000 e8c3 fbff ffbf 2000 .... ......... . +000014a0: 0000 e8b9 fbff ffbf 2000 0000 e8af fbff ........ ....... +000014b0: ffbf 2000 0000 e8a5 fbff ffbf 2000 0000 .. ......... ... +000014c0: e89b fbff ffbf 2000 0000 e891 fbff ffbf ...... ......... +000014d0: 2000 0000 e887 fbff ffbf 2000 0000 e87d ......... ....} +000014e0: fbff ffbf 2000 0000 e873 fbff ffbf 2000 .... ....s.... . +000014f0: 0000 e869 fbff ffbf 2000 0000 e85f fbff ...i.... ...._.. +00001500: ffbf 2000 0000 e855 fbff ffbf 2000 0000 .. ....U.... ... +00001510: e84b fbff ffbf 2000 0000 e841 fbff ffbf .K.... ....A.... +00001520: 2000 0000 e837 fbff ffbf 2000 0000 e82d ....7.... ....- +00001530: fbff ffbf 2000 0000 e823 fbff ffbf 2000 .... ....#.... . +00001540: 0000 e819 fbff ffbf 2000 0000 e80f fbff ........ ....... +00001550: ffbf 2000 0000 e805 fbff ffbf 2000 0000 .. ......... ... +00001560: e8fb faff ffbf 2000 0000 e8f1 faff ffbf ...... ......... +00001570: 2000 0000 e8e7 faff ffbf 2000 0000 e8dd ......... ..... +00001580: faff ffbf 2000 0000 e8d3 faff ffbf 2000 .... ......... . +00001590: 0000 e8c9 faff ffbf 2000 0000 e8bf faff ........ ....... +000015a0: ffbf 2000 0000 e8b5 faff ffbf 2000 0000 .. ......... ... +000015b0: e8ab faff ffbf 2000 0000 e8a1 faff ffbf ...... ......... +000015c0: 2000 0000 e897 faff ffbf 2000 0000 e88d ......... ..... +000015d0: faff ffbf 2000 0000 e883 faff ffbf 2000 .... ......... . +000015e0: 0000 e879 faff ffbf 2000 0000 e86f faff ...y.... ....o.. +000015f0: ffbf 2000 0000 e865 faff ffbf 2000 0000 .. ....e.... ... +00001600: e85b faff ffbf 2000 0000 e851 faff ffbf .[.... ....Q.... +00001610: 2000 0000 e847 faff ffbf 2000 0000 e83d ....G.... ....= +00001620: faff ffbf 2000 0000 e833 faff ffbf 2000 .... ....3.... . +00001630: 0000 e829 faff ffbf 2000 0000 e81f faff ...).... ....... +00001640: ffbf 2000 0000 e815 faff ffbf 2000 0000 .. ......... ... +00001650: e80b faff ffbf 2000 0000 e801 faff ffbf ...... ......... +00001660: 2000 0000 e8f7 f9ff ffbf 2000 0000 e8ed ......... ..... +00001670: f9ff ffbf 2000 0000 e8e3 f9ff ffbf 2000 .... ......... . +00001680: 0000 e8d9 f9ff ffbf 2000 0000 e8cf f9ff ........ ....... +00001690: ffbf 2000 0000 e8c5 f9ff ffbf 2000 0000 .. ......... ... +000016a0: e8bb f9ff ffbf 2000 0000 e8b1 f9ff ffbf ...... ......... +000016b0: 2000 0000 e8a7 f9ff ffbf 2000 0000 e89d ......... ..... +000016c0: f9ff ffbf 2000 0000 e893 f9ff ffbf 2000 .... ......... . +000016d0: 0000 e889 f9ff ffbf 2000 0000 e87f f9ff ........ ....... +000016e0: ffbf 2000 0000 e875 f9ff ffbf 2000 0000 .. ....u.... ... +000016f0: e86b f9ff ffbf 2000 0000 e861 f9ff ffbf .k.... ....a.... +00001700: 2000 0000 e857 f9ff ffbf 2000 0000 e84d ....W.... ....M +00001710: f9ff ffbf 2000 0000 e843 f9ff ffbf 2000 .... ....C.... . +00001720: 0000 e839 f9ff ffbf 2000 0000 e82f f9ff ...9.... ..../.. +00001730: ffbf 2000 0000 e825 f9ff ffbf 2000 0000 .. ....%.... ... +00001740: e81b f9ff ffbf 2000 0000 e811 f9ff ffbf ...... ......... +00001750: 2000 0000 e807 f9ff ffbf 2000 0000 e8fd ......... ..... +00001760: f8ff ffbf 2000 0000 e8f3 f8ff ffbf 2000 .... ......... . +00001770: 0000 e8e9 f8ff ffbf 2000 0000 e8df f8ff ........ ....... +00001780: ffbf 2000 0000 e8d5 f8ff ffbf 2000 0000 .. ......... ... +00001790: e8cb f8ff ffbf 2000 0000 e8c1 f8ff ffbf ...... ......... +000017a0: 2000 0000 e8b7 f8ff ffbf 2000 0000 e8ad ......... ..... +000017b0: f8ff ffbf 2000 0000 e8a3 f8ff ffbf 2000 .... ......... . +000017c0: 0000 e899 f8ff ffbf 2000 0000 e88f f8ff ........ ....... +000017d0: ffbf 2000 0000 e885 f8ff ffbf 2000 0000 .. ......... ... +000017e0: e87b f8ff ffbf 2000 0000 e871 f8ff ffbf .{.... ....q.... +000017f0: 2000 0000 e867 f8ff ffbf 2000 0000 e85d ....g.... ....] +00001800: f8ff ffbf 2000 0000 e853 f8ff ffbf 2000 .... ....S.... . +00001810: 0000 e849 f8ff ffbf 2000 0000 e83f f8ff ...I.... ....?.. +00001820: ffbf 2000 0000 e835 f8ff ffbf 2000 0000 .. ....5.... ... +00001830: e82b f8ff ffbf 2000 0000 e821 f8ff ffbf .+.... ....!.... +00001840: 2000 0000 e817 f8ff ffbf 2000 0000 e80d ......... ..... +00001850: f8ff ffbf 2000 0000 e803 f8ff ffbf 2000 .... ......... . +00001860: 0000 e8f9 f7ff ffbf 2000 0000 e8ef f7ff ........ ....... +00001870: ffbf 2000 0000 e8e5 f7ff ffbf 2000 0000 .. ......... ... +00001880: e8db f7ff ffbf 2000 0000 e8d1 f7ff ffbf ...... ......... +00001890: 2000 0000 e8c7 f7ff ffbf 2000 0000 e8bd ......... ..... +000018a0: f7ff ffbf 2000 0000 e8b3 f7ff ffbf 2000 .... ......... . +000018b0: 0000 e8a9 f7ff ffbf 2000 0000 e89f f7ff ........ ....... +000018c0: ffbf 2000 0000 e895 f7ff ffbf 2000 0000 .. ......... ... +000018d0: e88b f7ff ffbf 2000 0000 e881 f7ff ffbf ...... ......... +000018e0: 2000 0000 e877 f7ff ffbf 2000 0000 e86d ....w.... ....m +000018f0: f7ff ffbf 2000 0000 e863 f7ff ffbf 2000 .... ....c.... . +00001900: 0000 e859 f7ff ffbf 2000 0000 e84f f7ff ...Y.... ....O.. +00001910: ffbf 2000 0000 e845 f7ff ffbf 2000 0000 .. ....E.... ... +00001920: e83b f7ff ffbf 2000 0000 e831 f7ff ffbf .;.... ....1.... +00001930: 2000 0000 e827 f7ff ffbf 2000 0000 e81d ....'.... ..... +00001940: f7ff ffbf 2000 0000 e813 f7ff ffbf 2000 .... ......... . +00001950: 0000 e809 f7ff ffbf 2000 0000 e8ff f6ff ........ ....... +00001960: ffbf 2000 0000 e8f5 f6ff ffbf 2000 0000 .. ......... ... +00001970: e8eb f6ff ffbf 2000 0000 e8e1 f6ff ffbf ...... ......... +00001980: 2000 0000 e8d7 f6ff ffbf 2000 0000 e8cd ......... ..... +00001990: f6ff ffbf 2000 0000 e8c3 f6ff ffbf 2000 .... ......... . +000019a0: 0000 e8b9 f6ff ffbf 2000 0000 e8af f6ff ........ ....... +000019b0: ffbf 2000 0000 e8a5 f6ff ffbf 2000 0000 .. ......... ... +000019c0: e89b f6ff ffbf 2000 0000 e891 f6ff ffbf ...... ......... +000019d0: 2000 0000 e887 f6ff ffbf 2000 0000 e87d ......... ....} +000019e0: f6ff ffbf 2000 0000 e873 f6ff ffbf 2000 .... ....s.... . +000019f0: 0000 e869 f6ff ffbf 2000 0000 e85f f6ff ...i.... ...._.. +00001a00: ffbf 2000 0000 e855 f6ff ffbf 2000 0000 .. ....U.... ... +00001a10: e84b f6ff ffbf 2000 0000 e841 f6ff ffbf .K.... ....A.... +00001a20: 2000 0000 e837 f6ff ffbf 2000 0000 e82d ....7.... ....- +00001a30: f6ff ffbf 2000 0000 e823 f6ff ffbf 2000 .... ....#.... . +00001a40: 0000 e819 f6ff ffbf 2000 0000 e80f f6ff ........ ....... +00001a50: ffbf 2000 0000 e805 f6ff ffbf 2000 0000 .. ......... ... +00001a60: e8fb f5ff ffbf 2000 0000 e8f1 f5ff ffbf ...... ......... +00001a70: 2000 0000 e8e7 f5ff ffbf 2000 0000 e8dd ......... ..... +00001a80: f5ff ffbf 2000 0000 e8d3 f5ff ffbf 2000 .... ......... . +00001a90: 0000 e8c9 f5ff ffbf 2000 0000 e8bf f5ff ........ ....... +00001aa0: ffbf 2000 0000 e8b5 f5ff ffbf 2000 0000 .. ......... ... +00001ab0: e8ab f5ff ffbf 2000 0000 e8a1 f5ff ffbf ...... ......... +00001ac0: 2000 0000 e897 f5ff ffbf 2000 0000 e88d ......... ..... +00001ad0: f5ff ffbf 2000 0000 e883 f5ff ffbf 2000 .... ......... . +00001ae0: 0000 e879 f5ff ffbf 2000 0000 e86f f5ff ...y.... ....o.. +00001af0: ffbf 2000 0000 e865 f5ff ffbf 2000 0000 .. ....e.... ... +00001b00: e85b f5ff ffbf 2000 0000 e851 f5ff ffbf .[.... ....Q.... +00001b10: 2000 0000 e847 f5ff ffbf 2000 0000 e83d ....G.... ....= +00001b20: f5ff ffbf 2000 0000 e833 f5ff ffbf 2000 .... ....3.... . +00001b30: 0000 e829 f5ff ffbf 2000 0000 e81f f5ff ...).... ....... +00001b40: ffbf 2000 0000 e815 f5ff ffbf 2000 0000 .. ......... ... +00001b50: e80b f5ff ffbf 2000 0000 e801 f5ff ffbf ...... ......... +00001b60: 2000 0000 e8f7 f4ff ffbf 2000 0000 e8ed ......... ..... +00001b70: f4ff ffbf 2000 0000 e8e3 f4ff ffbf 2000 .... ......... . +00001b80: 0000 e8d9 f4ff ffbf 2000 0000 e8cf f4ff ........ ....... +00001b90: ffbf 2000 0000 e8c5 f4ff ffbf 2000 0000 .. ......... ... +00001ba0: e8bb f4ff ffbf 2000 0000 e8b1 f4ff ffbf ...... ......... +00001bb0: 2000 0000 e8a7 f4ff ffbf 2000 0000 e89d ......... ..... +00001bc0: f4ff ffbf 2000 0000 e893 f4ff ffbf 2000 .... ......... . +00001bd0: 0000 e889 f4ff ffbf 2000 0000 e87f f4ff ........ ....... +00001be0: ffbf 2000 0000 e875 f4ff ffbf 2000 0000 .. ....u.... ... +00001bf0: e86b f4ff ffbf 2000 0000 e861 f4ff ffbf .k.... ....a.... +00001c00: 2000 0000 e857 f4ff ffbf 2000 0000 e84d ....W.... ....M +00001c10: f4ff ffbf 2000 0000 e843 f4ff ffbf 2000 .... ....C.... . +00001c20: 0000 e839 f4ff ffbf 2000 0000 e82f f4ff ...9.... ..../.. +00001c30: ffbf 2000 0000 e825 f4ff ffbf 2000 0000 .. ....%.... ... +00001c40: e81b f4ff ffbf 2000 0000 e811 f4ff ffbf ...... ......... +00001c50: 2000 0000 e807 f4ff ffbf 2000 0000 e8fd ......... ..... +00001c60: f3ff ffbf 2000 0000 e8f3 f3ff ffbf 2000 .... ......... . +00001c70: 0000 e8e9 f3ff ffbf 2000 0000 e8df f3ff ........ ....... +00001c80: ffbf 2000 0000 e8d5 f3ff ffbf 2000 0000 .. ......... ... +00001c90: e8cb f3ff ffbf 2000 0000 e8c1 f3ff ffbf ...... ......... +00001ca0: 2000 0000 e8b7 f3ff ffbf 2000 0000 e8ad ......... ..... +00001cb0: f3ff ffbf 2000 0000 e8a3 f3ff ffbf 2000 .... ......... . +00001cc0: 0000 e899 f3ff ffbf 2000 0000 e88f f3ff ........ ....... +00001cd0: ffbf 2000 0000 e885 f3ff ffbf 2000 0000 .. ......... ... +00001ce0: e87b f3ff ffbf 2000 0000 e871 f3ff ffbf .{.... ....q.... +00001cf0: 2000 0000 e867 f3ff ffbf 2000 0000 e85d ....g.... ....] +00001d00: f3ff ffbf 2000 0000 e853 f3ff ffbf 2000 .... ....S.... . +00001d10: 0000 e849 f3ff ffbf 2000 0000 e83f f3ff ...I.... ....?.. +00001d20: ffbf 2000 0000 e835 f3ff ffbf 2000 0000 .. ....5.... ... +00001d30: e82b f3ff ffbf 2000 0000 e821 f3ff ffbf .+.... ....!.... +00001d40: 2000 0000 e817 f3ff ffbf 2000 0000 e80d ......... ..... +00001d50: f3ff ffbf 2000 0000 e803 f3ff ffbf 2000 .... ......... . +00001d60: 0000 e8f9 f2ff ffbf 2000 0000 e8ef f2ff ........ ....... +00001d70: ffbf 2000 0000 e8e5 f2ff ffbf 2000 0000 .. ......... ... +00001d80: e8db f2ff ffbf 2000 0000 e8d1 f2ff ffbf ...... ......... +00001d90: 2000 0000 e8c7 f2ff ffbf 2000 0000 e8bd ......... ..... +00001da0: f2ff ffbf 2000 0000 e8b3 f2ff ffbf 2000 .... ......... . +00001db0: 0000 e8a9 f2ff ffbf 2000 0000 e89f f2ff ........ ....... +00001dc0: ffbf 2000 0000 e895 f2ff ffbf 2000 0000 .. ......... ... +00001dd0: e88b f2ff ffbf 2000 0000 e881 f2ff ffbf ...... ......... +00001de0: 2000 0000 e877 f2ff ffbf 2000 0000 e86d ....w.... ....m +00001df0: f2ff ffbf 2000 0000 e863 f2ff ffbf 2000 .... ....c.... . +00001e00: 0000 e859 f2ff ffbf 2000 0000 e84f f2ff ...Y.... ....O.. +00001e10: ffbf 2000 0000 e845 f2ff ffbf 2000 0000 .. ....E.... ... +00001e20: e83b f2ff ffbf 2000 0000 e831 f2ff ffbf .;.... ....1.... +00001e30: 2000 0000 e827 f2ff ffbf 2000 0000 e81d ....'.... ..... +00001e40: f2ff ffbf 2000 0000 e813 f2ff ffbf 2000 .... ......... . +00001e50: 0000 e809 f2ff ffbf 2000 0000 e8ff f1ff ........ ....... +00001e60: ffbf 2000 0000 e8f5 f1ff ffbf 2000 0000 .. ......... ... +00001e70: e8eb f1ff ffbf 2000 0000 e8e1 f1ff ffbf ...... ......... +00001e80: 2000 0000 e8d7 f1ff ffbf 2000 0000 e8cd ......... ..... +00001e90: f1ff ffbf 2000 0000 e8c3 f1ff ffbf 2000 .... ......... . +00001ea0: 0000 e8b9 f1ff ffbf 2000 0000 e8af f1ff ........ ....... +00001eb0: ffbf 2000 0000 e8a5 f1ff ffbf 2000 0000 .. ......... ... +00001ec0: e89b f1ff ffbf 2000 0000 e891 f1ff ffbf ...... ......... +00001ed0: 2000 0000 e887 f1ff ffbf 2000 0000 e87d ......... ....} +00001ee0: f1ff ffbf 2000 0000 e873 f1ff ffbf 2000 .... ....s.... . +00001ef0: 0000 e869 f1ff ffbf 2000 0000 e85f f1ff ...i.... ...._.. +00001f00: ffbf 2000 0000 e855 f1ff ffbf 2000 0000 .. ....U.... ... +00001f10: e84b f1ff ffbf 2000 0000 e841 f1ff ffbf .K.... ....A.... +00001f20: 2000 0000 e837 f1ff ffbf 2000 0000 e82d ....7.... ....- +00001f30: f1ff ffbf 2000 0000 e823 f1ff ffbf 2000 .... ....#.... . +00001f40: 0000 e819 f1ff ffbf 2000 0000 e80f f1ff ........ ....... +00001f50: ffbf 2000 0000 e805 f1ff ffbf 2000 0000 .. ......... ... +00001f60: e8fb f0ff ffbf 2000 0000 e8f1 f0ff ffbf ...... ......... +00001f70: 2000 0000 e8e7 f0ff ffbf 2000 0000 e8dd ......... ..... +00001f80: f0ff ffbf 2000 0000 e8d3 f0ff ffbf 2000 .... ......... . +00001f90: 0000 e8c9 f0ff ffbf 2000 0000 e8bf f0ff ........ ....... +00001fa0: ffbf 2000 0000 e8b5 f0ff ffbf 2000 0000 .. ......... ... +00001fb0: e8ab f0ff ffbf 2000 0000 e8a1 f0ff ffbf ...... ......... +00001fc0: 2000 0000 e897 f0ff ffbf 2000 0000 e88d ......... ..... +00001fd0: f0ff ffbf 2000 0000 e883 f0ff ffbf 2000 .... ......... . +00001fe0: 0000 e879 f0ff ffbf 2000 0000 e86f f0ff ...y.... ....o.. +00001ff0: ffbf 2000 0000 e865 f0ff ffbf 2000 0000 .. ....e.... ... +00002000: e85b f0ff ffbf 2000 0000 e851 f0ff ffbf .[.... ....Q.... +00002010: 2000 0000 e847 f0ff ffbf 2000 0000 e83d ....G.... ....= +00002020: f0ff ffbf 2000 0000 e833 f0ff ffbf 2000 .... ....3.... . +00002030: 0000 e829 f0ff ffbf 2000 0000 e81f f0ff ...).... ....... +00002040: ffbf 2000 0000 e815 f0ff ffbf 2000 0000 .. ......... ... +00002050: e80b f0ff ffbf 2000 0000 e801 f0ff ffbf ...... ......... +00002060: 2000 0000 e8f7 efff ffbf 2000 0000 e8ed ......... ..... +00002070: efff ffbf 2000 0000 e8e3 efff ffbf 2000 .... ......... . +00002080: 0000 e8d9 efff ffbf 2000 0000 e8cf efff ........ ....... +00002090: ffbf 2000 0000 e8c5 efff ffbf 2000 0000 .. ......... ... +000020a0: e8bb efff ffbf 2000 0000 e8b1 efff ffbf ...... ......... +000020b0: 2000 0000 e8a7 efff ffbf 2000 0000 e89d ......... ..... +000020c0: efff ffbf 2000 0000 e893 efff ffbf 2000 .... ......... . +000020d0: 0000 e889 efff ffbf 2000 0000 e87f efff ........ ....... +000020e0: ffbf 2000 0000 e875 efff ffbf 2000 0000 .. ....u.... ... +000020f0: e86b efff ffbf 2000 0000 e861 efff ffbf .k.... ....a.... +00002100: 2000 0000 e857 efff ffbf 2000 0000 e84d ....W.... ....M +00002110: efff ffbf 2000 0000 e843 efff ffbf 2000 .... ....C.... . +00002120: 0000 e839 efff ffbf 2000 0000 e82f efff ...9.... ..../.. +00002130: ffbf 2000 0000 e825 efff ffbf 2000 0000 .. ....%.... ... +00002140: e81b efff ffbf 2000 0000 e811 efff ffbf ...... ......... +00002150: 2000 0000 e807 efff ffb8 0000 0000 5dc3 .............]. +00002160: f30f 1efa 4883 ec08 4883 c408 c300 0000 ....H...H....... +00002170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002190: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002200: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002210: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002220: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002230: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002240: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002250: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002260: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002270: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002280: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002290: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002300: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002310: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002320: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002330: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002340: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002350: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002360: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002370: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002380: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002390: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002400: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002410: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002420: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002430: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002440: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002450: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002460: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002470: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002480: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002490: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002500: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002510: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002520: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002530: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002540: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002550: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002560: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002570: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002580: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002590: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002600: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002610: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002620: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002630: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002640: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002650: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002660: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002670: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002680: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002690: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002700: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002710: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002720: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002730: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002740: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002750: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002760: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002770: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002780: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002790: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002800: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002810: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002820: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002830: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002840: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002850: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002860: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002870: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002880: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002890: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002900: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002910: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002920: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002930: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002940: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002950: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002960: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002970: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002980: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002990: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002aa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ab0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ae0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002af0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ba0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002be0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ca0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ce0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002da0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002db0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002dc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002dd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002de0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002df0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002e90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ea0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002eb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ec0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ed0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ee0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ef0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003000: 0100 0200 4865 6c6c 6f2c 2057 6f72 6c64 ....Hello, World +00003010: 2100 0000 011b 033b 3000 0000 0500 0000 !......;0....... +00003020: 0ce0 ffff 6400 0000 3ce0 ffff 8c00 0000 ....d...<....... +00003030: 4ce0 ffff a400 0000 6ce0 ffff 4c00 0000 L.......l...L... +00003040: 55e1 ffff bc00 0000 1400 0000 0000 0000 U............... +00003050: 017a 5200 0178 1001 1b0c 0708 9001 0000 .zR..x.......... +00003060: 1400 0000 1c00 0000 18e0 ffff 2600 0000 ............&... +00003070: 0044 0710 0000 0000 2400 0000 3400 0000 .D......$...4... +00003080: a0df ffff 3000 0000 000e 1046 0e18 4a0f ....0......F..J. +00003090: 0b77 0880 003f 1a3a 2a33 2422 0000 0000 .w...?.:*3$".... +000030a0: 1400 0000 5c00 0000 a8df ffff 1000 0000 ....\........... +000030b0: 0000 0000 0000 0000 1400 0000 7400 0000 ............t... +000030c0: a0df ffff 2000 0000 0000 0000 0000 0000 .... ........... +000030d0: 1c00 0000 8c00 0000 91e0 ffff f70f 0000 ................ +000030e0: 0045 0e10 8602 430d 0603 ee0f 0c07 0800 .E....C......... +000030f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003190: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000031a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000031b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000031c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000031d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000031e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000031f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003200: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003210: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003220: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003230: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003240: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003250: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003260: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003270: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003280: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003290: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000032a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000032b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000032c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000032d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000032e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000032f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003300: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003310: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003320: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003330: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003340: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003350: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003360: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003370: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003380: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003390: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003400: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003410: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003420: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003430: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003440: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003450: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003460: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003470: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003480: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003490: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000034a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000034b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000034c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000034d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000034e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000034f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003500: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003510: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003520: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003530: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003540: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003550: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003560: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003570: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003580: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003590: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000035a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000035b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000035c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000035d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000035e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000035f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003600: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003610: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003620: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003630: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003640: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003650: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003660: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003670: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003680: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003690: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003700: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003710: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003720: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003730: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003740: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003750: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003760: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003770: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003780: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003790: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000037a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000037b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000037c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000037d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000037e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000037f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003800: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003810: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003820: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003830: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003840: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003850: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003860: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003870: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003880: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003890: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000038a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000038b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000038c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000038d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000038e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000038f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003900: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003910: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003920: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003930: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003940: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003950: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003960: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003970: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003980: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003990: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000039a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000039b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000039c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000039d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000039e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000039f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003a90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003aa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ab0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ae0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003af0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ba0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003bb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003bc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003bd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003be0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003bf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003c90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ca0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003cb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003cc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003cd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ce0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003cf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003d90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003da0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003db0: 6011 0000 0000 0000 2011 0000 0000 0000 `....... ....... +00003dc0: 0100 0000 0000 0000 2f00 0000 0000 0000 ......../....... +00003dd0: 0c00 0000 0000 0000 0010 0000 0000 0000 ................ +00003de0: 0d00 0000 0000 0000 6021 0000 0000 0000 ........`!...... +00003df0: 1900 0000 0000 0000 b04d 0000 0000 0000 .........M...... +00003e00: 1b00 0000 0000 0000 0800 0000 0000 0000 ................ +00003e10: 1a00 0000 0000 0000 b84d 0000 0000 0000 .........M...... +00003e20: 1c00 0000 0000 0000 0800 0000 0000 0000 ................ +00003e30: f5fe ff6f 0000 0000 b003 0000 0000 0000 ...o............ +00003e40: 0500 0000 0000 0000 9804 0000 0000 0000 ................ +00003e50: 0600 0000 0000 0000 d803 0000 0000 0000 ................ +00003e60: 0a00 0000 0000 0000 9500 0000 0000 0000 ................ +00003e70: 0b00 0000 0000 0000 1800 0000 0000 0000 ................ +00003e80: 1500 0000 0000 0000 0000 0000 0000 0000 ................ +00003e90: 0300 0000 0000 0000 b04f 0000 0000 0000 .........O...... +00003ea0: 0200 0000 0000 0000 3000 0000 0000 0000 ........0....... +00003eb0: 1400 0000 0000 0000 0700 0000 0000 0000 ................ +00003ec0: 1700 0000 0000 0000 3006 0000 0000 0000 ........0....... +00003ed0: 0700 0000 0000 0000 7005 0000 0000 0000 ........p....... +00003ee0: 0800 0000 0000 0000 c000 0000 0000 0000 ................ +00003ef0: 0900 0000 0000 0000 1800 0000 0000 0000 ................ +00003f00: 1e00 0000 0000 0000 0800 0000 0000 0000 ................ +00003f10: fbff ff6f 0000 0000 0100 0008 0000 0000 ...o............ +00003f20: feff ff6f 0000 0000 4005 0000 0000 0000 ...o....@....... +00003f30: ffff ff6f 0000 0000 0100 0000 0000 0000 ...o............ +00003f40: f0ff ff6f 0000 0000 2e05 0000 0000 0000 ...o............ +00003f50: f9ff ff6f 0000 0000 0300 0000 0000 0000 ...o............ +00003f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003fb0: c04d 0000 0000 0000 0000 0000 0000 0000 .M.............. +00003fc0: 0000 0000 0000 0000 3010 0000 0000 0000 ........0....... +00003fd0: 4010 0000 0000 0000 0000 0000 0000 0000 @............... +00003fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004000: 0000 0000 0000 0000 0850 0000 0000 0000 .........P...... +00004010: 4743 433a 2028 5562 756e 7475 2031 302e GCC: (Ubuntu 10. +00004020: 352e 302d 3175 6275 6e74 7531 7e32 322e 5.0-1ubuntu1~22. +00004030: 3034 2920 3130 2e35 2e30 0000 0000 0000 04) 10.5.0...... +00004040: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004050: 0000 0000 0000 0000 0100 0000 0400 f1ff ................ +00004060: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004070: 0900 0000 0100 0400 8c03 0000 0000 0000 ................ +00004080: 2000 0000 0000 0000 1300 0000 0400 f1ff ............... +00004090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000040a0: 1e00 0000 0200 1000 b010 0000 0000 0000 ................ +000040b0: 0000 0000 0000 0000 2000 0000 0200 1000 ........ ....... +000040c0: e010 0000 0000 0000 0000 0000 0000 0000 ................ +000040d0: 3300 0000 0200 1000 2011 0000 0000 0000 3....... ....... +000040e0: 0000 0000 0000 0000 4900 0000 0100 1a00 ........I....... +000040f0: 1050 0000 0000 0000 0100 0000 0000 0000 .P.............. +00004100: 5500 0000 0100 1600 b84d 0000 0000 0000 U........M...... +00004110: 0000 0000 0000 0000 7c00 0000 0200 1000 ........|....... +00004120: 6011 0000 0000 0000 0000 0000 0000 0000 `............... +00004130: 8800 0000 0100 1500 b04d 0000 0000 0000 .........M...... +00004140: 0000 0000 0000 0000 a700 0000 0400 f1ff ................ +00004150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004160: 1300 0000 0400 f1ff 0000 0000 0000 0000 ................ +00004170: 0000 0000 0000 0000 b400 0000 0100 1400 ................ +00004180: f030 0000 0000 0000 0000 0000 0000 0000 .0.............. +00004190: 0000 0000 0400 f1ff 0000 0000 0000 0000 ................ +000041a0: 0000 0000 0000 0000 c200 0000 0100 1700 ................ +000041b0: c04d 0000 0000 0000 0000 0000 0000 0000 .M.............. +000041c0: cb00 0000 0000 1300 1430 0000 0000 0000 .........0...... +000041d0: 0000 0000 0000 0000 de00 0000 0100 1800 ................ +000041e0: b04f 0000 0000 0000 0000 0000 0000 0000 .O.............. +000041f0: f400 0000 1200 0000 0000 0000 0000 0000 ................ +00004200: 0000 0000 0000 0000 0801 0000 1200 0000 ................ +00004210: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004220: 2501 0000 2000 0000 0000 0000 0000 0000 %... ........... +00004230: 0000 0000 0000 0000 6101 0000 2000 1900 ........a... ... +00004240: 0050 0000 0000 0000 0000 0000 0000 0000 .P.............. +00004250: 4101 0000 1200 0000 0000 0000 0000 0000 A............... +00004260: 0000 0000 0000 0000 5201 0000 1000 1900 ........R....... +00004270: 1050 0000 0000 0000 0000 0000 0000 0000 .P.............. +00004280: 5901 0000 1202 1100 6021 0000 0000 0000 Y.......`!...... +00004290: 0000 0000 0000 0000 5f01 0000 1000 1900 ........_....... +000042a0: 0050 0000 0000 0000 0000 0000 0000 0000 .P.............. +000042b0: 6c01 0000 2000 0000 0000 0000 0000 0000 l... ........... +000042c0: 0000 0000 0000 0000 7b01 0000 1102 1900 ........{....... +000042d0: 0850 0000 0000 0000 0000 0000 0000 0000 .P.............. +000042e0: 8801 0000 1100 1200 0030 0000 0000 0000 .........0...... +000042f0: 0400 0000 0000 0000 9701 0000 1000 1a00 ................ +00004300: 1850 0000 0000 0000 0000 0000 0000 0000 .P.............. +00004310: 6501 0000 1200 1000 8010 0000 0000 0000 e............... +00004320: 2600 0000 0000 0000 9c01 0000 1000 1a00 &............... +00004330: 1050 0000 0000 0000 0000 0000 0000 0000 .P.............. +00004340: a801 0000 1200 1000 6911 0000 0000 0000 ........i....... +00004350: f70f 0000 0000 0000 ad01 0000 1102 1900 ................ +00004360: 1050 0000 0000 0000 0000 0000 0000 0000 .P.............. +00004370: b901 0000 2000 0000 0000 0000 0000 0000 .... ........... +00004380: 0000 0000 0000 0000 d301 0000 2200 0000 ............"... +00004390: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000043a0: ee01 0000 1202 0c00 0010 0000 0000 0000 ................ +000043b0: 0000 0000 0000 0000 0053 6372 7431 2e6f .........Scrt1.o +000043c0: 005f 5f61 6269 5f74 6167 0063 7274 7374 .__abi_tag.crtst +000043d0: 7566 662e 6300 6465 7265 6769 7374 6572 uff.c.deregister +000043e0: 5f74 6d5f 636c 6f6e 6573 005f 5f64 6f5f _tm_clones.__do_ +000043f0: 676c 6f62 616c 5f64 746f 7273 5f61 7578 global_dtors_aux +00004400: 0063 6f6d 706c 6574 6564 2e30 005f 5f64 .completed.0.__d +00004410: 6f5f 676c 6f62 616c 5f64 746f 7273 5f61 o_global_dtors_a +00004420: 7578 5f66 696e 695f 6172 7261 795f 656e ux_fini_array_en +00004430: 7472 7900 6672 616d 655f 6475 6d6d 7900 try.frame_dummy. +00004440: 5f5f 6672 616d 655f 6475 6d6d 795f 696e __frame_dummy_in +00004450: 6974 5f61 7272 6179 5f65 6e74 7279 0062 it_array_entry.b +00004460: 6967 5f73 616d 706c 652e 6300 5f5f 4652 ig_sample.c.__FR +00004470: 414d 455f 454e 445f 5f00 5f44 594e 414d AME_END__._DYNAM +00004480: 4943 005f 5f47 4e55 5f45 485f 4652 414d IC.__GNU_EH_FRAM +00004490: 455f 4844 5200 5f47 4c4f 4241 4c5f 4f46 E_HDR._GLOBAL_OF +000044a0: 4653 4554 5f54 4142 4c45 5f00 7075 7463 FSET_TABLE_.putc +000044b0: 6861 7240 474c 4942 435f 322e 322e 3500 har@GLIBC_2.2.5. +000044c0: 5f5f 6c69 6263 5f73 7461 7274 5f6d 6169 __libc_start_mai +000044d0: 6e40 474c 4942 435f 322e 3334 005f 4954 n@GLIBC_2.34._IT +000044e0: 4d5f 6465 7265 6769 7374 6572 544d 436c M_deregisterTMCl +000044f0: 6f6e 6554 6162 6c65 0070 7574 7340 474c oneTable.puts@GL +00004500: 4942 435f 322e 322e 3500 5f65 6461 7461 IBC_2.2.5._edata +00004510: 005f 6669 6e69 005f 5f64 6174 615f 7374 ._fini.__data_st +00004520: 6172 7400 5f5f 676d 6f6e 5f73 7461 7274 art.__gmon_start +00004530: 5f5f 005f 5f64 736f 5f68 616e 646c 6500 __.__dso_handle. +00004540: 5f49 4f5f 7374 6469 6e5f 7573 6564 005f _IO_stdin_used._ +00004550: 656e 6400 5f5f 6273 735f 7374 6172 7400 end.__bss_start. +00004560: 6d61 696e 005f 5f54 4d43 5f45 4e44 5f5f main.__TMC_END__ +00004570: 005f 4954 4d5f 7265 6769 7374 6572 544d ._ITM_registerTM +00004580: 436c 6f6e 6554 6162 6c65 005f 5f63 7861 CloneTable.__cxa +00004590: 5f66 696e 616c 697a 6540 474c 4942 435f _finalize@GLIBC_ +000045a0: 322e 322e 3500 5f69 6e69 7400 002e 7379 2.2.5._init...sy +000045b0: 6d74 6162 002e 7374 7274 6162 002e 7368 mtab..strtab..sh +000045c0: 7374 7274 6162 002e 696e 7465 7270 002e strtab..interp.. +000045d0: 6e6f 7465 2e67 6e75 2e70 726f 7065 7274 note.gnu.propert +000045e0: 7900 2e6e 6f74 652e 676e 752e 6275 696c y..note.gnu.buil +000045f0: 642d 6964 002e 6e6f 7465 2e41 4249 2d74 d-id..note.ABI-t +00004600: 6167 002e 676e 752e 6861 7368 002e 6479 ag..gnu.hash..dy +00004610: 6e73 796d 002e 6479 6e73 7472 002e 676e nsym..dynstr..gn +00004620: 752e 7665 7273 696f 6e00 2e67 6e75 2e76 u.version..gnu.v +00004630: 6572 7369 6f6e 5f72 002e 7265 6c61 2e64 ersion_r..rela.d +00004640: 796e 002e 7265 6c61 2e70 6c74 002e 696e yn..rela.plt..in +00004650: 6974 002e 706c 742e 676f 7400 2e70 6c74 it..plt.got..plt +00004660: 2e73 6563 002e 7465 7874 002e 6669 6e69 .sec..text..fini +00004670: 002e 726f 6461 7461 002e 6568 5f66 7261 ..rodata..eh_fra +00004680: 6d65 5f68 6472 002e 6568 5f66 7261 6d65 me_hdr..eh_frame +00004690: 002e 696e 6974 5f61 7272 6179 002e 6669 ..init_array..fi +000046a0: 6e69 5f61 7272 6179 002e 6479 6e61 6d69 ni_array..dynami +000046b0: 6300 2e64 6174 6100 2e62 7373 002e 636f c..data..bss..co +000046c0: 6d6d 656e 7400 0000 0000 0000 0000 0000 mment........... +000046d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000046e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000046f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004700: 0000 0000 0000 0000 1b00 0000 0100 0000 ................ +00004710: 0200 0000 0000 0000 1803 0000 0000 0000 ................ +00004720: 1803 0000 0000 0000 1c00 0000 0000 0000 ................ +00004730: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00004740: 0000 0000 0000 0000 2300 0000 0700 0000 ........#....... +00004750: 0200 0000 0000 0000 3803 0000 0000 0000 ........8....... +00004760: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... +00004770: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00004780: 0000 0000 0000 0000 3600 0000 0700 0000 ........6....... +00004790: 0200 0000 0000 0000 6803 0000 0000 0000 ........h....... +000047a0: 6803 0000 0000 0000 2400 0000 0000 0000 h.......$....... +000047b0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +000047c0: 0000 0000 0000 0000 4900 0000 0700 0000 ........I....... +000047d0: 0200 0000 0000 0000 8c03 0000 0000 0000 ................ +000047e0: 8c03 0000 0000 0000 2000 0000 0000 0000 ........ ....... +000047f0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00004800: 0000 0000 0000 0000 5700 0000 f6ff ff6f ........W......o +00004810: 0200 0000 0000 0000 b003 0000 0000 0000 ................ +00004820: b003 0000 0000 0000 2400 0000 0000 0000 ........$....... +00004830: 0600 0000 0000 0000 0800 0000 0000 0000 ................ +00004840: 0000 0000 0000 0000 6100 0000 0b00 0000 ........a....... +00004850: 0200 0000 0000 0000 d803 0000 0000 0000 ................ +00004860: d803 0000 0000 0000 c000 0000 0000 0000 ................ +00004870: 0700 0000 0100 0000 0800 0000 0000 0000 ................ +00004880: 1800 0000 0000 0000 6900 0000 0300 0000 ........i....... +00004890: 0200 0000 0000 0000 9804 0000 0000 0000 ................ +000048a0: 9804 0000 0000 0000 9500 0000 0000 0000 ................ +000048b0: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +000048c0: 0000 0000 0000 0000 7100 0000 ffff ff6f ........q......o +000048d0: 0200 0000 0000 0000 2e05 0000 0000 0000 ................ +000048e0: 2e05 0000 0000 0000 1000 0000 0000 0000 ................ +000048f0: 0600 0000 0000 0000 0200 0000 0000 0000 ................ +00004900: 0200 0000 0000 0000 7e00 0000 feff ff6f ........~......o +00004910: 0200 0000 0000 0000 4005 0000 0000 0000 ........@....... +00004920: 4005 0000 0000 0000 3000 0000 0000 0000 @.......0....... +00004930: 0700 0000 0100 0000 0800 0000 0000 0000 ................ +00004940: 0000 0000 0000 0000 8d00 0000 0400 0000 ................ +00004950: 0200 0000 0000 0000 7005 0000 0000 0000 ........p....... +00004960: 7005 0000 0000 0000 c000 0000 0000 0000 p............... +00004970: 0600 0000 0000 0000 0800 0000 0000 0000 ................ +00004980: 1800 0000 0000 0000 9700 0000 0400 0000 ................ +00004990: 4200 0000 0000 0000 3006 0000 0000 0000 B.......0....... +000049a0: 3006 0000 0000 0000 3000 0000 0000 0000 0.......0....... +000049b0: 0600 0000 1800 0000 0800 0000 0000 0000 ................ +000049c0: 1800 0000 0000 0000 a100 0000 0100 0000 ................ +000049d0: 0600 0000 0000 0000 0010 0000 0000 0000 ................ +000049e0: 0010 0000 0000 0000 1b00 0000 0000 0000 ................ +000049f0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00004a00: 0000 0000 0000 0000 9c00 0000 0100 0000 ................ +00004a10: 0600 0000 0000 0000 2010 0000 0000 0000 ........ ....... +00004a20: 2010 0000 0000 0000 3000 0000 0000 0000 .......0....... +00004a30: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00004a40: 1000 0000 0000 0000 a700 0000 0100 0000 ................ +00004a50: 0600 0000 0000 0000 5010 0000 0000 0000 ........P....... +00004a60: 5010 0000 0000 0000 1000 0000 0000 0000 P............... +00004a70: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00004a80: 1000 0000 0000 0000 b000 0000 0100 0000 ................ +00004a90: 0600 0000 0000 0000 6010 0000 0000 0000 ........`....... +00004aa0: 6010 0000 0000 0000 2000 0000 0000 0000 `....... ....... +00004ab0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00004ac0: 1000 0000 0000 0000 b900 0000 0100 0000 ................ +00004ad0: 0600 0000 0000 0000 8010 0000 0000 0000 ................ +00004ae0: 8010 0000 0000 0000 e010 0000 0000 0000 ................ +00004af0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00004b00: 0000 0000 0000 0000 bf00 0000 0100 0000 ................ +00004b10: 0600 0000 0000 0000 6021 0000 0000 0000 ........`!...... +00004b20: 6021 0000 0000 0000 0d00 0000 0000 0000 `!.............. +00004b30: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00004b40: 0000 0000 0000 0000 c500 0000 0100 0000 ................ +00004b50: 0200 0000 0000 0000 0030 0000 0000 0000 .........0...... +00004b60: 0030 0000 0000 0000 1200 0000 0000 0000 .0.............. +00004b70: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00004b80: 0000 0000 0000 0000 cd00 0000 0100 0000 ................ +00004b90: 0200 0000 0000 0000 1430 0000 0000 0000 .........0...... +00004ba0: 1430 0000 0000 0000 3400 0000 0000 0000 .0......4....... +00004bb0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00004bc0: 0000 0000 0000 0000 db00 0000 0100 0000 ................ +00004bd0: 0200 0000 0000 0000 4830 0000 0000 0000 ........H0...... +00004be0: 4830 0000 0000 0000 ac00 0000 0000 0000 H0.............. +00004bf0: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00004c00: 0000 0000 0000 0000 e500 0000 0e00 0000 ................ +00004c10: 0300 0000 0000 0000 b04d 0000 0000 0000 .........M...... +00004c20: b03d 0000 0000 0000 0800 0000 0000 0000 .=.............. +00004c30: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00004c40: 0800 0000 0000 0000 f100 0000 0f00 0000 ................ +00004c50: 0300 0000 0000 0000 b84d 0000 0000 0000 .........M...... +00004c60: b83d 0000 0000 0000 0800 0000 0000 0000 .=.............. +00004c70: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00004c80: 0800 0000 0000 0000 fd00 0000 0600 0000 ................ +00004c90: 0300 0000 0000 0000 c04d 0000 0000 0000 .........M...... +00004ca0: c03d 0000 0000 0000 f001 0000 0000 0000 .=.............. +00004cb0: 0700 0000 0000 0000 0800 0000 0000 0000 ................ +00004cc0: 1000 0000 0000 0000 ab00 0000 0100 0000 ................ +00004cd0: 0300 0000 0000 0000 b04f 0000 0000 0000 .........O...... +00004ce0: b03f 0000 0000 0000 5000 0000 0000 0000 .?......P....... +00004cf0: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00004d00: 0800 0000 0000 0000 0601 0000 0100 0000 ................ +00004d10: 0300 0000 0000 0000 0050 0000 0000 0000 .........P...... +00004d20: 0040 0000 0000 0000 1000 0000 0000 0000 .@.............. +00004d30: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00004d40: 0000 0000 0000 0000 0c01 0000 0800 0000 ................ +00004d50: 0300 0000 0000 0000 1050 0000 0000 0000 .........P...... +00004d60: 1040 0000 0000 0000 0800 0000 0000 0000 .@.............. +00004d70: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00004d80: 0000 0000 0000 0000 1101 0000 0100 0000 ................ +00004d90: 3000 0000 0000 0000 0000 0000 0000 0000 0............... +00004da0: 1040 0000 0000 0000 2b00 0000 0000 0000 .@......+....... +00004db0: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00004dc0: 0100 0000 0000 0000 0100 0000 0200 0000 ................ +00004dd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004de0: 4040 0000 0000 0000 7803 0000 0000 0000 @@......x....... +00004df0: 1d00 0000 1200 0000 0800 0000 0000 0000 ................ +00004e00: 1800 0000 0000 0000 0900 0000 0300 0000 ................ +00004e10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004e20: b843 0000 0000 0000 f401 0000 0000 0000 .C.............. +00004e30: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00004e40: 0000 0000 0000 0000 1100 0000 0300 0000 ................ +00004e50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00004e60: ac45 0000 0000 0000 1a01 0000 0000 0000 .E.............. +00004e70: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00004e80: 0000 0000 0000 0000 ........ diff --git a/not_that_big b/not_that_big new file mode 100755 index 0000000000000000000000000000000000000000..d728dcd2ebec2965686ffd0aa3d3599b7611cc98 GIT binary patch literal 16008 zcmeI3e{fXQ702%;0zm>v1mssWi%Kb_*(8vlNK+C*U{e!8NQPl3J~r7U*>Qh_-M1x? zDq)b?6d9!qwTz|KT8CO|jbp7ilpz!mt@TI7GD;aotYw6;mS3Wvh3z@--ShS3nb4`z zKkUrjncefb=bm$aoOj>mzPx+a*3`|*@_3Y_Z1pY0xz2oBQ>hDHn4y70rMf{4r|&{_ zwHi$M%PgH;UTF&|wbPqfePxc;XOm>Vu?+pluh?oOQhLae{RT=axI>ggDm@PN8^i@V z@0Rr=xKJsPQjYe#R4UetcWjG`H3zGU1t&1#tY z<)shLsrffIDypW3bvleHtJBU)eOxw5m$Us}a<5xcHh9W`TgUuj`;xl5maWM8>z~<% z`^`RV!-?yYDZ+W?A@pGzJ09zZY#qzq&?`}v1EtASa790b+-`sRg{1fPV}H#6_K^YX z*9@TNad2IqONPg?fAfdRBFU|}# zzpi#pwK2^%y$m?bSFViOhI%6yN`zX%Ni&pasIQL1W1)sXQ-teoiN<5PZo@Y1*N{4y zMOVZ_-yZ9muS1q9CcVtJ-);UeU6yP$Q|nUW!$a9?t{$NL4#@qtqQEZLsqb^qd$m5N z(k>Uhv;}1=f@F;UgjcO9&_le-$C15opk8!`D7QIbLe@#NqRx+We$q|HHV(( zaVBLVkcmJh0+|S8B9MtdCIXoVd^sa;HaoVM9%6Pw9*PO%;ElTGOMaljVmieR+j0bfWIx5SFTaMxl#BkZlm5N`obBIxF5B;U-rsxC97Poz_1P8V zq>rr3E2MslKli`0f{RsZYNLOB#UB~{T}RDa|Hg{vDRXQnjr&-TzMdbnoARFJ6G3A@!$H}g^Z$|FrzHG`Id z7JzC%vp}Vw$)Kx1BSAw!=}%?kXF>0S-T}P#8VAY)4FY}oiNxR(=snO|pw~e!g7$!(20aFP2y{Pa6KFlC0~7~^ zK+8b4faZfLK+{1}K!u>upkW{n=;QMegAYLOf)0UR1?>mz0zC=Z0oo4Q0_p;-1*Jf@ zfdZfXeOu_Gzl~TQ~(+Rx^PZLegSpsApVpfRA~pls0jk0k~tKu1A`LA{^@pxvOSK#zhR1Z@Rv1g!(D z21P;5prxP%pc>FDP$_6K=qk`i&`?nNBN_Qw(EFfwKyQFv2JHhq3wi?d205HuPz4CDcQ{Gr6)1JJvmL!ehd`$4-vPl9%Uwu82S zxRoQif{EqkMC(>zdOO42%H)8C!^My|9)2W@WI)yPo{YxpyzEEh=P6E7e)eKI&iQV=xlr~J{^T;&%AQoE-qhun+iJB{ z%VAoM)pE3!B4p2Ex86@EdmF81L^9&%K2EYHag3c+C3^Fs=-YJ1q~AT-jy7XjN!r(8 z!T9LCjWs@stK~{>GOc{2u8-d2O1V`JJ!V>YpDw5W{9Ab$hi>kFCS)JDyTTHEy(^s$ z$!?=dPu8cMLaJrQ>W5y zD~`X1O777C@@j*TB>S`H>yt&hYr9?JVn5a&ap|XPz1$y^wNfp8d(?Q9Uuoy%zTsWg z9(ARX`EHjg^*sWvU+y>2|G=^zt>pd@{SJcu`ajUPes9$?N}cpd4WG&W>UqwxAEVsY z|7FWFL*`(xD`*9-y8E(&wvj zh`)F(WBaTECBILi4`_RL{V~#e#mFJ=AbmmBI3@E~ihjs?9+`I1KT~QO>GNqmjI9() zTegt?3M%Q;^UC_46&3wV+sphBuU~8Xu->n2{m+RCpCCQ=$8Eoh^j>jx$b+P}{^8}& zG4eT&E3)WU-8IkE;^u@|>WkCn^*~eDFas@$6iG9+a;2|XeYVlvFr!8@Z*@h!Hg7iKG!owX5cMv@H@cLqT6j{}#LlKWqdNi9m-DikXQHwK5TihKyh;8tot# zN6sKivyW*kZW?B5z%-h|Ez~c=n762^zQ(Azd9Fbl?dLANxvIXln$&dM!Km@;QvcjV z%9vlbU`|z?v0&c3#Wf8^L)DzR8bh}GSIQ=TYiGavWB^L(2*9Pb{qq3=*jhD(f&nw2 ztO0W@C}STApiJKr0!AB|?z^J7{W)n965$ z(?{rQiBpy#8ERHOGt^F5o=RjLx8m#zwd%>!8l>7JXV+oRBHKflnhHe2RGIBgAyz(` zzEPT$uDj;H&+=@v+C%&YI)BBsoMc^M=ak~(bxwcx zIV}EvxiiV{nCSTLo6}$ZzKZmUp_Xp{C8Vc!wsGmdtnWlh`*KFa-Twgj^V&}QW&J0z zhsro{A34tAFYB-{>3B&X{<5AFDeFfvu@cweOsgovYcuhe^_WQc`IP>Poya@MpVxYl zm-U{=65W`)|I&v|1RPWGm-VN}9&IS?yT^aO_MfBeWIYS%@aLGh{U0J7$3*JK-wQo( zS?B9&tiB4f{3(5${$A}TQpPVnx){yuaQQFP1|r3NApdTc{|fCO(kqTyN_`@qb@_Md z0+BuPAms9wYWKMOWj!L&<^H+&?brTt{gqeOtfhNx<-Y%T9mnw(|54gcWEqt?liU9= z6*~R>UfWvaZ=BA=GJiyUlz_ISTK6F9WPK~=Cf)Xu7kP?&@*MuMp59r+wSB%l@e_H0 zYcjfz!llaN?e~ffIe({%eZ+9_UE49!T_!fVWgUQ+HuPU`^i7lla zsX+WBpG(fHllEoZm#_WZ_S}{;73lW0If}%8Dl|5Tzf;QGahg`@3fpzZuA)Moi_#zY n{T)g=>ATZ^CqGb8`bZkGvsSD$T7s9q{rUg4+_oD3AN>Cf`RSah literal 0 HcmV?d00001 diff --git a/not_that_big.hex b/not_that_big.hex new file mode 100644 index 0000000..0a3da94 --- /dev/null +++ b/not_that_big.hex @@ -0,0 +1,1001 @@ +00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............ +00000010: 0300 3e00 0100 0000 8010 0000 0000 0000 ..>............. +00000020: 4000 0000 0000 0000 c836 0000 0000 0000 @........6...... +00000030: 0000 0000 4000 3800 0d00 4000 1f00 1e00 ....@.8...@..... +00000040: 0600 0000 0400 0000 4000 0000 0000 0000 ........@....... +00000050: 4000 0000 0000 0000 4000 0000 0000 0000 @.......@....... +00000060: d802 0000 0000 0000 d802 0000 0000 0000 ................ +00000070: 0800 0000 0000 0000 0300 0000 0400 0000 ................ +00000080: 1803 0000 0000 0000 1803 0000 0000 0000 ................ +00000090: 1803 0000 0000 0000 1c00 0000 0000 0000 ................ +000000a0: 1c00 0000 0000 0000 0100 0000 0000 0000 ................ +000000b0: 0100 0000 0400 0000 0000 0000 0000 0000 ................ +000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000000d0: 6006 0000 0000 0000 6006 0000 0000 0000 `.......`....... +000000e0: 0010 0000 0000 0000 0100 0000 0500 0000 ................ +000000f0: 0010 0000 0000 0000 0010 0000 0000 0000 ................ +00000100: 0010 0000 0000 0000 4d0e 0000 0000 0000 ........M....... +00000110: 4d0e 0000 0000 0000 0010 0000 0000 0000 M............... +00000120: 0100 0000 0400 0000 0020 0000 0000 0000 ......... ...... +00000130: 0020 0000 0000 0000 0020 0000 0000 0000 . ....... ...... +00000140: f400 0000 0000 0000 f400 0000 0000 0000 ................ +00000150: 0010 0000 0000 0000 0100 0000 0600 0000 ................ +00000160: b02d 0000 0000 0000 b03d 0000 0000 0000 .-.......=...... +00000170: b03d 0000 0000 0000 6002 0000 0000 0000 .=......`....... +00000180: 6802 0000 0000 0000 0010 0000 0000 0000 h............... +00000190: 0200 0000 0600 0000 c02d 0000 0000 0000 .........-...... +000001a0: c03d 0000 0000 0000 c03d 0000 0000 0000 .=.......=...... +000001b0: f001 0000 0000 0000 f001 0000 0000 0000 ................ +000001c0: 0800 0000 0000 0000 0400 0000 0400 0000 ................ +000001d0: 3803 0000 0000 0000 3803 0000 0000 0000 8.......8....... +000001e0: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... +000001f0: 3000 0000 0000 0000 0800 0000 0000 0000 0............... +00000200: 0400 0000 0400 0000 6803 0000 0000 0000 ........h....... +00000210: 6803 0000 0000 0000 6803 0000 0000 0000 h.......h....... +00000220: 4400 0000 0000 0000 4400 0000 0000 0000 D.......D....... +00000230: 0400 0000 0000 0000 53e5 7464 0400 0000 ........S.td.... +00000240: 3803 0000 0000 0000 3803 0000 0000 0000 8.......8....... +00000250: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... +00000260: 3000 0000 0000 0000 0800 0000 0000 0000 0............... +00000270: 50e5 7464 0400 0000 1420 0000 0000 0000 P.td..... ...... +00000280: 1420 0000 0000 0000 1420 0000 0000 0000 . ....... ...... +00000290: 3400 0000 0000 0000 3400 0000 0000 0000 4.......4....... +000002a0: 0400 0000 0000 0000 51e5 7464 0600 0000 ........Q.td.... +000002b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000002c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000002d0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +000002e0: 52e5 7464 0400 0000 b02d 0000 0000 0000 R.td.....-...... +000002f0: b03d 0000 0000 0000 b03d 0000 0000 0000 .=.......=...... +00000300: 5002 0000 0000 0000 5002 0000 0000 0000 P.......P....... +00000310: 0100 0000 0000 0000 2f6c 6962 3634 2f6c ......../lib64/l +00000320: 642d 6c69 6e75 782d 7838 362d 3634 2e73 d-linux-x86-64.s +00000330: 6f2e 3200 0000 0000 0400 0000 2000 0000 o.2......... ... +00000340: 0500 0000 474e 5500 0200 00c0 0400 0000 ....GNU......... +00000350: 0300 0000 0000 0000 0280 00c0 0400 0000 ................ +00000360: 0100 0000 0000 0000 0400 0000 1400 0000 ................ +00000370: 0300 0000 474e 5500 d40c 247b 3406 29c7 ....GNU...${4.). +00000380: 5e17 a29d 574c 845b 6002 dacc 0400 0000 ^...WL.[`....... +00000390: 1000 0000 0100 0000 474e 5500 0000 0000 ........GNU..... +000003a0: 0300 0000 0200 0000 0000 0000 0000 0000 ................ +000003b0: 0200 0000 0700 0000 0100 0000 0600 0000 ................ +000003c0: 0000 8100 0000 0000 0700 0000 0000 0000 ................ +000003d0: d165 ce6d 0000 0000 0000 0000 0000 0000 .e.m............ +000003e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000003f0: 2700 0000 1200 0000 0000 0000 0000 0000 '............... +00000400: 0000 0000 0000 0000 1000 0000 1200 0000 ................ +00000410: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000420: 5000 0000 2000 0000 0000 0000 0000 0000 P... ........... +00000430: 0000 0000 0000 0000 2200 0000 1200 0000 ........"....... +00000440: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000450: 6c00 0000 2000 0000 0000 0000 0000 0000 l... ........... +00000460: 0000 0000 0000 0000 7b00 0000 2000 0000 ........{... ... +00000470: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000480: 0100 0000 2200 0000 0000 0000 0000 0000 ...."........... +00000490: 0000 0000 0000 0000 005f 5f63 7861 5f66 .........__cxa_f +000004a0: 696e 616c 697a 6500 5f5f 6c69 6263 5f73 inalize.__libc_s +000004b0: 7461 7274 5f6d 6169 6e00 7075 7473 0070 tart_main.puts.p +000004c0: 7574 6368 6172 006c 6962 632e 736f 2e36 utchar.libc.so.6 +000004d0: 0047 4c49 4243 5f32 2e33 3400 474c 4942 .GLIBC_2.34.GLIB +000004e0: 435f 322e 322e 3500 5f49 544d 5f64 6572 C_2.2.5._ITM_der +000004f0: 6567 6973 7465 7254 4d43 6c6f 6e65 5461 egisterTMCloneTa +00000500: 626c 6500 5f5f 676d 6f6e 5f73 7461 7274 ble.__gmon_start +00000510: 5f5f 005f 4954 4d5f 7265 6769 7374 6572 __._ITM_register +00000520: 544d 436c 6f6e 6554 6162 6c65 0000 0000 TMCloneTable.... +00000530: 0200 0300 0100 0200 0100 0100 0200 0000 ................ +00000540: 0100 0200 2f00 0000 1000 0000 0000 0000 ..../........... +00000550: b491 9606 0000 0300 3900 0000 1000 0000 ........9....... +00000560: 751a 6909 0000 0200 4400 0000 0000 0000 u.i.....D....... +00000570: b03d 0000 0000 0000 0800 0000 0000 0000 .=.............. +00000580: 6011 0000 0000 0000 b83d 0000 0000 0000 `........=...... +00000590: 0800 0000 0000 0000 2011 0000 0000 0000 ........ ....... +000005a0: 0840 0000 0000 0000 0800 0000 0000 0000 .@.............. +000005b0: 0840 0000 0000 0000 d83f 0000 0000 0000 .@.......?...... +000005c0: 0600 0000 0200 0000 0000 0000 0000 0000 ................ +000005d0: e03f 0000 0000 0000 0600 0000 0300 0000 .?.............. +000005e0: 0000 0000 0000 0000 e83f 0000 0000 0000 .........?...... +000005f0: 0600 0000 0500 0000 0000 0000 0000 0000 ................ +00000600: f03f 0000 0000 0000 0600 0000 0600 0000 .?.............. +00000610: 0000 0000 0000 0000 f83f 0000 0000 0000 .........?...... +00000620: 0600 0000 0700 0000 0000 0000 0000 0000 ................ +00000630: c83f 0000 0000 0000 0700 0000 0100 0000 .?.............. +00000640: 0000 0000 0000 0000 d03f 0000 0000 0000 .........?...... +00000650: 0700 0000 0400 0000 0000 0000 0000 0000 ................ +00000660: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000670: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000680: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000690: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000006f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000700: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000710: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000720: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000730: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000740: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000750: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000760: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000770: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000780: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000790: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000007f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000800: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000810: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000820: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000830: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000840: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000850: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000860: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000870: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000880: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000890: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000008f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000900: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000910: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000920: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000930: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000940: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000950: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000960: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000970: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000980: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000990: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000009f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000a90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000aa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ab0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ae0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000af0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ba0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000be0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000bf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000c90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ca0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ce0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000cf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000d90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000da0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000db0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000dc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000dd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000de0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000df0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000e90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ea0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000eb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ec0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ed0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ee0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ef0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00000ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001000: f30f 1efa 4883 ec08 488b 05d9 2f00 0048 ....H...H.../..H +00001010: 85c0 7402 ffd0 4883 c408 c300 0000 0000 ..t...H......... +00001020: ff35 922f 0000 f2ff 2593 2f00 000f 1f00 .5./....%./..... +00001030: f30f 1efa 6800 0000 00f2 e9e1 ffff ff90 ....h........... +00001040: f30f 1efa 6801 0000 00f2 e9d1 ffff ff90 ....h........... +00001050: f30f 1efa f2ff 259d 2f00 000f 1f44 0000 ......%./....D.. +00001060: f30f 1efa f2ff 255d 2f00 000f 1f44 0000 ......%]/....D.. +00001070: f30f 1efa f2ff 2555 2f00 000f 1f44 0000 ......%U/....D.. +00001080: f30f 1efa 31ed 4989 d15e 4889 e248 83e4 ....1.I..^H..H.. +00001090: f050 5445 31c0 31c9 488d 3dca 0000 00ff .PTE1.1.H.=..... +000010a0: 1533 2f00 00f4 662e 0f1f 8400 0000 0000 .3/...f......... +000010b0: 488d 3d59 2f00 0048 8d05 522f 0000 4839 H.=Y/..H..R/..H9 +000010c0: f874 1548 8b05 162f 0000 4885 c074 09ff .t.H.../..H..t.. +000010d0: e00f 1f80 0000 0000 c30f 1f80 0000 0000 ................ +000010e0: 488d 3d29 2f00 0048 8d35 222f 0000 4829 H.=)/..H.5"/..H) +000010f0: fe48 89f0 48c1 ee3f 48c1 f803 4801 c648 .H..H..?H...H..H +00001100: d1fe 7414 488b 05e5 2e00 0048 85c0 7408 ..t.H......H..t. +00001110: ffe0 660f 1f44 0000 c30f 1f80 0000 0000 ..f..D.......... +00001120: f30f 1efa 803d e52e 0000 0075 2b55 4883 .....=.....u+UH. +00001130: 3dc2 2e00 0000 4889 e574 0c48 8b3d c62e =.....H..t.H.=.. +00001140: 0000 e809 ffff ffe8 64ff ffff c605 bd2e ........d....... +00001150: 0000 015d c30f 1f00 c30f 1f80 0000 0000 ...]............ +00001160: f30f 1efa e977 ffff fff3 0f1e fa55 4889 .....w.......UH. +00001170: e548 8d3d 8c0e 0000 e8f3 feff ffbf 2000 .H.=.......... . +00001180: 0000 e8d9 feff ffbf 2000 0000 e8cf feff ........ ....... +00001190: ffbf 2000 0000 e8c5 feff ffbf 2000 0000 .. ......... ... +000011a0: e8bb feff ffbf 2000 0000 e8b1 feff ffbf ...... ......... +000011b0: 2000 0000 e8a7 feff ffbf 2000 0000 e89d ......... ..... +000011c0: feff ffbf 2000 0000 e893 feff ffbf 2000 .... ......... . +000011d0: 0000 e889 feff ffbf 2000 0000 e87f feff ........ ....... +000011e0: ffbf 2000 0000 e875 feff ffbf 2000 0000 .. ....u.... ... +000011f0: e86b feff ffbf 2000 0000 e861 feff ffbf .k.... ....a.... +00001200: 2000 0000 e857 feff ffbf 2000 0000 e84d ....W.... ....M +00001210: feff ffbf 2000 0000 e843 feff ffbf 2000 .... ....C.... . +00001220: 0000 e839 feff ffbf 2000 0000 e82f feff ...9.... ..../.. +00001230: ffbf 2000 0000 e825 feff ffbf 2000 0000 .. ....%.... ... +00001240: e81b feff ffbf 2000 0000 e811 feff ffbf ...... ......... +00001250: 2000 0000 e807 feff ffbf 2000 0000 e8fd ......... ..... +00001260: fdff ffbf 2000 0000 e8f3 fdff ffbf 2000 .... ......... . +00001270: 0000 e8e9 fdff ffbf 2000 0000 e8df fdff ........ ....... +00001280: ffbf 2000 0000 e8d5 fdff ffbf 2000 0000 .. ......... ... +00001290: e8cb fdff ffbf 2000 0000 e8c1 fdff ffbf ...... ......... +000012a0: 2000 0000 e8b7 fdff ffbf 2000 0000 e8ad ......... ..... +000012b0: fdff ffbf 2000 0000 e8a3 fdff ffbf 2000 .... ......... . +000012c0: 0000 e899 fdff ffbf 2000 0000 e88f fdff ........ ....... +000012d0: ffbf 2000 0000 e885 fdff ffbf 2000 0000 .. ......... ... +000012e0: e87b fdff ffbf 2000 0000 e871 fdff ffbf .{.... ....q.... +000012f0: 2000 0000 e867 fdff ffbf 2000 0000 e85d ....g.... ....] +00001300: fdff ffbf 2000 0000 e853 fdff ffbf 2000 .... ....S.... . +00001310: 0000 e849 fdff ffbf 2000 0000 e83f fdff ...I.... ....?.. +00001320: ffbf 2000 0000 e835 fdff ffbf 2000 0000 .. ....5.... ... +00001330: e82b fdff ffbf 2000 0000 e821 fdff ffbf .+.... ....!.... +00001340: 2000 0000 e817 fdff ffbf 2000 0000 e80d ......... ..... +00001350: fdff ffbf 2000 0000 e803 fdff ffbf 2000 .... ......... . +00001360: 0000 e8f9 fcff ffbf 2000 0000 e8ef fcff ........ ....... +00001370: ffbf 2000 0000 e8e5 fcff ffbf 2000 0000 .. ......... ... +00001380: e8db fcff ffbf 2000 0000 e8d1 fcff ffbf ...... ......... +00001390: 2000 0000 e8c7 fcff ffbf 2000 0000 e8bd ......... ..... +000013a0: fcff ffbf 2000 0000 e8b3 fcff ffbf 2000 .... ......... . +000013b0: 0000 e8a9 fcff ffbf 2000 0000 e89f fcff ........ ....... +000013c0: ffbf 2000 0000 e895 fcff ffbf 2000 0000 .. ......... ... +000013d0: e88b fcff ffbf 2000 0000 e881 fcff ffbf ...... ......... +000013e0: 2000 0000 e877 fcff ffbf 2000 0000 e86d ....w.... ....m +000013f0: fcff ffbf 2000 0000 e863 fcff ffbf 2000 .... ....c.... . +00001400: 0000 e859 fcff ffbf 2000 0000 e84f fcff ...Y.... ....O.. +00001410: ffbf 2000 0000 e845 fcff ffbf 2000 0000 .. ....E.... ... +00001420: e83b fcff ffbf 2000 0000 e831 fcff ffbf .;.... ....1.... +00001430: 2000 0000 e827 fcff ffbf 2000 0000 e81d ....'.... ..... +00001440: fcff ffbf 2000 0000 e813 fcff ffbf 2000 .... ......... . +00001450: 0000 e809 fcff ffbf 2000 0000 e8ff fbff ........ ....... +00001460: ffbf 2000 0000 e8f5 fbff ffbf 2000 0000 .. ......... ... +00001470: e8eb fbff ffbf 2000 0000 e8e1 fbff ffbf ...... ......... +00001480: 2000 0000 e8d7 fbff ffbf 2000 0000 e8cd ......... ..... +00001490: fbff ffbf 2000 0000 e8c3 fbff ffbf 2000 .... ......... . +000014a0: 0000 e8b9 fbff ffbf 2000 0000 e8af fbff ........ ....... +000014b0: ffbf 2000 0000 e8a5 fbff ffbf 2000 0000 .. ......... ... +000014c0: e89b fbff ffbf 2000 0000 e891 fbff ffbf ...... ......... +000014d0: 2000 0000 e887 fbff ffbf 2000 0000 e87d ......... ....} +000014e0: fbff ffbf 2000 0000 e873 fbff ffbf 2000 .... ....s.... . +000014f0: 0000 e869 fbff ffbf 2000 0000 e85f fbff ...i.... ...._.. +00001500: ffbf 2000 0000 e855 fbff ffbf 2000 0000 .. ....U.... ... +00001510: e84b fbff ffbf 2000 0000 e841 fbff ffbf .K.... ....A.... +00001520: 2000 0000 e837 fbff ffbf 2000 0000 e82d ....7.... ....- +00001530: fbff ffbf 2000 0000 e823 fbff ffbf 2000 .... ....#.... . +00001540: 0000 e819 fbff ffbf 2000 0000 e80f fbff ........ ....... +00001550: ffbf 2000 0000 e805 fbff ffbf 2000 0000 .. ......... ... +00001560: e8fb faff ffbf 2000 0000 e8f1 faff ffbf ...... ......... +00001570: 2000 0000 e8e7 faff ffbf 2000 0000 e8dd ......... ..... +00001580: faff ffbf 2000 0000 e8d3 faff ffbf 2000 .... ......... . +00001590: 0000 e8c9 faff ffbf 2000 0000 e8bf faff ........ ....... +000015a0: ffbf 2000 0000 e8b5 faff ffbf 2000 0000 .. ......... ... +000015b0: e8ab faff ffbf 2000 0000 e8a1 faff ffbf ...... ......... +000015c0: 2000 0000 e897 faff ffbf 2000 0000 e88d ......... ..... +000015d0: faff ffbf 2000 0000 e883 faff ffbf 2000 .... ......... . +000015e0: 0000 e879 faff ffbf 2000 0000 e86f faff ...y.... ....o.. +000015f0: ffbf 2000 0000 e865 faff ffbf 2000 0000 .. ....e.... ... +00001600: e85b faff ffbf 2000 0000 e851 faff ffbf .[.... ....Q.... +00001610: 2000 0000 e847 faff ffbf 2000 0000 e83d ....G.... ....= +00001620: faff ffbf 2000 0000 e833 faff ffbf 2000 .... ....3.... . +00001630: 0000 e829 faff ffbf 2000 0000 e81f faff ...).... ....... +00001640: ffbf 2000 0000 e815 faff ffbf 2000 0000 .. ......... ... +00001650: e80b faff ffbf 2000 0000 e801 faff ffbf ...... ......... +00001660: 2000 0000 e8f7 f9ff ffbf 2000 0000 e8ed ......... ..... +00001670: f9ff ffbf 2000 0000 e8e3 f9ff ffbf 2000 .... ......... . +00001680: 0000 e8d9 f9ff ffbf 2000 0000 e8cf f9ff ........ ....... +00001690: ffbf 2000 0000 e8c5 f9ff ffbf 2000 0000 .. ......... ... +000016a0: e8bb f9ff ffbf 2000 0000 e8b1 f9ff ffbf ...... ......... +000016b0: 2000 0000 e8a7 f9ff ffbf 2000 0000 e89d ......... ..... +000016c0: f9ff ffbf 2000 0000 e893 f9ff ffbf 2000 .... ......... . +000016d0: 0000 e889 f9ff ffbf 2000 0000 e87f f9ff ........ ....... +000016e0: ffbf 2000 0000 e875 f9ff ffbf 2000 0000 .. ....u.... ... +000016f0: e86b f9ff ffbf 2000 0000 e861 f9ff ffbf .k.... ....a.... +00001700: 2000 0000 e857 f9ff ffbf 2000 0000 e84d ....W.... ....M +00001710: f9ff ffbf 2000 0000 e843 f9ff ffbf 2000 .... ....C.... . +00001720: 0000 e839 f9ff ffbf 2000 0000 e82f f9ff ...9.... ..../.. +00001730: ffbf 2000 0000 e825 f9ff ffbf 2000 0000 .. ....%.... ... +00001740: e81b f9ff ffbf 2000 0000 e811 f9ff ffbf ...... ......... +00001750: 2000 0000 e807 f9ff ffbf 2000 0000 e8fd ......... ..... +00001760: f8ff ffbf 2000 0000 e8f3 f8ff ffbf 2000 .... ......... . +00001770: 0000 e8e9 f8ff ffbf 2000 0000 e8df f8ff ........ ....... +00001780: ffbf 2000 0000 e8d5 f8ff ffbf 2000 0000 .. ......... ... +00001790: e8cb f8ff ffbf 2000 0000 e8c1 f8ff ffbf ...... ......... +000017a0: 2000 0000 e8b7 f8ff ffbf 2000 0000 e8ad ......... ..... +000017b0: f8ff ffbf 2000 0000 e8a3 f8ff ffbf 2000 .... ......... . +000017c0: 0000 e899 f8ff ffbf 2000 0000 e88f f8ff ........ ....... +000017d0: ffbf 2000 0000 e885 f8ff ffbf 2000 0000 .. ......... ... +000017e0: e87b f8ff ffbf 2000 0000 e871 f8ff ffbf .{.... ....q.... +000017f0: 2000 0000 e867 f8ff ffbf 2000 0000 e85d ....g.... ....] +00001800: f8ff ffbf 2000 0000 e853 f8ff ffbf 2000 .... ....S.... . +00001810: 0000 e849 f8ff ffbf 2000 0000 e83f f8ff ...I.... ....?.. +00001820: ffbf 2000 0000 e835 f8ff ffbf 2000 0000 .. ....5.... ... +00001830: e82b f8ff ffbf 2000 0000 e821 f8ff ffbf .+.... ....!.... +00001840: 2000 0000 e817 f8ff ffbf 2000 0000 e80d ......... ..... +00001850: f8ff ffbf 2000 0000 e803 f8ff ffbf 2000 .... ......... . +00001860: 0000 e8f9 f7ff ffbf 2000 0000 e8ef f7ff ........ ....... +00001870: ffbf 2000 0000 e8e5 f7ff ffbf 2000 0000 .. ......... ... +00001880: e8db f7ff ffbf 2000 0000 e8d1 f7ff ffbf ...... ......... +00001890: 2000 0000 e8c7 f7ff ffbf 2000 0000 e8bd ......... ..... +000018a0: f7ff ffbf 2000 0000 e8b3 f7ff ffbf 2000 .... ......... . +000018b0: 0000 e8a9 f7ff ffbf 2000 0000 e89f f7ff ........ ....... +000018c0: ffbf 2000 0000 e895 f7ff ffbf 2000 0000 .. ......... ... +000018d0: e88b f7ff ffbf 2000 0000 e881 f7ff ffbf ...... ......... +000018e0: 2000 0000 e877 f7ff ffbf 2000 0000 e86d ....w.... ....m +000018f0: f7ff ffbf 2000 0000 e863 f7ff ffbf 2000 .... ....c.... . +00001900: 0000 e859 f7ff ffbf 2000 0000 e84f f7ff ...Y.... ....O.. +00001910: ffbf 2000 0000 e845 f7ff ffbf 2000 0000 .. ....E.... ... +00001920: e83b f7ff ffbf 2000 0000 e831 f7ff ffbf .;.... ....1.... +00001930: 2000 0000 e827 f7ff ffbf 2000 0000 e81d ....'.... ..... +00001940: f7ff ffbf 2000 0000 e813 f7ff ffbf 2000 .... ......... . +00001950: 0000 e809 f7ff ffbf 2000 0000 e8ff f6ff ........ ....... +00001960: ffbf 2000 0000 e8f5 f6ff ffbf 2000 0000 .. ......... ... +00001970: e8eb f6ff ffbf 2000 0000 e8e1 f6ff ffbf ...... ......... +00001980: 2000 0000 e8d7 f6ff ffbf 2000 0000 e8cd ......... ..... +00001990: f6ff ffbf 2000 0000 e8c3 f6ff ffbf 2000 .... ......... . +000019a0: 0000 e8b9 f6ff ffbf 2000 0000 e8af f6ff ........ ....... +000019b0: ffbf 2000 0000 e8a5 f6ff ffbf 2000 0000 .. ......... ... +000019c0: e89b f6ff ffbf 2000 0000 e891 f6ff ffbf ...... ......... +000019d0: 2000 0000 e887 f6ff ffbf 2000 0000 e87d ......... ....} +000019e0: f6ff ffbf 2000 0000 e873 f6ff ffbf 2000 .... ....s.... . +000019f0: 0000 e869 f6ff ffbf 2000 0000 e85f f6ff ...i.... ...._.. +00001a00: ffbf 2000 0000 e855 f6ff ffbf 2000 0000 .. ....U.... ... +00001a10: e84b f6ff ffbf 2000 0000 e841 f6ff ffbf .K.... ....A.... +00001a20: 2000 0000 e837 f6ff ffbf 2000 0000 e82d ....7.... ....- +00001a30: f6ff ffbf 2000 0000 e823 f6ff ffbf 2000 .... ....#.... . +00001a40: 0000 e819 f6ff ffbf 2000 0000 e80f f6ff ........ ....... +00001a50: ffbf 2000 0000 e805 f6ff ffbf 2000 0000 .. ......... ... +00001a60: e8fb f5ff ffbf 2000 0000 e8f1 f5ff ffbf ...... ......... +00001a70: 2000 0000 e8e7 f5ff ffbf 2000 0000 e8dd ......... ..... +00001a80: f5ff ffbf 2000 0000 e8d3 f5ff ffbf 2000 .... ......... . +00001a90: 0000 e8c9 f5ff ffbf 2000 0000 e8bf f5ff ........ ....... +00001aa0: ffbf 2000 0000 e8b5 f5ff ffbf 2000 0000 .. ......... ... +00001ab0: e8ab f5ff ffbf 2000 0000 e8a1 f5ff ffbf ...... ......... +00001ac0: 2000 0000 e897 f5ff ffbf 2000 0000 e88d ......... ..... +00001ad0: f5ff ffbf 2000 0000 e883 f5ff ffbf 2000 .... ......... . +00001ae0: 0000 e879 f5ff ffbf 2000 0000 e86f f5ff ...y.... ....o.. +00001af0: ffbf 2000 0000 e865 f5ff ffbf 2000 0000 .. ....e.... ... +00001b00: e85b f5ff ffbf 2000 0000 e851 f5ff ffbf .[.... ....Q.... +00001b10: 2000 0000 e847 f5ff ffbf 2000 0000 e83d ....G.... ....= +00001b20: f5ff ffbf 2000 0000 e833 f5ff ffbf 2000 .... ....3.... . +00001b30: 0000 e829 f5ff ffbf 2000 0000 e81f f5ff ...).... ....... +00001b40: ffbf 2000 0000 e815 f5ff ffbf 2000 0000 .. ......... ... +00001b50: e80b f5ff ffbf 2000 0000 e801 f5ff ffbf ...... ......... +00001b60: 2000 0000 e8f7 f4ff ffbf 2000 0000 e8ed ......... ..... +00001b70: f4ff ffbf 2000 0000 e8e3 f4ff ffbf 2000 .... ......... . +00001b80: 0000 e8d9 f4ff ffbf 2000 0000 e8cf f4ff ........ ....... +00001b90: ffbf 2000 0000 e8c5 f4ff ffbf 2000 0000 .. ......... ... +00001ba0: e8bb f4ff ffbf 2000 0000 e8b1 f4ff ffbf ...... ......... +00001bb0: 2000 0000 e8a7 f4ff ffbf 2000 0000 e89d ......... ..... +00001bc0: f4ff ffbf 2000 0000 e893 f4ff ffbf 2000 .... ......... . +00001bd0: 0000 e889 f4ff ffbf 2000 0000 e87f f4ff ........ ....... +00001be0: ffbf 2000 0000 e875 f4ff ffbf 2000 0000 .. ....u.... ... +00001bf0: e86b f4ff ffbf 2000 0000 e861 f4ff ffbf .k.... ....a.... +00001c00: 2000 0000 e857 f4ff ffbf 2000 0000 e84d ....W.... ....M +00001c10: f4ff ffbf 2000 0000 e843 f4ff ffbf 2000 .... ....C.... . +00001c20: 0000 e839 f4ff ffbf 2000 0000 e82f f4ff ...9.... ..../.. +00001c30: ffbf 2000 0000 e825 f4ff ffbf 2000 0000 .. ....%.... ... +00001c40: e81b f4ff ffbf 2000 0000 e811 f4ff ffbf ...... ......... +00001c50: 2000 0000 e807 f4ff ffbf 2000 0000 e8fd ......... ..... +00001c60: f3ff ffbf 2000 0000 e8f3 f3ff ffbf 2000 .... ......... . +00001c70: 0000 e8e9 f3ff ffbf 2000 0000 e8df f3ff ........ ....... +00001c80: ffbf 2000 0000 e8d5 f3ff ffbf 2000 0000 .. ......... ... +00001c90: e8cb f3ff ffbf 2000 0000 e8c1 f3ff ffbf ...... ......... +00001ca0: 2000 0000 e8b7 f3ff ffbf 2000 0000 e8ad ......... ..... +00001cb0: f3ff ffbf 2000 0000 e8a3 f3ff ffbf 2000 .... ......... . +00001cc0: 0000 e899 f3ff ffbf 2000 0000 e88f f3ff ........ ....... +00001cd0: ffbf 2000 0000 e885 f3ff ffbf 2000 0000 .. ......... ... +00001ce0: e87b f3ff ffbf 2000 0000 e871 f3ff ffbf .{.... ....q.... +00001cf0: 2000 0000 e867 f3ff ffbf 2000 0000 e85d ....g.... ....] +00001d00: f3ff ffbf 2000 0000 e853 f3ff ffbf 2000 .... ....S.... . +00001d10: 0000 e849 f3ff ffbf 2000 0000 e83f f3ff ...I.... ....?.. +00001d20: ffbf 2000 0000 e835 f3ff ffbf 2000 0000 .. ....5.... ... +00001d30: e82b f3ff ffbf 2000 0000 e821 f3ff ffbf .+.... ....!.... +00001d40: 2000 0000 e817 f3ff ffbf 2000 0000 e80d ......... ..... +00001d50: f3ff ffbf 2000 0000 e803 f3ff ffbf 2000 .... ......... . +00001d60: 0000 e8f9 f2ff ffbf 2000 0000 e8ef f2ff ........ ....... +00001d70: ffbf 2000 0000 e8e5 f2ff ffbf 2000 0000 .. ......... ... +00001d80: e8db f2ff ffbf 2000 0000 e8d1 f2ff ffbf ...... ......... +00001d90: 2000 0000 e8c7 f2ff ffbf 2000 0000 e8bd ......... ..... +00001da0: f2ff ffbf 2000 0000 e8b3 f2ff ffbf 2000 .... ......... . +00001db0: 0000 e8a9 f2ff ffbf 2000 0000 e89f f2ff ........ ....... +00001dc0: ffbf 2000 0000 e895 f2ff ffbf 2000 0000 .. ......... ... +00001dd0: e88b f2ff ffbf 2000 0000 e881 f2ff ffbf ...... ......... +00001de0: 2000 0000 e877 f2ff ffbf 2000 0000 e86d ....w.... ....m +00001df0: f2ff ffbf 2000 0000 e863 f2ff ffbf 2000 .... ....c.... . +00001e00: 0000 e859 f2ff ffbf 2000 0000 e84f f2ff ...Y.... ....O.. +00001e10: ffbf 2000 0000 e845 f2ff ffbf 2000 0000 .. ....E.... ... +00001e20: e83b f2ff ffbf 2000 0000 e831 f2ff ffbf .;.... ....1.... +00001e30: 2000 0000 e827 f2ff ffb8 0000 0000 5dc3 ....'........]. +00001e40: f30f 1efa 4883 ec08 4883 c408 c300 0000 ....H...H....... +00001e50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001e60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001e70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001e80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001e90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001ea0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001eb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001ec0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001ed0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001ee0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001ef0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001fb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001fc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001fd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00001ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002000: 0100 0200 4865 6c6c 6f2c 2057 6f72 6c64 ....Hello, World +00002010: 2100 0000 011b 033b 3000 0000 0500 0000 !......;0....... +00002020: 0cf0 ffff 6400 0000 3cf0 ffff 8c00 0000 ....d...<....... +00002030: 4cf0 ffff a400 0000 6cf0 ffff 4c00 0000 L.......l...L... +00002040: 55f1 ffff bc00 0000 1400 0000 0000 0000 U............... +00002050: 017a 5200 0178 1001 1b0c 0708 9001 0000 .zR..x.......... +00002060: 1400 0000 1c00 0000 18f0 ffff 2600 0000 ............&... +00002070: 0044 0710 0000 0000 2400 0000 3400 0000 .D......$...4... +00002080: a0ef ffff 3000 0000 000e 1046 0e18 4a0f ....0......F..J. +00002090: 0b77 0880 003f 1a3a 2a33 2422 0000 0000 .w...?.:*3$".... +000020a0: 1400 0000 5c00 0000 a8ef ffff 1000 0000 ....\........... +000020b0: 0000 0000 0000 0000 1400 0000 7400 0000 ............t... +000020c0: a0ef ffff 2000 0000 0000 0000 0000 0000 .... ........... +000020d0: 1c00 0000 8c00 0000 91f0 ffff d70c 0000 ................ +000020e0: 0045 0e10 8602 430d 0603 ce0c 0c07 0800 .E....C......... +000020f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002190: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000021f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002200: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002210: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002220: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002230: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002240: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002250: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002260: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002270: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002280: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002290: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000022f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002300: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002310: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002320: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002330: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002340: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002350: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002360: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002370: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002380: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002390: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000023f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002400: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002410: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002420: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002430: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002440: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002450: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002460: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002470: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002480: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002490: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000024f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002500: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002510: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002520: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002530: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002540: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002550: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002560: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002570: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002580: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002590: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000025f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002600: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002610: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002620: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002630: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002640: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002650: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002660: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002670: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002680: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002690: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000026f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002700: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002710: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002720: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002730: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002740: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002750: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002760: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002770: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002780: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002790: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000027f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002800: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002810: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002820: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002830: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002840: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002850: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002860: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002870: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002880: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002890: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000028f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002900: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002910: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002920: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002930: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002940: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002950: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002960: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002970: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002980: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002990: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000029f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002a90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002aa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ab0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ae0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002af0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ba0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002be0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002bf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002c90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ca0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ce0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002cf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d00: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d20: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d30: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d40: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002d90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002da0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002db0: 6011 0000 0000 0000 2011 0000 0000 0000 `....... ....... +00002dc0: 0100 0000 0000 0000 2f00 0000 0000 0000 ......../....... +00002dd0: 0c00 0000 0000 0000 0010 0000 0000 0000 ................ +00002de0: 0d00 0000 0000 0000 401e 0000 0000 0000 ........@....... +00002df0: 1900 0000 0000 0000 b03d 0000 0000 0000 .........=...... +00002e00: 1b00 0000 0000 0000 0800 0000 0000 0000 ................ +00002e10: 1a00 0000 0000 0000 b83d 0000 0000 0000 .........=...... +00002e20: 1c00 0000 0000 0000 0800 0000 0000 0000 ................ +00002e30: f5fe ff6f 0000 0000 b003 0000 0000 0000 ...o............ +00002e40: 0500 0000 0000 0000 9804 0000 0000 0000 ................ +00002e50: 0600 0000 0000 0000 d803 0000 0000 0000 ................ +00002e60: 0a00 0000 0000 0000 9500 0000 0000 0000 ................ +00002e70: 0b00 0000 0000 0000 1800 0000 0000 0000 ................ +00002e80: 1500 0000 0000 0000 0000 0000 0000 0000 ................ +00002e90: 0300 0000 0000 0000 b03f 0000 0000 0000 .........?...... +00002ea0: 0200 0000 0000 0000 3000 0000 0000 0000 ........0....... +00002eb0: 1400 0000 0000 0000 0700 0000 0000 0000 ................ +00002ec0: 1700 0000 0000 0000 3006 0000 0000 0000 ........0....... +00002ed0: 0700 0000 0000 0000 7005 0000 0000 0000 ........p....... +00002ee0: 0800 0000 0000 0000 c000 0000 0000 0000 ................ +00002ef0: 0900 0000 0000 0000 1800 0000 0000 0000 ................ +00002f00: 1e00 0000 0000 0000 0800 0000 0000 0000 ................ +00002f10: fbff ff6f 0000 0000 0100 0008 0000 0000 ...o............ +00002f20: feff ff6f 0000 0000 4005 0000 0000 0000 ...o....@....... +00002f30: ffff ff6f 0000 0000 0100 0000 0000 0000 ...o............ +00002f40: f0ff ff6f 0000 0000 2e05 0000 0000 0000 ...o............ +00002f50: f9ff ff6f 0000 0000 0300 0000 0000 0000 ...o............ +00002f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002fb0: c03d 0000 0000 0000 0000 0000 0000 0000 .=.............. +00002fc0: 0000 0000 0000 0000 3010 0000 0000 0000 ........0....... +00002fd0: 4010 0000 0000 0000 0000 0000 0000 0000 @............... +00002fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00002ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003000: 0000 0000 0000 0000 0840 0000 0000 0000 .........@...... +00003010: 4743 433a 2028 5562 756e 7475 2031 302e GCC: (Ubuntu 10. +00003020: 352e 302d 3175 6275 6e74 7531 7e32 322e 5.0-1ubuntu1~22. +00003030: 3034 2920 3130 2e35 2e30 0000 0000 0000 04) 10.5.0...... +00003040: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003050: 0000 0000 0000 0000 0100 0000 0400 f1ff ................ +00003060: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003070: 0900 0000 0100 0400 8c03 0000 0000 0000 ................ +00003080: 2000 0000 0000 0000 1300 0000 0400 f1ff ............... +00003090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000030a0: 1e00 0000 0200 1000 b010 0000 0000 0000 ................ +000030b0: 0000 0000 0000 0000 2000 0000 0200 1000 ........ ....... +000030c0: e010 0000 0000 0000 0000 0000 0000 0000 ................ +000030d0: 3300 0000 0200 1000 2011 0000 0000 0000 3....... ....... +000030e0: 0000 0000 0000 0000 4900 0000 0100 1a00 ........I....... +000030f0: 1040 0000 0000 0000 0100 0000 0000 0000 .@.............. +00003100: 5500 0000 0100 1600 b83d 0000 0000 0000 U........=...... +00003110: 0000 0000 0000 0000 7c00 0000 0200 1000 ........|....... +00003120: 6011 0000 0000 0000 0000 0000 0000 0000 `............... +00003130: 8800 0000 0100 1500 b03d 0000 0000 0000 .........=...... +00003140: 0000 0000 0000 0000 a700 0000 0400 f1ff ................ +00003150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003160: 1300 0000 0400 f1ff 0000 0000 0000 0000 ................ +00003170: 0000 0000 0000 0000 b600 0000 0100 1400 ................ +00003180: f020 0000 0000 0000 0000 0000 0000 0000 . .............. +00003190: 0000 0000 0400 f1ff 0000 0000 0000 0000 ................ +000031a0: 0000 0000 0000 0000 c400 0000 0100 1700 ................ +000031b0: c03d 0000 0000 0000 0000 0000 0000 0000 .=.............. +000031c0: cd00 0000 0000 1300 1420 0000 0000 0000 ......... ...... +000031d0: 0000 0000 0000 0000 e000 0000 0100 1800 ................ +000031e0: b03f 0000 0000 0000 0000 0000 0000 0000 .?.............. +000031f0: f600 0000 1200 0000 0000 0000 0000 0000 ................ +00003200: 0000 0000 0000 0000 0a01 0000 1200 0000 ................ +00003210: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003220: 2701 0000 2000 0000 0000 0000 0000 0000 '... ........... +00003230: 0000 0000 0000 0000 6301 0000 2000 1900 ........c... ... +00003240: 0040 0000 0000 0000 0000 0000 0000 0000 .@.............. +00003250: 4301 0000 1200 0000 0000 0000 0000 0000 C............... +00003260: 0000 0000 0000 0000 5401 0000 1000 1900 ........T....... +00003270: 1040 0000 0000 0000 0000 0000 0000 0000 .@.............. +00003280: 5b01 0000 1202 1100 401e 0000 0000 0000 [.......@....... +00003290: 0000 0000 0000 0000 6101 0000 1000 1900 ........a....... +000032a0: 0040 0000 0000 0000 0000 0000 0000 0000 .@.............. +000032b0: 6e01 0000 2000 0000 0000 0000 0000 0000 n... ........... +000032c0: 0000 0000 0000 0000 7d01 0000 1102 1900 ........}....... +000032d0: 0840 0000 0000 0000 0000 0000 0000 0000 .@.............. +000032e0: 8a01 0000 1100 1200 0020 0000 0000 0000 ......... ...... +000032f0: 0400 0000 0000 0000 9901 0000 1000 1a00 ................ +00003300: 1840 0000 0000 0000 0000 0000 0000 0000 .@.............. +00003310: 6701 0000 1200 1000 8010 0000 0000 0000 g............... +00003320: 2600 0000 0000 0000 9e01 0000 1000 1a00 &............... +00003330: 1040 0000 0000 0000 0000 0000 0000 0000 .@.............. +00003340: aa01 0000 1200 1000 6911 0000 0000 0000 ........i....... +00003350: d70c 0000 0000 0000 af01 0000 1102 1900 ................ +00003360: 1040 0000 0000 0000 0000 0000 0000 0000 .@.............. +00003370: bb01 0000 2000 0000 0000 0000 0000 0000 .... ........... +00003380: 0000 0000 0000 0000 d501 0000 2200 0000 ............"... +00003390: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000033a0: f001 0000 1202 0c00 0010 0000 0000 0000 ................ +000033b0: 0000 0000 0000 0000 0053 6372 7431 2e6f .........Scrt1.o +000033c0: 005f 5f61 6269 5f74 6167 0063 7274 7374 .__abi_tag.crtst +000033d0: 7566 662e 6300 6465 7265 6769 7374 6572 uff.c.deregister +000033e0: 5f74 6d5f 636c 6f6e 6573 005f 5f64 6f5f _tm_clones.__do_ +000033f0: 676c 6f62 616c 5f64 746f 7273 5f61 7578 global_dtors_aux +00003400: 0063 6f6d 706c 6574 6564 2e30 005f 5f64 .completed.0.__d +00003410: 6f5f 676c 6f62 616c 5f64 746f 7273 5f61 o_global_dtors_a +00003420: 7578 5f66 696e 695f 6172 7261 795f 656e ux_fini_array_en +00003430: 7472 7900 6672 616d 655f 6475 6d6d 7900 try.frame_dummy. +00003440: 5f5f 6672 616d 655f 6475 6d6d 795f 696e __frame_dummy_in +00003450: 6974 5f61 7272 6179 5f65 6e74 7279 006e it_array_entry.n +00003460: 6f74 5f74 6861 745f 6269 672e 6300 5f5f ot_that_big.c.__ +00003470: 4652 414d 455f 454e 445f 5f00 5f44 594e FRAME_END__._DYN +00003480: 414d 4943 005f 5f47 4e55 5f45 485f 4652 AMIC.__GNU_EH_FR +00003490: 414d 455f 4844 5200 5f47 4c4f 4241 4c5f AME_HDR._GLOBAL_ +000034a0: 4f46 4653 4554 5f54 4142 4c45 5f00 7075 OFFSET_TABLE_.pu +000034b0: 7463 6861 7240 474c 4942 435f 322e 322e tchar@GLIBC_2.2. +000034c0: 3500 5f5f 6c69 6263 5f73 7461 7274 5f6d 5.__libc_start_m +000034d0: 6169 6e40 474c 4942 435f 322e 3334 005f ain@GLIBC_2.34._ +000034e0: 4954 4d5f 6465 7265 6769 7374 6572 544d ITM_deregisterTM +000034f0: 436c 6f6e 6554 6162 6c65 0070 7574 7340 CloneTable.puts@ +00003500: 474c 4942 435f 322e 322e 3500 5f65 6461 GLIBC_2.2.5._eda +00003510: 7461 005f 6669 6e69 005f 5f64 6174 615f ta._fini.__data_ +00003520: 7374 6172 7400 5f5f 676d 6f6e 5f73 7461 start.__gmon_sta +00003530: 7274 5f5f 005f 5f64 736f 5f68 616e 646c rt__.__dso_handl +00003540: 6500 5f49 4f5f 7374 6469 6e5f 7573 6564 e._IO_stdin_used +00003550: 005f 656e 6400 5f5f 6273 735f 7374 6172 ._end.__bss_star +00003560: 7400 6d61 696e 005f 5f54 4d43 5f45 4e44 t.main.__TMC_END +00003570: 5f5f 005f 4954 4d5f 7265 6769 7374 6572 __._ITM_register +00003580: 544d 436c 6f6e 6554 6162 6c65 005f 5f63 TMCloneTable.__c +00003590: 7861 5f66 696e 616c 697a 6540 474c 4942 xa_finalize@GLIB +000035a0: 435f 322e 322e 3500 5f69 6e69 7400 002e C_2.2.5._init... +000035b0: 7379 6d74 6162 002e 7374 7274 6162 002e symtab..strtab.. +000035c0: 7368 7374 7274 6162 002e 696e 7465 7270 shstrtab..interp +000035d0: 002e 6e6f 7465 2e67 6e75 2e70 726f 7065 ..note.gnu.prope +000035e0: 7274 7900 2e6e 6f74 652e 676e 752e 6275 rty..note.gnu.bu +000035f0: 696c 642d 6964 002e 6e6f 7465 2e41 4249 ild-id..note.ABI +00003600: 2d74 6167 002e 676e 752e 6861 7368 002e -tag..gnu.hash.. +00003610: 6479 6e73 796d 002e 6479 6e73 7472 002e dynsym..dynstr.. +00003620: 676e 752e 7665 7273 696f 6e00 2e67 6e75 gnu.version..gnu +00003630: 2e76 6572 7369 6f6e 5f72 002e 7265 6c61 .version_r..rela +00003640: 2e64 796e 002e 7265 6c61 2e70 6c74 002e .dyn..rela.plt.. +00003650: 696e 6974 002e 706c 742e 676f 7400 2e70 init..plt.got..p +00003660: 6c74 2e73 6563 002e 7465 7874 002e 6669 lt.sec..text..fi +00003670: 6e69 002e 726f 6461 7461 002e 6568 5f66 ni..rodata..eh_f +00003680: 7261 6d65 5f68 6472 002e 6568 5f66 7261 rame_hdr..eh_fra +00003690: 6d65 002e 696e 6974 5f61 7272 6179 002e me..init_array.. +000036a0: 6669 6e69 5f61 7272 6179 002e 6479 6e61 fini_array..dyna +000036b0: 6d69 6300 2e64 6174 6100 2e62 7373 002e mic..data..bss.. +000036c0: 636f 6d6d 656e 7400 0000 0000 0000 0000 comment......... +000036d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +000036f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003700: 0000 0000 0000 0000 1b00 0000 0100 0000 ................ +00003710: 0200 0000 0000 0000 1803 0000 0000 0000 ................ +00003720: 1803 0000 0000 0000 1c00 0000 0000 0000 ................ +00003730: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00003740: 0000 0000 0000 0000 2300 0000 0700 0000 ........#....... +00003750: 0200 0000 0000 0000 3803 0000 0000 0000 ........8....... +00003760: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... +00003770: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00003780: 0000 0000 0000 0000 3600 0000 0700 0000 ........6....... +00003790: 0200 0000 0000 0000 6803 0000 0000 0000 ........h....... +000037a0: 6803 0000 0000 0000 2400 0000 0000 0000 h.......$....... +000037b0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +000037c0: 0000 0000 0000 0000 4900 0000 0700 0000 ........I....... +000037d0: 0200 0000 0000 0000 8c03 0000 0000 0000 ................ +000037e0: 8c03 0000 0000 0000 2000 0000 0000 0000 ........ ....... +000037f0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00003800: 0000 0000 0000 0000 5700 0000 f6ff ff6f ........W......o +00003810: 0200 0000 0000 0000 b003 0000 0000 0000 ................ +00003820: b003 0000 0000 0000 2400 0000 0000 0000 ........$....... +00003830: 0600 0000 0000 0000 0800 0000 0000 0000 ................ +00003840: 0000 0000 0000 0000 6100 0000 0b00 0000 ........a....... +00003850: 0200 0000 0000 0000 d803 0000 0000 0000 ................ +00003860: d803 0000 0000 0000 c000 0000 0000 0000 ................ +00003870: 0700 0000 0100 0000 0800 0000 0000 0000 ................ +00003880: 1800 0000 0000 0000 6900 0000 0300 0000 ........i....... +00003890: 0200 0000 0000 0000 9804 0000 0000 0000 ................ +000038a0: 9804 0000 0000 0000 9500 0000 0000 0000 ................ +000038b0: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +000038c0: 0000 0000 0000 0000 7100 0000 ffff ff6f ........q......o +000038d0: 0200 0000 0000 0000 2e05 0000 0000 0000 ................ +000038e0: 2e05 0000 0000 0000 1000 0000 0000 0000 ................ +000038f0: 0600 0000 0000 0000 0200 0000 0000 0000 ................ +00003900: 0200 0000 0000 0000 7e00 0000 feff ff6f ........~......o +00003910: 0200 0000 0000 0000 4005 0000 0000 0000 ........@....... +00003920: 4005 0000 0000 0000 3000 0000 0000 0000 @.......0....... +00003930: 0700 0000 0100 0000 0800 0000 0000 0000 ................ +00003940: 0000 0000 0000 0000 8d00 0000 0400 0000 ................ +00003950: 0200 0000 0000 0000 7005 0000 0000 0000 ........p....... +00003960: 7005 0000 0000 0000 c000 0000 0000 0000 p............... +00003970: 0600 0000 0000 0000 0800 0000 0000 0000 ................ +00003980: 1800 0000 0000 0000 9700 0000 0400 0000 ................ +00003990: 4200 0000 0000 0000 3006 0000 0000 0000 B.......0....... +000039a0: 3006 0000 0000 0000 3000 0000 0000 0000 0.......0....... +000039b0: 0600 0000 1800 0000 0800 0000 0000 0000 ................ +000039c0: 1800 0000 0000 0000 a100 0000 0100 0000 ................ +000039d0: 0600 0000 0000 0000 0010 0000 0000 0000 ................ +000039e0: 0010 0000 0000 0000 1b00 0000 0000 0000 ................ +000039f0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00003a00: 0000 0000 0000 0000 9c00 0000 0100 0000 ................ +00003a10: 0600 0000 0000 0000 2010 0000 0000 0000 ........ ....... +00003a20: 2010 0000 0000 0000 3000 0000 0000 0000 .......0....... +00003a30: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00003a40: 1000 0000 0000 0000 a700 0000 0100 0000 ................ +00003a50: 0600 0000 0000 0000 5010 0000 0000 0000 ........P....... +00003a60: 5010 0000 0000 0000 1000 0000 0000 0000 P............... +00003a70: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00003a80: 1000 0000 0000 0000 b000 0000 0100 0000 ................ +00003a90: 0600 0000 0000 0000 6010 0000 0000 0000 ........`....... +00003aa0: 6010 0000 0000 0000 2000 0000 0000 0000 `....... ....... +00003ab0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00003ac0: 1000 0000 0000 0000 b900 0000 0100 0000 ................ +00003ad0: 0600 0000 0000 0000 8010 0000 0000 0000 ................ +00003ae0: 8010 0000 0000 0000 c00d 0000 0000 0000 ................ +00003af0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ +00003b00: 0000 0000 0000 0000 bf00 0000 0100 0000 ................ +00003b10: 0600 0000 0000 0000 401e 0000 0000 0000 ........@....... +00003b20: 401e 0000 0000 0000 0d00 0000 0000 0000 @............... +00003b30: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00003b40: 0000 0000 0000 0000 c500 0000 0100 0000 ................ +00003b50: 0200 0000 0000 0000 0020 0000 0000 0000 ......... ...... +00003b60: 0020 0000 0000 0000 1200 0000 0000 0000 . .............. +00003b70: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00003b80: 0000 0000 0000 0000 cd00 0000 0100 0000 ................ +00003b90: 0200 0000 0000 0000 1420 0000 0000 0000 ......... ...... +00003ba0: 1420 0000 0000 0000 3400 0000 0000 0000 . ......4....... +00003bb0: 0000 0000 0000 0000 0400 0000 0000 0000 ................ +00003bc0: 0000 0000 0000 0000 db00 0000 0100 0000 ................ +00003bd0: 0200 0000 0000 0000 4820 0000 0000 0000 ........H ...... +00003be0: 4820 0000 0000 0000 ac00 0000 0000 0000 H .............. +00003bf0: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00003c00: 0000 0000 0000 0000 e500 0000 0e00 0000 ................ +00003c10: 0300 0000 0000 0000 b03d 0000 0000 0000 .........=...... +00003c20: b02d 0000 0000 0000 0800 0000 0000 0000 .-.............. +00003c30: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00003c40: 0800 0000 0000 0000 f100 0000 0f00 0000 ................ +00003c50: 0300 0000 0000 0000 b83d 0000 0000 0000 .........=...... +00003c60: b82d 0000 0000 0000 0800 0000 0000 0000 .-.............. +00003c70: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00003c80: 0800 0000 0000 0000 fd00 0000 0600 0000 ................ +00003c90: 0300 0000 0000 0000 c03d 0000 0000 0000 .........=...... +00003ca0: c02d 0000 0000 0000 f001 0000 0000 0000 .-.............. +00003cb0: 0700 0000 0000 0000 0800 0000 0000 0000 ................ +00003cc0: 1000 0000 0000 0000 ab00 0000 0100 0000 ................ +00003cd0: 0300 0000 0000 0000 b03f 0000 0000 0000 .........?...... +00003ce0: b02f 0000 0000 0000 5000 0000 0000 0000 ./......P....... +00003cf0: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00003d00: 0800 0000 0000 0000 0601 0000 0100 0000 ................ +00003d10: 0300 0000 0000 0000 0040 0000 0000 0000 .........@...... +00003d20: 0030 0000 0000 0000 1000 0000 0000 0000 .0.............. +00003d30: 0000 0000 0000 0000 0800 0000 0000 0000 ................ +00003d40: 0000 0000 0000 0000 0c01 0000 0800 0000 ................ +00003d50: 0300 0000 0000 0000 1040 0000 0000 0000 .........@...... +00003d60: 1030 0000 0000 0000 0800 0000 0000 0000 .0.............. +00003d70: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00003d80: 0000 0000 0000 0000 1101 0000 0100 0000 ................ +00003d90: 3000 0000 0000 0000 0000 0000 0000 0000 0............... +00003da0: 1030 0000 0000 0000 2b00 0000 0000 0000 .0......+....... +00003db0: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00003dc0: 0100 0000 0000 0000 0100 0000 0200 0000 ................ +00003dd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003de0: 4030 0000 0000 0000 7803 0000 0000 0000 @0......x....... +00003df0: 1d00 0000 1200 0000 0800 0000 0000 0000 ................ +00003e00: 1800 0000 0000 0000 0900 0000 0300 0000 ................ +00003e10: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003e20: b833 0000 0000 0000 f601 0000 0000 0000 .3.............. +00003e30: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00003e40: 0000 0000 0000 0000 1100 0000 0300 0000 ................ +00003e50: 0000 0000 0000 0000 0000 0000 0000 0000 ................ +00003e60: ae35 0000 0000 0000 1a01 0000 0000 0000 .5.............. +00003e70: 0000 0000 0000 0000 0100 0000 0000 0000 ................ +00003e80: 0000 0000 0000 0000 ........ diff --git a/resources/big_sample.c b/resources/big_sample.c new file mode 100644 index 0000000..bb50de6 --- /dev/null +++ b/resources/big_sample.c @@ -0,0 +1,412 @@ +#include + +int main(void) { + printf("Hello, World!\n"); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + return (0); +} diff --git a/resources/not_that_big.c b/resources/not_that_big.c new file mode 100644 index 0000000..e90ab50 --- /dev/null +++ b/resources/not_that_big.c @@ -0,0 +1,332 @@ +#include + +int main(void) { + printf("Hello, World!\n"); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + printf(" "); + return (0); +} -- 2.20.1 From 3300cea9c6bca2d9bcfc4c8500798bcc2e55d9d3 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 12 Jun 2024 13:39:29 +0200 Subject: [PATCH 05/13] Fix Makefile --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6ecb028..c6b661f 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ RM = rm -f LIBFT_FLAGS = ft_printf/libftprintf.a -CFLAGS = -Wall -Wextra -Werror -g3 +CFLAGS = -Wall -Wextra -Werror all: ${NAME} @@ -33,6 +33,7 @@ clean: fclean: make -C ft_printf fclean + make clean ${RM} ${NAME} re: fclean -- 2.20.1 From ff92116756992ae28c3c2d0338ea78ec14af91b9 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 12 Jun 2024 13:39:57 +0200 Subject: [PATCH 06/13] Modify test file --- resources/sample.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/resources/sample.c b/resources/sample.c index 3b68c69..59815c1 100644 --- a/resources/sample.c +++ b/resources/sample.c @@ -1,7 +1,6 @@ #include -int -main(void) { - ft_printf("Hello, World!\n"); - return (0x0); +int main(void) { + printf("Hello, World!\n"); + return (0); } -- 2.20.1 From 7d417ac4e71b43765a09018cb924b58ee124a1e2 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 12 Jun 2024 13:40:57 +0200 Subject: [PATCH 07/13] Offset more datas on codecave creation --- includes/woody.h | 4 +++- srcs/woody.c | 31 ++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index e04b480..bb61913 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -21,7 +21,7 @@ #define TEXT_OFFSET "\xba\xba\xba\xba\xba\xba\xba\xba" #define SECTION_SIZE "\xca\xca\xca\xca\xca\xca\xca\xca" - + typedef struct payload { char *payload; @@ -36,6 +36,8 @@ typedef struct elf_content Elf64_Ehdr *Ehdr; Elf64_Phdr *Phdr; Elf64_Shdr *Shdr; + Elf64_Shdr *symbols_table; + Elf64_Sym *symbols; } t_elf_content; // utils.c diff --git a/srcs/woody.c b/srcs/woody.c index d5557c7..8c7c21c 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -48,16 +48,28 @@ void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offse { for (int i = 0; i < woody->Ehdr->e_phnum; i++) { - if (woody->Phdr[i].p_offset > from) + if (woody->Phdr[i].p_offset >= from) { woody->Phdr[i].p_offset += offset_ammount; - woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; + woody->Phdr[i].p_vaddr += offset_ammount; + woody->Phdr[i].p_paddr += offset_ammount; } } for (int i = 0; i < woody->Ehdr->e_shnum; i++) { - if (woody->Shdr[i].sh_offset > from) + if (woody->Shdr[i].sh_offset >= from) + { woody->Shdr[i].sh_offset += offset_ammount; + woody->Shdr[i].sh_addr += offset_ammount; + } + } + int num_symbols = get_symbols_count(woody->symbols_table->sh_size, woody->symbols_table->sh_entsize); + for (int i = 1; i < num_symbols; i++) { + if (woody->symbols[i].st_value >= from) + { + woody->symbols[i].st_value += offset_ammount; + } + // printf("symbol value = %lx\n", symbols[i].st_value); } } @@ -76,6 +88,7 @@ void create_codecave(t_elf_content *woody, t_payload *payload, size_t payload_po woody->file = new_woody; woody->file_size += padding_size; woody->Ehdr = (Elf64_Ehdr *)new_woody; + woody->Ehdr->e_shoff += padding_size; woody->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_phoff, sizeof(Elf64_Phdr)); woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); } @@ -141,6 +154,7 @@ void inject(t_elf_content *woody) if (code_cave_size < payload->len) // inverse here to test the other technique { + printf("Create a codecave\n"); create_codecave(woody, payload, payload_position); } @@ -167,6 +181,17 @@ int get_elf_sections(t_elf_content *woody) woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); if (!woody->Shdr|| !fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, woody->Ehdr->e_shnum * sizeof(Elf64_Shdr))) return EXIT_FAILURE; + + for (int i = 0; i < woody->Ehdr->e_shnum; i++) { + if (woody->Shdr[i].sh_type == SHT_SYMTAB) { + woody->symbols_table = fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (i * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr)); + } + } + if (woody->symbols_table == NULL) + return EXIT_FAILURE; //Not sure about this + woody->symbols = (Elf64_Sym *)fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset, sizeof(Elf64_Sym)); + if (woody->symbols == NULL) + return EXIT_FAILURE;//Not sure about this return EXIT_SUCCESS; } -- 2.20.1 From 8571953eb35a5f51e5cb6cf41dce66f2d8140acc Mon Sep 17 00:00:00 2001 From: pbonilla Date: Sun, 16 Jun 2024 16:30:50 +0200 Subject: [PATCH 08/13] entry of relat section offset --- includes/woody.h | 2 ++ print.s | 2 +- srcs/encrypt.c | 2 +- srcs/woody.c | 86 +++++++++++++++++++++++++++++++++++++++--------- 4 files changed, 74 insertions(+), 18 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index bb61913..4b4fb19 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -37,6 +37,8 @@ typedef struct elf_content Elf64_Phdr *Phdr; Elf64_Shdr *Shdr; Elf64_Shdr *symbols_table; + int num_symbols; + Elf64_Shdr *text_section; Elf64_Sym *symbols; } t_elf_content; diff --git a/print.s b/print.s index 0b5475f..9347f3e 100644 --- a/print.s +++ b/print.s @@ -18,7 +18,7 @@ _start: cmp r8, r9 je end_encrypt movzx r10, byte[rax + r9] - inc r10b ;rot + 1 + ;inc r10b ;rot + 1 mov byte[rax + r9], r10b inc r9 jmp encrypt diff --git a/srcs/encrypt.c b/srcs/encrypt.c index c57c8f1..f5b5f58 100644 --- a/srcs/encrypt.c +++ b/srcs/encrypt.c @@ -5,7 +5,7 @@ void encrypt(char *file, unsigned long int offset, unsigned long int size) size_t i = 0; while (i < size) { - file[offset + i] = file[offset + i] - 1; + file[offset + i] = file[offset + i];// - 1; ++i; } printf("\nENCRYPTION : \n"); diff --git a/srcs/woody.c b/srcs/woody.c index 8c7c21c..bf6321a 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -63,27 +63,60 @@ void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offse woody->Shdr[i].sh_addr += offset_ammount; } } - int num_symbols = get_symbols_count(woody->symbols_table->sh_size, woody->symbols_table->sh_entsize); - for (int i = 1; i < num_symbols; i++) { + for (int i = 1; i < woody->num_symbols; i++) + { if (woody->symbols[i].st_value >= from) { woody->symbols[i].st_value += offset_ammount; } - // printf("symbol value = %lx\n", symbols[i].st_value); } + for (int i = 0; i < woody->Ehdr->e_shnum; i++) { + if (woody->Shdr[i].sh_type == SHT_REL) + { + printf("SHT_RE = %ld %ld\n", sizeof(Elf64_Rel), woody->Shdr[i].sh_entsize); + int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; + for (int j = 0; j < num_entries; j++) { + Elf64_Rel *rel = (Elf64_Rel *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset + (j * woody->Shdr[i].sh_entsize), sizeof(Elf64_Rel)); + rel->r_offset += offset_ammount; + // printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u\n", + // (unsigned long)rel[j].r_offset, (unsigned long)rel[j].r_info, + // (unsigned int)ELF64_R_TYPE(rel[j].r_info), (unsigned int)ELF64_R_SYM(rel[j].r_info)); + } + } + if (woody->Shdr[i].sh_type == SHT_RELA) + { + // printf("SHT_RELA = %ld %ld\n", sizeof(Elf64_Rela), woody->Shdr[i].sh_entsize); + int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; + for (int j = 0; j < num_entries; j++) { + Elf64_Rela *rela = (Elf64_Rela *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset + (j * woody->Shdr[i].sh_entsize), sizeof(Elf64_Rela)); + rela->r_offset += offset_ammount; + // printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u, Addend: %ld\n", + // (unsigned long)rela[j].r_offset, (unsigned long)rela[j].r_info, + // (unsigned int)ELF64_R_TYPE(rela[j].r_info), (unsigned int)ELF64_R_SYM(rela[j].r_info), + // (long)rela[j].r_addend); + if (rela->r_addend >= from) + { + rela->r_addend += offset_ammount; + } + + } + } + } + } -void create_codecave(t_elf_content *woody, t_payload *payload, size_t payload_position) +void create_codecave(t_elf_content *woody, t_payload *payload, size_t enlarge_position) { const unsigned int page_size = 4096; // getpagesize(); not authorized unsigned int padding_size = ((payload->len / page_size) + 1) * page_size; - offset_sections(woody, payload_position, padding_size); + printf("padding size = %d\n", padding_size); + offset_sections(woody, enlarge_position, padding_size); char *new_woody = malloc(woody->file_size + padding_size); + ft_bzero(new_woody, woody->file_size + padding_size); if (!new_woody) return ; - ft_memcpy(new_woody, woody->file, payload_position); - ft_bzero(new_woody + payload_position, padding_size); - ft_memcpy(new_woody + payload_position + padding_size, woody->file + payload_position, woody->file_size - payload_position); + ft_memcpy(new_woody, woody->file, enlarge_position); + ft_memcpy(new_woody + enlarge_position + padding_size, woody->file + enlarge_position, woody->file_size - enlarge_position); munmap(woody->file, woody->file_size); woody->file = new_woody; woody->file_size += padding_size; @@ -152,20 +185,34 @@ void inject(t_elf_content *woody) size_t code_cave_size = woody->Phdr[j].p_offset - (woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz); size_t payload_position = woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz; + // printf("Load segment p_offset = %lx\n", woody->Phdr[i].p_offset); + // printf("Load segment p_filesz = %lx\n", woody->Phdr[i].p_filesz); + // printf("Load segment p_memsz = %lx\n", woody->Phdr[i].p_memsz); + + // printf("Load segment p_offset = %lx\n", woody->Phdr[i + 1].p_offset); + // printf("Load segment p_filesz = %lx\n", woody->Phdr[i + 1].p_filesz); + // printf("Load segment p_memsz = %lx\n", woody->Phdr[i + 1].p_memsz); + + // printf("text section sh_offset = %lx\n", woody->text_section->sh_offset); + // printf("text section sh_size = %lx\n", woody->text_section->sh_size); + // printf("text section sh_addr = %lx\n", woody->text_section->sh_addr); + if (code_cave_size < payload->len) // inverse here to test the other technique { - printf("Create a codecave\n"); - create_codecave(woody, payload, payload_position); + printf("create code_Cave %ld\n", code_cave_size); + create_codecave(woody, payload, woody->Phdr[j].p_offset); } - encrypt(woody->file, woody->Phdr[i].p_offset, woody->Phdr[i].p_memsz); - insert_payload(woody, payload, payload_position, i); - - woody->Ehdr->e_entry = payload_position; woody->Phdr[i].p_filesz += payload->len; woody->Phdr[i].p_memsz += payload->len; - woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; + printf("%ld\n", woody->Phdr[i].p_align); + (void)payload_position; + insert_payload(woody, payload, payload_position, i); + //woody->Ehdr->e_entry = payload_position; printf("New entry = %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); + printf("Load segment p_filesz = %lx\n", woody->Phdr[i].p_filesz); + printf("Load segment p_memsz = %lx\n", woody->Phdr[i].p_memsz); + woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; } int get_elf_sections(t_elf_content *woody) @@ -186,12 +233,19 @@ int get_elf_sections(t_elf_content *woody) if (woody->Shdr[i].sh_type == SHT_SYMTAB) { woody->symbols_table = fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (i * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr)); } + if (woody->Shdr[i].sh_type == SHT_PROGBITS && (woody->Shdr[i].sh_flags & SHF_EXECINSTR) && (woody->Shdr[i].sh_flags & SHF_ALLOC)) { + woody->text_section = fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (i * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr)); + } } - if (woody->symbols_table == NULL) + if (woody->symbols_table == NULL || woody->text_section == NULL) return EXIT_FAILURE; //Not sure about this woody->symbols = (Elf64_Sym *)fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset, sizeof(Elf64_Sym)); if (woody->symbols == NULL) return EXIT_FAILURE;//Not sure about this + woody->num_symbols = get_symbols_count(woody->symbols_table->sh_size, woody->symbols_table->sh_entsize); + if (!fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset + (sizeof(Elf64_Sym) * (woody->num_symbols)), 0)) + return EXIT_FAILURE; + return EXIT_SUCCESS; } -- 2.20.1 From 8c994bb1968eef63daa76460ff8c454c045bbf67 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Mon, 17 Jun 2024 19:28:54 +0200 Subject: [PATCH 09/13] update entry of .got .dynamic --- includes/woody.h | 2 + srcs/utils.c | 6 +++ srcs/woody.c | 106 +++++++++++++++++++++++++++-------------------- 3 files changed, 70 insertions(+), 44 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index 4b4fb19..6c516f8 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -40,6 +40,7 @@ typedef struct elf_content int num_symbols; Elf64_Shdr *text_section; Elf64_Sym *symbols; + char *Sshstrtab; } t_elf_content; // utils.c @@ -47,6 +48,7 @@ void *fetch(char *file, unsigned long file_size, unsigned long offset_to_data, u int ft_put_error(char *str); char *get_string(char *str, char *end_file); int get_symbols_count(int sh_size, int sh_entsize); +char *get_section_name(t_elf_content *woody, int section_index); // woody.c int prepare_injection(t_elf_content *woody); diff --git a/srcs/utils.c b/srcs/utils.c index 1857a26..6355bfa 100644 --- a/srcs/utils.c +++ b/srcs/utils.c @@ -27,6 +27,12 @@ char *get_string(char *str, char *end_file) return NULL; } +char *get_section_name(t_elf_content *woody, int section_index) +{ + unsigned int shstrtabndx = woody->Shdr[section_index].sh_name; + return get_string(&woody->Sshstrtab[shstrtabndx], woody->file + woody->file_size); +} + int ft_put_error(char *str) { ft_putstr_fd("Error: ", STDERR_FILENO); diff --git a/srcs/woody.c b/srcs/woody.c index bf6321a..00cafba 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -46,6 +46,63 @@ int get_load_segment(t_elf_content *woody, int start, bool executable) void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offset_ammount) { + for (int i = 0; i < woody->Ehdr->e_shnum; i++) + { + if (woody->Shdr[i].sh_type == SHT_REL) + { + int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; + Elf64_Rel *rel = (Elf64_Rel *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset, woody->Shdr[i].sh_size); + for (int j = 0; j < num_entries; j++) + { + rel[j].r_offset += offset_ammount; + printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u\n", + (unsigned long)rel[j].r_offset, (unsigned long)rel[j].r_info, + (unsigned int)ELF64_R_TYPE(rel[j].r_info), (unsigned int)ELF64_R_SYM(rel[j].r_info)); + } + } + else if (woody->Shdr[i].sh_type == SHT_RELA) + { + int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; + Elf64_Rela *rela = (Elf64_Rela *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset , woody->Shdr[i].sh_size); + for (int j = 0; j < num_entries; j++) + { + rela[j].r_offset += offset_ammount; + if (rela[j].r_addend >= from) + rela[j].r_addend += offset_ammount; + + // printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u adden: 0x%lx\n", + // (unsigned long)rela[j].r_offset, (unsigned long)rela[j].r_info, + // (unsigned int)ELF64_R_TYPE(rela[j].r_info), (unsigned int)ELF64_R_SYM(rela[j].r_info), (unsigned long)rela[j].r_addend); + + + } + } else if (woody->Shdr[i].sh_type == SHT_DYNAMIC) + { + int num_dyn_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; + Elf64_Dyn *dyn_entries = (Elf64_Dyn *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset , woody->Shdr[i].sh_size); + for (int j = 0; j < num_dyn_entries; j++) + { + // printf("dyn_entries[%d].d_tag = %lx ptr = %lx value = %lx\n",j, dyn_entries[j].d_tag, dyn_entries[j].d_un.d_ptr, dyn_entries[j].d_un.d_val); + if (dyn_entries[j].d_tag == DT_PLTGOT || dyn_entries[j].d_tag == DT_FINI || dyn_entries[j].d_tag == DT_INIT_ARRAY || dyn_entries[j].d_tag == DT_FINI_ARRAY) + { + dyn_entries[j].d_un.d_ptr += offset_ammount; + } + } + } + char *section_name = get_section_name(woody, i); + if (section_name && !ft_strcmp(".got", section_name)) + { + int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; + Elf64_Addr *got_entri = (Elf64_Addr *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset, woody->Shdr[i].sh_size); + for (int j = 0; j < num_entries; j++) + { + if (got_entri[j]) + { + got_entri[j] += offset_ammount; + } + } + } + } for (int i = 0; i < woody->Ehdr->e_phnum; i++) { if (woody->Phdr[i].p_offset >= from) @@ -70,38 +127,7 @@ void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offse woody->symbols[i].st_value += offset_ammount; } } - for (int i = 0; i < woody->Ehdr->e_shnum; i++) { - if (woody->Shdr[i].sh_type == SHT_REL) - { - printf("SHT_RE = %ld %ld\n", sizeof(Elf64_Rel), woody->Shdr[i].sh_entsize); - int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; - for (int j = 0; j < num_entries; j++) { - Elf64_Rel *rel = (Elf64_Rel *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset + (j * woody->Shdr[i].sh_entsize), sizeof(Elf64_Rel)); - rel->r_offset += offset_ammount; - // printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u\n", - // (unsigned long)rel[j].r_offset, (unsigned long)rel[j].r_info, - // (unsigned int)ELF64_R_TYPE(rel[j].r_info), (unsigned int)ELF64_R_SYM(rel[j].r_info)); - } - } - if (woody->Shdr[i].sh_type == SHT_RELA) - { - // printf("SHT_RELA = %ld %ld\n", sizeof(Elf64_Rela), woody->Shdr[i].sh_entsize); - int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; - for (int j = 0; j < num_entries; j++) { - Elf64_Rela *rela = (Elf64_Rela *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset + (j * woody->Shdr[i].sh_entsize), sizeof(Elf64_Rela)); - rela->r_offset += offset_ammount; - // printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u, Addend: %ld\n", - // (unsigned long)rela[j].r_offset, (unsigned long)rela[j].r_info, - // (unsigned int)ELF64_R_TYPE(rela[j].r_info), (unsigned int)ELF64_R_SYM(rela[j].r_info), - // (long)rela[j].r_addend); - if (rela->r_addend >= from) - { - rela->r_addend += offset_ammount; - } - } - } - } } @@ -185,18 +211,6 @@ void inject(t_elf_content *woody) size_t code_cave_size = woody->Phdr[j].p_offset - (woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz); size_t payload_position = woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz; - // printf("Load segment p_offset = %lx\n", woody->Phdr[i].p_offset); - // printf("Load segment p_filesz = %lx\n", woody->Phdr[i].p_filesz); - // printf("Load segment p_memsz = %lx\n", woody->Phdr[i].p_memsz); - - // printf("Load segment p_offset = %lx\n", woody->Phdr[i + 1].p_offset); - // printf("Load segment p_filesz = %lx\n", woody->Phdr[i + 1].p_filesz); - // printf("Load segment p_memsz = %lx\n", woody->Phdr[i + 1].p_memsz); - - // printf("text section sh_offset = %lx\n", woody->text_section->sh_offset); - // printf("text section sh_size = %lx\n", woody->text_section->sh_size); - // printf("text section sh_addr = %lx\n", woody->text_section->sh_addr); - if (code_cave_size < payload->len) // inverse here to test the other technique { printf("create code_Cave %ld\n", code_cave_size); @@ -208,7 +222,7 @@ void inject(t_elf_content *woody) printf("%ld\n", woody->Phdr[i].p_align); (void)payload_position; insert_payload(woody, payload, payload_position, i); - //woody->Ehdr->e_entry = payload_position; + woody->Ehdr->e_entry = payload_position; printf("New entry = %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); printf("Load segment p_filesz = %lx\n", woody->Phdr[i].p_filesz); printf("Load segment p_memsz = %lx\n", woody->Phdr[i].p_memsz); @@ -236,12 +250,16 @@ int get_elf_sections(t_elf_content *woody) if (woody->Shdr[i].sh_type == SHT_PROGBITS && (woody->Shdr[i].sh_flags & SHF_EXECINSTR) && (woody->Shdr[i].sh_flags & SHF_ALLOC)) { woody->text_section = fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (i * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr)); } + } if (woody->symbols_table == NULL || woody->text_section == NULL) return EXIT_FAILURE; //Not sure about this woody->symbols = (Elf64_Sym *)fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset, sizeof(Elf64_Sym)); if (woody->symbols == NULL) return EXIT_FAILURE;//Not sure about this + woody->Sshstrtab = (char *)fetch(woody->file, woody->file_size, woody->Shdr[woody->Ehdr->e_shstrndx].sh_offset, 0); + if (woody->Sshstrtab == NULL) + return EXIT_FAILURE; //Not sure about this woody->num_symbols = get_symbols_count(woody->symbols_table->sh_size, woody->symbols_table->sh_entsize); if (!fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset + (sizeof(Elf64_Sym) * (woody->num_symbols)), 0)) return EXIT_FAILURE; -- 2.20.1 From 3dfc4c27d2c56f0635847e059b3c846d88d56231 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Tue, 18 Jun 2024 18:11:20 +0200 Subject: [PATCH 10/13] refactoring and removing code cave creation --- includes/woody.h | 6 +- srcs/main.c | 57 ++++++++++-- srcs/woody.c | 230 +++++++++-------------------------------------- 3 files changed, 98 insertions(+), 195 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index 6c516f8..b7b02f4 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -25,7 +25,7 @@ typedef struct payload { char *payload; - size_t len; + int len; } t_payload; typedef struct elf_content @@ -51,7 +51,9 @@ int get_symbols_count(int sh_size, int sh_entsize); char *get_section_name(t_elf_content *woody, int section_index); // woody.c -int prepare_injection(t_elf_content *woody); +int inject(t_elf_content *woody); +int get_elf_sections(t_elf_content *woody); + // encrypt.c void encrypt(char *file, unsigned long int offset, unsigned long int size); diff --git a/srcs/main.c b/srcs/main.c index 173f3e1..87ac802 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -8,14 +8,14 @@ int get_elf_file(t_elf_content *woody) fd = open(woody->file_path, O_RDONLY); if (fd < 0) { - printf("Error: Failed to open \'%s\'\n", woody->file_path); + ft_printf("Error: Failed to open \'%s\'\n", woody->file_path); return EXIT_FAILURE; } off = lseek(fd, 0, SEEK_END); if (off == -1) { close(fd); - printf("Error: Failed to read file offset \'%s\'\n", woody->file_path); + ft_printf("Error: Failed to read file offset \'%s\'\n", woody->file_path); return EXIT_FAILURE; } woody->file_size = off; @@ -23,13 +23,47 @@ int get_elf_file(t_elf_content *woody) if (woody->file == MAP_FAILED) { close(fd); - printf("Error: Failed to map file \'%s\'\n", woody->file_path); + ft_printf("Error: Failed to map file \'%s\'\n", woody->file_path); return EXIT_FAILURE; } close(fd); return EXIT_SUCCESS; } +int save_file(char *path, char *file, unsigned long int size) +{ + int fd = open(path, O_CREAT | O_WRONLY | O_TRUNC, 0755); + if (fd == -1) { + printf("Error: Failed to create new file \'%s\'\n", path); + return EXIT_FAILURE; + } + + if (write(fd, file, size) == -1) { + close(fd); + printf("Error: Failed to write new file \'%s\'\n", path); + return EXIT_FAILURE; + } + close(fd); + return EXIT_SUCCESS; +} + +int save_woody(t_elf_content *woody) +{ + char *woody_file = malloc(woody->file_size); + if (!woody_file) + return ft_put_error("Allocation error"); + ft_memcpy(woody_file, woody->file, woody->file_size); + + if (munmap(woody->file, woody->file_size)) + return ft_put_error("Umapping error"); + + int save_error = save_file("woody", woody_file, woody->file_size); + if (save_error) + return save_error; + free(woody_file); + return EXIT_SUCCESS; +} + int main(int ac, char **av) { t_elf_content woody; @@ -38,9 +72,18 @@ int main(int ac, char **av) return ft_put_error("Woody_woodpacker take 1 argument\n"); } woody.file_path = av[1]; - int ret = get_elf_file(&woody); - if (ret == EXIT_FAILURE) - return ret; - return prepare_injection(&woody); + int elf_error = get_elf_file(&woody); + if (elf_error) + return elf_error; + elf_error = get_elf_sections(&woody); + if (elf_error) + return elf_error; + + int inject_error = inject(&woody); + if (!inject_error) + { + return save_woody(&woody); + } + return EXIT_SUCCESS; } diff --git a/srcs/woody.c b/srcs/woody.c index 00cafba..c9d8fbe 100644 --- a/srcs/woody.c +++ b/srcs/woody.c @@ -5,27 +5,6 @@ int elf_magic_numbers(char *str) return (!ft_strncmp(str, ELFMAG, SELFMAG)); } -int save_elf(char *path, char *file, unsigned long int size) -{ - int fd = open(path, O_CREAT | O_WRONLY | O_TRUNC, 0755); - if (fd == -1) { - printf("Error: Failed to create new file \'%s\'\n", path); - return EXIT_FAILURE; - } - - if (write(fd, file, size) == -1) { - close(fd); - printf("Error: Failed to write new file \'%s\'\n", path); - return EXIT_FAILURE; - } - - if (close(fd) == -1) { - printf("Error: Failed to close new file \'%s\'\n", path); - return EXIT_FAILURE; - } - return EXIT_SUCCESS; -} - int get_load_segment(t_elf_content *woody, int start, bool executable) { for (int i = start; i < woody->Ehdr->e_phnum; i++) @@ -44,114 +23,6 @@ int get_load_segment(t_elf_content *woody, int start, bool executable) return -1; } -void offset_sections(t_elf_content *woody, unsigned int from, unsigned int offset_ammount) -{ - for (int i = 0; i < woody->Ehdr->e_shnum; i++) - { - if (woody->Shdr[i].sh_type == SHT_REL) - { - int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; - Elf64_Rel *rel = (Elf64_Rel *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset, woody->Shdr[i].sh_size); - for (int j = 0; j < num_entries; j++) - { - rel[j].r_offset += offset_ammount; - printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u\n", - (unsigned long)rel[j].r_offset, (unsigned long)rel[j].r_info, - (unsigned int)ELF64_R_TYPE(rel[j].r_info), (unsigned int)ELF64_R_SYM(rel[j].r_info)); - } - } - else if (woody->Shdr[i].sh_type == SHT_RELA) - { - int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; - Elf64_Rela *rela = (Elf64_Rela *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset , woody->Shdr[i].sh_size); - for (int j = 0; j < num_entries; j++) - { - rela[j].r_offset += offset_ammount; - if (rela[j].r_addend >= from) - rela[j].r_addend += offset_ammount; - - // printf(" Offset: 0x%lx, Info: 0x%lx, Type: %u, Symbol: %u adden: 0x%lx\n", - // (unsigned long)rela[j].r_offset, (unsigned long)rela[j].r_info, - // (unsigned int)ELF64_R_TYPE(rela[j].r_info), (unsigned int)ELF64_R_SYM(rela[j].r_info), (unsigned long)rela[j].r_addend); - - - } - } else if (woody->Shdr[i].sh_type == SHT_DYNAMIC) - { - int num_dyn_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; - Elf64_Dyn *dyn_entries = (Elf64_Dyn *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset , woody->Shdr[i].sh_size); - for (int j = 0; j < num_dyn_entries; j++) - { - // printf("dyn_entries[%d].d_tag = %lx ptr = %lx value = %lx\n",j, dyn_entries[j].d_tag, dyn_entries[j].d_un.d_ptr, dyn_entries[j].d_un.d_val); - if (dyn_entries[j].d_tag == DT_PLTGOT || dyn_entries[j].d_tag == DT_FINI || dyn_entries[j].d_tag == DT_INIT_ARRAY || dyn_entries[j].d_tag == DT_FINI_ARRAY) - { - dyn_entries[j].d_un.d_ptr += offset_ammount; - } - } - } - char *section_name = get_section_name(woody, i); - if (section_name && !ft_strcmp(".got", section_name)) - { - int num_entries = woody->Shdr[i].sh_size / woody->Shdr[i].sh_entsize; - Elf64_Addr *got_entri = (Elf64_Addr *)fetch(woody->file, woody->file_size, woody->Shdr[i].sh_offset, woody->Shdr[i].sh_size); - for (int j = 0; j < num_entries; j++) - { - if (got_entri[j]) - { - got_entri[j] += offset_ammount; - } - } - } - } - for (int i = 0; i < woody->Ehdr->e_phnum; i++) - { - if (woody->Phdr[i].p_offset >= from) - { - woody->Phdr[i].p_offset += offset_ammount; - woody->Phdr[i].p_vaddr += offset_ammount; - woody->Phdr[i].p_paddr += offset_ammount; - } - } - for (int i = 0; i < woody->Ehdr->e_shnum; i++) - { - if (woody->Shdr[i].sh_offset >= from) - { - woody->Shdr[i].sh_offset += offset_ammount; - woody->Shdr[i].sh_addr += offset_ammount; - } - } - for (int i = 1; i < woody->num_symbols; i++) - { - if (woody->symbols[i].st_value >= from) - { - woody->symbols[i].st_value += offset_ammount; - } - } - - -} - -void create_codecave(t_elf_content *woody, t_payload *payload, size_t enlarge_position) -{ - const unsigned int page_size = 4096; // getpagesize(); not authorized - unsigned int padding_size = ((payload->len / page_size) + 1) * page_size; - printf("padding size = %d\n", padding_size); - offset_sections(woody, enlarge_position, padding_size); - char *new_woody = malloc(woody->file_size + padding_size); - ft_bzero(new_woody, woody->file_size + padding_size); - if (!new_woody) - return ; - ft_memcpy(new_woody, woody->file, enlarge_position); - ft_memcpy(new_woody + enlarge_position + padding_size, woody->file + enlarge_position, woody->file_size - enlarge_position); - munmap(woody->file, woody->file_size); - woody->file = new_woody; - woody->file_size += padding_size; - woody->Ehdr = (Elf64_Ehdr *)new_woody; - woody->Ehdr->e_shoff += padding_size; - woody->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_phoff, sizeof(Elf64_Phdr)); - woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); -} - t_payload *get_payload() { t_payload *payload = malloc(sizeof(t_payload)); @@ -160,12 +31,27 @@ t_payload *get_payload() char buffer[1024]; int fd = open("payload", O_RDONLY); if (fd == -1) { - perror("error opening payload"); + ft_put_error("Failed to open payload"); free(payload); - exit(1); + close(fd); + return NULL; } payload->len = read(fd, buffer, 1024); + if (payload->len == -1) + { + ft_put_error("Failed to read payload"); + free(payload); + close(fd); + return NULL; + } + close(fd); payload->payload = malloc(sizeof(char) * payload->len); + if (!payload->payload) + { + ft_put_error("Allocation error"); + free(payload); + return NULL; + } ft_memcpy(payload->payload, buffer, payload->len); return payload; } @@ -188,45 +74,56 @@ int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_posi ft_memcpy(&payload->payload[text_index], &text_value, sizeof(text_value)); int64_t section_index = ptr_section_size - payload->payload; - int64_t section_value = woody->Phdr[load_segment_index].p_memsz; //woody->text_section->sh_size; + int64_t section_value = woody->Phdr[load_segment_index].p_memsz; ft_memcpy(&payload->payload[section_index], §ion_value, sizeof(section_value)); ft_memcpy(woody->file + payload_position, payload->payload, payload->len); - - printf("Old entry : %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); - printf("Code cave start = %ld (%lx)\n", payload_position, payload_position); - printf("Payload size = %ld (%lx)\n", payload->len, payload->len); - printf("Backward offset = %d (%x)(%x)\n", jump_value, jump_value, -jump_value); return EXIT_SUCCESS; } return EXIT_FAILURE; } -void inject(t_elf_content *woody) +int inject(t_elf_content *woody) { t_payload *payload = get_payload(); + if (!payload) + return EXIT_FAILURE; + int i = get_load_segment(woody, 0, true); int j = get_load_segment(woody, i + 1, false); + if (i == -1 || j != i + 1) + { + free(payload->payload); + free(payload); + return ft_put_error("PT_LOAD segment missing"); + } + size_t code_cave_size = woody->Phdr[j].p_offset - (woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz); size_t payload_position = woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz; - if (code_cave_size < payload->len) // inverse here to test the other technique + if (code_cave_size < (size_t)payload->len) { - printf("create code_Cave %ld\n", code_cave_size); - create_codecave(woody, payload, woody->Phdr[j].p_offset); + free(payload->payload); + free(payload); + return ft_put_error("Unable to insert payload, not enough space for code cave"); } woody->Phdr[i].p_filesz += payload->len; woody->Phdr[i].p_memsz += payload->len; - printf("%ld\n", woody->Phdr[i].p_align); - (void)payload_position; - insert_payload(woody, payload, payload_position, i); + + if (insert_payload(woody, payload, payload_position, i)) + { + free(payload->payload); + free(payload); + return ft_put_error("Unable to insert payload, please regenerate it"); + } + woody->Ehdr->e_entry = payload_position; - printf("New entry = %ld (%lx)\n", woody->Ehdr->e_entry, woody->Ehdr->e_entry); - printf("Load segment p_filesz = %lx\n", woody->Phdr[i].p_filesz); - printf("Load segment p_memsz = %lx\n", woody->Phdr[i].p_memsz); woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; + free(payload->payload); + free(payload); + return EXIT_SUCCESS; } int get_elf_sections(t_elf_content *woody) @@ -242,44 +139,5 @@ int get_elf_sections(t_elf_content *woody) woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); if (!woody->Shdr|| !fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, woody->Ehdr->e_shnum * sizeof(Elf64_Shdr))) return EXIT_FAILURE; - - for (int i = 0; i < woody->Ehdr->e_shnum; i++) { - if (woody->Shdr[i].sh_type == SHT_SYMTAB) { - woody->symbols_table = fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (i * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr)); - } - if (woody->Shdr[i].sh_type == SHT_PROGBITS && (woody->Shdr[i].sh_flags & SHF_EXECINSTR) && (woody->Shdr[i].sh_flags & SHF_ALLOC)) { - woody->text_section = fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff + (i * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr)); - } - - } - if (woody->symbols_table == NULL || woody->text_section == NULL) - return EXIT_FAILURE; //Not sure about this - woody->symbols = (Elf64_Sym *)fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset, sizeof(Elf64_Sym)); - if (woody->symbols == NULL) - return EXIT_FAILURE;//Not sure about this - woody->Sshstrtab = (char *)fetch(woody->file, woody->file_size, woody->Shdr[woody->Ehdr->e_shstrndx].sh_offset, 0); - if (woody->Sshstrtab == NULL) - return EXIT_FAILURE; //Not sure about this - woody->num_symbols = get_symbols_count(woody->symbols_table->sh_size, woody->symbols_table->sh_entsize); - if (!fetch(woody->file, woody->file_size, woody->symbols_table->sh_offset + (sizeof(Elf64_Sym) * (woody->num_symbols)), 0)) - return EXIT_FAILURE; - return EXIT_SUCCESS; } - -int prepare_injection(t_elf_content *woody) -{ - int elf_statut = get_elf_sections(woody); - if (elf_statut) - return elf_statut; - inject(woody); - char *woody_file; - if (!(woody_file = malloc(woody->file_size))) - return ft_put_error("Allocation error"); - ft_memcpy(woody_file, woody->file, woody->file_size); - munmap(woody_file, woody->file_size); - save_elf("woody", woody_file, woody->file_size); - free(woody_file); - return EXIT_SUCCESS; -} - -- 2.20.1 From 1c9ce758736ee22c8cc1ef4b9a0e493eee198c13 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 19 Jun 2024 15:21:28 +0200 Subject: [PATCH 11/13] 32 bits management --- Makefile | 4 +- includes/woody.h | 39 +++++++++---- print.s | 2 +- srcs/encrypt.c | 6 +- srcs/main.c | 56 +++++++++++++++---- srcs/payload.c | 61 ++++++++++++++++++++ srcs/utils.c | 12 ++-- srcs/woody.c | 143 ----------------------------------------------- srcs/woody32.c | 80 ++++++++++++++++++++++++++ srcs/woody64.c | 80 ++++++++++++++++++++++++++ 10 files changed, 304 insertions(+), 179 deletions(-) create mode 100644 srcs/payload.c delete mode 100644 srcs/woody.c create mode 100644 srcs/woody32.c create mode 100644 srcs/woody64.c diff --git a/Makefile b/Makefile index c6b661f..faa514a 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,9 @@ SRCS_PATH = srcs/ SRCS = $(SRCS_PATH)main.c \ $(SRCS_PATH)utils.c \ - $(SRCS_PATH)woody.c \ + $(SRCS_PATH)payload.c \ + $(SRCS_PATH)woody32.c \ + $(SRCS_PATH)woody64.c \ $(SRCS_PATH)encrypt.c diff --git a/includes/woody.h b/includes/woody.h index b7b02f4..540ce44 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -28,19 +28,27 @@ typedef struct payload int len; } t_payload; +typedef struct elf32 +{ + Elf32_Ehdr *Ehdr; + Elf32_Phdr *Phdr; + Elf32_Shdr *Shdr; +} t_elf32; + +typedef struct elf64 +{ + Elf64_Ehdr *Ehdr; + Elf64_Phdr *Phdr; + Elf64_Shdr *Shdr; +} t_elf64; + typedef struct elf_content { long unsigned int file_size; char *file_path; char *file; - Elf64_Ehdr *Ehdr; - Elf64_Phdr *Phdr; - Elf64_Shdr *Shdr; - Elf64_Shdr *symbols_table; - int num_symbols; - Elf64_Shdr *text_section; - Elf64_Sym *symbols; - char *Sshstrtab; + t_elf32 *elf32; + t_elf64 *elf64; } t_elf_content; // utils.c @@ -49,10 +57,19 @@ int ft_put_error(char *str); char *get_string(char *str, char *end_file); int get_symbols_count(int sh_size, int sh_entsize); char *get_section_name(t_elf_content *woody, int section_index); +int elf_magic_numbers(char *str); -// woody.c -int inject(t_elf_content *woody); -int get_elf_sections(t_elf_content *woody); +// payload.c +t_payload *get_payload(); +int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_position, unsigned int e_entry, unsigned int p_offset, unsigned int p_memsz); + +// woody32.c +int get_elf_sections32(t_elf_content *woody); +int inject32(t_elf_content *woody); + +// woody64.c +int get_elf_sections64(t_elf_content *woody); +int inject64(t_elf_content *woody); // encrypt.c diff --git a/print.s b/print.s index 9347f3e..0b5475f 100644 --- a/print.s +++ b/print.s @@ -18,7 +18,7 @@ _start: cmp r8, r9 je end_encrypt movzx r10, byte[rax + r9] - ;inc r10b ;rot + 1 + inc r10b ;rot + 1 mov byte[rax + r9], r10b inc r9 jmp encrypt diff --git a/srcs/encrypt.c b/srcs/encrypt.c index f5b5f58..f7866d7 100644 --- a/srcs/encrypt.c +++ b/srcs/encrypt.c @@ -5,11 +5,7 @@ void encrypt(char *file, unsigned long int offset, unsigned long int size) size_t i = 0; while (i < size) { - file[offset + i] = file[offset + i];// - 1; + file[offset + i] = file[offset + i] - 1; ++i; } - printf("\nENCRYPTION : \n"); - printf(" File encrypted from %ld (%lx) to %ld (%lx)\n", offset, offset, offset + size, offset + size); - printf(" Size of encryption = %ld (%lx)\n", size, size); - printf("\n"); } \ No newline at end of file diff --git a/srcs/main.c b/srcs/main.c index 87ac802..b41b121 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -1,5 +1,12 @@ #include "../includes/woody.h" +void free_elf_content(t_elf_content *woody) +{ + if (woody->elf32) + free(woody->elf32); + else if (woody->elf64) + free(woody->elf64); +} int get_elf_file(t_elf_content *woody) { int fd; @@ -34,13 +41,13 @@ int save_file(char *path, char *file, unsigned long int size) { int fd = open(path, O_CREAT | O_WRONLY | O_TRUNC, 0755); if (fd == -1) { - printf("Error: Failed to create new file \'%s\'\n", path); + ft_printf("Error: Failed to create new file \'%s\'\n", path); return EXIT_FAILURE; } if (write(fd, file, size) == -1) { close(fd); - printf("Error: Failed to write new file \'%s\'\n", path); + ft_printf("Error: Failed to write new file \'%s\'\n", path); return EXIT_FAILURE; } close(fd); @@ -66,7 +73,7 @@ int save_woody(t_elf_content *woody) int main(int ac, char **av) { - t_elf_content woody; + t_elf_content woody = {0}; if (ac != 2) { return ft_put_error("Woody_woodpacker take 1 argument\n"); @@ -75,15 +82,42 @@ int main(int ac, char **av) int elf_error = get_elf_file(&woody); if (elf_error) return elf_error; - elf_error = get_elf_sections(&woody); + if (woody.file_size < sizeof(Elf32_Ehdr) || !elf_magic_numbers(woody.file)) + { + ft_printf("Error: \'%s\' is not a valid ELF file\n", woody.file_path); + return EXIT_FAILURE; + } + int elfclass = woody.file[4]; + if (elfclass == ELFCLASS32) + { + if (!(woody.elf32 = malloc(sizeof(t_elf32)))) + return ft_put_error("Allocation error"); + elf_error = get_elf_sections32(&woody); + } + else if (elfclass == ELFCLASS64) + { + if (!(woody.elf64 = malloc(sizeof(t_elf64)))) + return ft_put_error("Allocation error"); + elf_error = get_elf_sections64(&woody); + } + else + { + elf_error = EXIT_FAILURE; + ft_printf("Error: \'%s\' is not a valid ELF file\n", woody.file_path); + } if (elf_error) return elf_error; - - int inject_error = inject(&woody); - if (!inject_error) + int inject_error = -1; + if (elfclass == ELFCLASS32) + inject_error = inject32(&woody); + else if (elfclass == ELFCLASS64) + inject_error = inject64(&woody); + if (inject_error) { - return save_woody(&woody); + free_elf_content(&woody); + return inject_error; } - return EXIT_SUCCESS; -} - + int save_error = save_woody(&woody); + free_elf_content(&woody); + return save_error; +} \ No newline at end of file diff --git a/srcs/payload.c b/srcs/payload.c new file mode 100644 index 0000000..aca3fdf --- /dev/null +++ b/srcs/payload.c @@ -0,0 +1,61 @@ + +#include "../includes/woody.h" + +t_payload *get_payload() +{ + t_payload *payload = malloc(sizeof(t_payload)); + if (!payload) + return NULL; + char buffer[1024]; + int fd = open("payload", O_RDONLY); + if (fd == -1) { + ft_put_error("Failed to open payload"); + free(payload); + return NULL; + } + payload->len = read(fd, buffer, 1024); + if (payload->len == -1) + { + ft_put_error("Failed to read payload"); + free(payload); + close(fd); + return NULL; + } + close(fd); + payload->payload = malloc(sizeof(char) * payload->len); + if (!payload->payload) + { + ft_put_error("Allocation error"); + free(payload); + return NULL; + } + ft_memcpy(payload->payload, buffer, payload->len); + return payload; +} + +int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_position, unsigned int e_entry, unsigned int p_offset, unsigned int p_memsz) +{ + char *ptr_jmp_value = ft_strnstr_nullterminated(payload->payload, JUMP_VALUE, payload->len); + char *ptr_woody = ft_strnstr_nullterminated(payload->payload, WOODY, payload->len); + char *ptr_text_section = ft_strnstr_nullterminated(payload->payload, TEXT_OFFSET, payload->len); + char *ptr_section_size = ft_strnstr_nullterminated(payload->payload, SECTION_SIZE, payload->len); + if (ptr_jmp_value && ptr_woody && ptr_text_section && ptr_section_size) + { + int32_t woody_index = ptr_woody - payload->payload; + int32_t jmp_index = ptr_jmp_value - sizeof(JUMP) - payload->payload; + int32_t jump_value = ((payload_position + jmp_index + 5) - e_entry) * -1; // 5 = JUMP SIZE (OPCODE + 4 bytes operand) + ft_memcpy(&payload->payload[jmp_index + 1], &jump_value, sizeof(jump_value)); + + int64_t text_index = ptr_text_section - payload->payload; + int64_t text_value = payload_position - p_offset + woody_index; + ft_memcpy(&payload->payload[text_index], &text_value, sizeof(text_value)); + + int64_t section_index = ptr_section_size - payload->payload; + int64_t section_value = p_memsz; + ft_memcpy(&payload->payload[section_index], §ion_value, sizeof(section_value)); + + ft_memcpy(woody->file + payload_position, payload->payload, payload->len); + return EXIT_SUCCESS; + } + return EXIT_FAILURE; +} \ No newline at end of file diff --git a/srcs/utils.c b/srcs/utils.c index 6355bfa..92c3fca 100644 --- a/srcs/utils.c +++ b/srcs/utils.c @@ -7,6 +7,11 @@ void *fetch(char *file, unsigned long file_size, unsigned long offset_to_data, u return NULL; } +int elf_magic_numbers(char *str) +{ + return (!ft_strncmp(str, ELFMAG, SELFMAG)); +} + int get_symbols_count(int sh_size, int sh_entsize) { if (sh_size <= 0 || sh_entsize <= 0) @@ -22,17 +27,10 @@ char *get_string(char *str, char *end_file) if (*search_end == 0) return str; ++search_end; - } return NULL; } -char *get_section_name(t_elf_content *woody, int section_index) -{ - unsigned int shstrtabndx = woody->Shdr[section_index].sh_name; - return get_string(&woody->Sshstrtab[shstrtabndx], woody->file + woody->file_size); -} - int ft_put_error(char *str) { ft_putstr_fd("Error: ", STDERR_FILENO); diff --git a/srcs/woody.c b/srcs/woody.c deleted file mode 100644 index c9d8fbe..0000000 --- a/srcs/woody.c +++ /dev/null @@ -1,143 +0,0 @@ -#include "../includes/woody.h" - -int elf_magic_numbers(char *str) -{ - return (!ft_strncmp(str, ELFMAG, SELFMAG)); -} - -int get_load_segment(t_elf_content *woody, int start, bool executable) -{ - for (int i = start; i < woody->Ehdr->e_phnum; i++) - { - if (woody->Phdr[i].p_type == PT_LOAD) - { - if (executable) - { - if (woody->Phdr[i].p_flags & PF_X) - return i; - } - else - return i; - } - } - return -1; -} - -t_payload *get_payload() -{ - t_payload *payload = malloc(sizeof(t_payload)); - if (!payload) - return NULL; - char buffer[1024]; - int fd = open("payload", O_RDONLY); - if (fd == -1) { - ft_put_error("Failed to open payload"); - free(payload); - close(fd); - return NULL; - } - payload->len = read(fd, buffer, 1024); - if (payload->len == -1) - { - ft_put_error("Failed to read payload"); - free(payload); - close(fd); - return NULL; - } - close(fd); - payload->payload = malloc(sizeof(char) * payload->len); - if (!payload->payload) - { - ft_put_error("Allocation error"); - free(payload); - return NULL; - } - ft_memcpy(payload->payload, buffer, payload->len); - return payload; -} - -int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_position, int load_segment_index) -{ - char *ptr_jmp_value = ft_strnstr_nullterminated(payload->payload, JUMP_VALUE, payload->len); - char *ptr_woody = ft_strnstr_nullterminated(payload->payload, WOODY, payload->len); - char *ptr_text_section = ft_strnstr_nullterminated(payload->payload, TEXT_OFFSET, payload->len); - char *ptr_section_size = ft_strnstr_nullterminated(payload->payload, SECTION_SIZE, payload->len); - if (ptr_jmp_value && ptr_woody && ptr_text_section && ptr_section_size) - { - int32_t woody_index = ptr_woody - payload->payload; - int32_t jmp_index = ptr_jmp_value - sizeof(JUMP) - payload->payload; - int32_t jump_value = ((payload_position + jmp_index + 5) - woody->Ehdr->e_entry) * -1; // 5 = JUMP SIZE (OPCODE + 4 bytes operand) - ft_memcpy(&payload->payload[jmp_index + 1], &jump_value, sizeof(jump_value)); - - int64_t text_index = ptr_text_section - payload->payload; - int64_t text_value = payload_position - woody->Phdr[load_segment_index].p_offset + woody_index; - ft_memcpy(&payload->payload[text_index], &text_value, sizeof(text_value)); - - int64_t section_index = ptr_section_size - payload->payload; - int64_t section_value = woody->Phdr[load_segment_index].p_memsz; - ft_memcpy(&payload->payload[section_index], §ion_value, sizeof(section_value)); - - ft_memcpy(woody->file + payload_position, payload->payload, payload->len); - return EXIT_SUCCESS; - } - return EXIT_FAILURE; -} - -int inject(t_elf_content *woody) -{ - t_payload *payload = get_payload(); - if (!payload) - return EXIT_FAILURE; - - int i = get_load_segment(woody, 0, true); - int j = get_load_segment(woody, i + 1, false); - - if (i == -1 || j != i + 1) - { - free(payload->payload); - free(payload); - return ft_put_error("PT_LOAD segment missing"); - } - - size_t code_cave_size = woody->Phdr[j].p_offset - (woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz); - size_t payload_position = woody->Phdr[i].p_offset + woody->Phdr[i].p_filesz; - - if (code_cave_size < (size_t)payload->len) - { - free(payload->payload); - free(payload); - return ft_put_error("Unable to insert payload, not enough space for code cave"); - } - - woody->Phdr[i].p_filesz += payload->len; - woody->Phdr[i].p_memsz += payload->len; - - if (insert_payload(woody, payload, payload_position, i)) - { - free(payload->payload); - free(payload); - return ft_put_error("Unable to insert payload, please regenerate it"); - } - - woody->Ehdr->e_entry = payload_position; - woody->Phdr[i].p_flags = PF_X | PF_W | PF_R; - free(payload->payload); - free(payload); - return EXIT_SUCCESS; -} - -int get_elf_sections(t_elf_content *woody) -{ - woody->Ehdr = (Elf64_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf64_Ehdr)); - if (!woody->Ehdr || !elf_magic_numbers(woody->file) || woody->Ehdr->e_ident[EI_CLASS] != ELFCLASS64) - { - printf("Error: \'%s\' is not a valid 64-bit ELF file\n", woody->file_path); - return EXIT_FAILURE; - } - woody->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_phoff, sizeof(Elf64_Phdr)); - - woody->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, sizeof(Elf64_Shdr)); - if (!woody->Shdr|| !fetch(woody->file, woody->file_size, woody->Ehdr->e_shoff, woody->Ehdr->e_shnum * sizeof(Elf64_Shdr))) - return EXIT_FAILURE; - return EXIT_SUCCESS; -} diff --git a/srcs/woody32.c b/srcs/woody32.c new file mode 100644 index 0000000..29b3e4a --- /dev/null +++ b/srcs/woody32.c @@ -0,0 +1,80 @@ +#include "../includes/woody.h" + +int get_load_segment32(t_elf_content *woody, int start, bool executable) +{ + t_elf32 *elf = woody->elf32; + for (int i = start; i < elf->Ehdr->e_phnum; i++) + { + if (elf->Phdr[i].p_type == PT_LOAD) + { + if (executable) + { + if (elf->Phdr[i].p_flags & PF_X) + return i; + } + else + return i; + } + } + return -1; +} + +int inject32(t_elf_content *woody) +{ + t_elf32 *elf = woody->elf32; + t_payload *payload = get_payload(); + if (!payload) + return EXIT_FAILURE; + + int i = get_load_segment32(woody, 0, true); + int j = get_load_segment32(woody, i + 1, false); + + if (i == -1 || j != i + 1) + { + free(payload->payload); + free(payload); + return ft_put_error("PT_LOAD segment missing"); + } + + size_t code_cave_size = elf->Phdr[j].p_offset - (elf->Phdr[i].p_offset + elf->Phdr[i].p_filesz); + size_t payload_position = elf->Phdr[i].p_offset + elf->Phdr[i].p_filesz; + + if (code_cave_size < (size_t)payload->len) + { + free(payload->payload); + free(payload); + return ft_put_error("Unable to insert payload, not enough space for code cave"); + } + + elf->Phdr[i].p_filesz += payload->len; + elf->Phdr[i].p_memsz += payload->len; + + if (insert_payload(woody, payload, payload_position, elf->Ehdr->e_entry, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) + { + free(payload->payload); + free(payload); + return ft_put_error("Unable to insert payload, please regenerate it"); + } + + elf->Ehdr->e_entry = payload_position; + elf->Phdr[i].p_flags = PF_X | PF_W | PF_R; + free(payload->payload); + free(payload); + return EXIT_SUCCESS; +} + +int get_elf_sections32(t_elf_content *woody) +{ + woody->elf32->Ehdr = (Elf32_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf32_Ehdr)); + if (!woody->elf32->Ehdr) + return EXIT_FAILURE; + + woody->elf32->Phdr = (Elf32_Phdr *)fetch(woody->file, woody->file_size, woody->elf32->Ehdr->e_phoff, sizeof(Elf32_Phdr)); + if (!woody->elf32->Phdr) + return EXIT_FAILURE; + + woody->elf32->Shdr = (Elf32_Shdr *)fetch(woody->file, woody->file_size, woody->elf32->Ehdr->e_shoff, sizeof(Elf32_Shdr)); + if (!woody->elf32->Shdr || !fetch(woody->file, woody->file_size, woody->elf32->Ehdr->e_shoff, woody->elf32->Ehdr->e_shnum * sizeof(Elf32_Shdr))) + return EXIT_FAILURE; + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/srcs/woody64.c b/srcs/woody64.c new file mode 100644 index 0000000..f18f7b7 --- /dev/null +++ b/srcs/woody64.c @@ -0,0 +1,80 @@ +#include "../includes/woody.h" + +int get_load_segment64(t_elf_content *woody, int start, bool executable) +{ + t_elf64 *elf = woody->elf64; + for (int i = start; i < elf->Ehdr->e_phnum; i++) + { + if (elf->Phdr[i].p_type == PT_LOAD) + { + if (executable) + { + if (elf->Phdr[i].p_flags & PF_X) + return i; + } + else + return i; + } + } + return -1; +} + +int inject64(t_elf_content *woody) +{ + t_elf64 *elf = woody->elf64; + t_payload *payload = get_payload(); + if (!payload) + return EXIT_FAILURE; + + int i = get_load_segment64(woody, 0, true); + int j = get_load_segment64(woody, i + 1, false); + + if (i == -1 || j != i + 1) + { + free(payload->payload); + free(payload); + return ft_put_error("PT_LOAD segment missing"); + } + + size_t code_cave_size = elf->Phdr[j].p_offset - (elf->Phdr[i].p_offset + elf->Phdr[i].p_filesz); + size_t payload_position = elf->Phdr[i].p_offset + elf->Phdr[i].p_filesz; + + if (code_cave_size < (size_t)payload->len) + { + free(payload->payload); + free(payload); + return ft_put_error("Unable to insert payload, not enough space for code cave"); + } + + elf->Phdr[i].p_filesz += payload->len; + elf->Phdr[i].p_memsz += payload->len; + + if (insert_payload(woody, payload, payload_position, elf->Ehdr->e_entry, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) + { + free(payload->payload); + free(payload); + return ft_put_error("Unable to insert payload, please regenerate it"); + } + + elf->Ehdr->e_entry = payload_position; + elf->Phdr[i].p_flags = PF_X | PF_W | PF_R; + free(payload->payload); + free(payload); + return EXIT_SUCCESS; +} + +int get_elf_sections64(t_elf_content *woody) +{ + woody->elf64->Ehdr = (Elf64_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf64_Ehdr)); + if (!woody->elf64->Ehdr) + return EXIT_FAILURE; + + woody->elf64->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->elf64->Ehdr->e_phoff, sizeof(Elf64_Phdr)); + if (!woody->elf64->Phdr) + return EXIT_FAILURE; + + woody->elf64->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->elf64->Ehdr->e_shoff, sizeof(Elf64_Shdr)); + if (!woody->elf64->Shdr || !fetch(woody->file, woody->file_size, woody->elf64->Ehdr->e_shoff, woody->elf64->Ehdr->e_shnum * sizeof(Elf64_Shdr))) + return EXIT_FAILURE; + return EXIT_SUCCESS; +} \ No newline at end of file -- 2.20.1 From 8756c0a8fa5972c21ea3628a99f090eb33135e45 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 19 Jun 2024 17:12:30 +0200 Subject: [PATCH 12/13] update encrypt --- includes/woody.h | 2 ++ srcs/main.c | 6 ++++++ srcs/woody32.c | 2 +- srcs/woody64.c | 40 +++++++++++++++++++++++++++++++--------- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/includes/woody.h b/includes/woody.h index 540ce44..a120b4d 100644 --- a/includes/woody.h +++ b/includes/woody.h @@ -33,6 +33,7 @@ typedef struct elf32 Elf32_Ehdr *Ehdr; Elf32_Phdr *Phdr; Elf32_Shdr *Shdr; + Elf32_Shdr *text_section; } t_elf32; typedef struct elf64 @@ -40,6 +41,7 @@ typedef struct elf64 Elf64_Ehdr *Ehdr; Elf64_Phdr *Phdr; Elf64_Shdr *Shdr; + Elf64_Shdr *text_section; } t_elf64; typedef struct elf_content diff --git a/srcs/main.c b/srcs/main.c index b41b121..542e77d 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -109,9 +109,15 @@ int main(int ac, char **av) return elf_error; int inject_error = -1; if (elfclass == ELFCLASS32) + { + encrypt(woody.file, woody.elf32->text_section->sh_offset, woody.elf32->text_section->sh_size); inject_error = inject32(&woody); + } else if (elfclass == ELFCLASS64) + { + encrypt(woody.file, woody.elf64->text_section->sh_offset, woody.elf64->text_section->sh_size); inject_error = inject64(&woody); + } if (inject_error) { free_elf_content(&woody); diff --git a/srcs/woody32.c b/srcs/woody32.c index 29b3e4a..1d8d8ce 100644 --- a/srcs/woody32.c +++ b/srcs/woody32.c @@ -48,6 +48,7 @@ int inject32(t_elf_content *woody) elf->Phdr[i].p_filesz += payload->len; elf->Phdr[i].p_memsz += payload->len; + elf->Ehdr->e_entry = payload_position; if (insert_payload(woody, payload, payload_position, elf->Ehdr->e_entry, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) { @@ -56,7 +57,6 @@ int inject32(t_elf_content *woody) return ft_put_error("Unable to insert payload, please regenerate it"); } - elf->Ehdr->e_entry = payload_position; elf->Phdr[i].p_flags = PF_X | PF_W | PF_R; free(payload->payload); free(payload); diff --git a/srcs/woody64.c b/srcs/woody64.c index f18f7b7..e26b79f 100644 --- a/srcs/woody64.c +++ b/srcs/woody64.c @@ -46,8 +46,6 @@ int inject64(t_elf_content *woody) return ft_put_error("Unable to insert payload, not enough space for code cave"); } - elf->Phdr[i].p_filesz += payload->len; - elf->Phdr[i].p_memsz += payload->len; if (insert_payload(woody, payload, payload_position, elf->Ehdr->e_entry, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) { @@ -57,7 +55,10 @@ int inject64(t_elf_content *woody) } elf->Ehdr->e_entry = payload_position; + elf->Phdr[i].p_filesz += payload->len; + elf->Phdr[i].p_memsz += payload->len; elf->Phdr[i].p_flags = PF_X | PF_W | PF_R; + elf->text_section->sh_size += payload->len; free(payload->payload); free(payload); return EXIT_SUCCESS; @@ -65,16 +66,37 @@ int inject64(t_elf_content *woody) int get_elf_sections64(t_elf_content *woody) { - woody->elf64->Ehdr = (Elf64_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf64_Ehdr)); - if (!woody->elf64->Ehdr) + t_elf64 *elf = woody->elf64; + + elf->Ehdr = (Elf64_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf64_Ehdr)); + if (!elf->Ehdr) return EXIT_FAILURE; - woody->elf64->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, woody->elf64->Ehdr->e_phoff, sizeof(Elf64_Phdr)); - if (!woody->elf64->Phdr) + elf->Phdr = (Elf64_Phdr *)fetch(woody->file, woody->file_size, elf->Ehdr->e_phoff, sizeof(Elf64_Phdr)); + if (!elf->Phdr) return EXIT_FAILURE; - woody->elf64->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, woody->elf64->Ehdr->e_shoff, sizeof(Elf64_Shdr)); - if (!woody->elf64->Shdr || !fetch(woody->file, woody->file_size, woody->elf64->Ehdr->e_shoff, woody->elf64->Ehdr->e_shnum * sizeof(Elf64_Shdr))) + elf->Shdr = (Elf64_Shdr *)fetch(woody->file, woody->file_size, elf->Ehdr->e_shoff, sizeof(Elf64_Shdr)); + if (!elf->Shdr || !fetch(woody->file, woody->file_size, elf->Ehdr->e_shoff, elf->Ehdr->e_shnum * sizeof(Elf64_Shdr))) return EXIT_FAILURE; - return EXIT_SUCCESS; + + if (!fetch(woody->file, woody->file_size, elf->Ehdr->e_shoff + (elf->Ehdr->e_shstrndx * sizeof(Elf64_Shdr)), sizeof(Elf64_Shdr))) + return EXIT_FAILURE; + + char *Sshstrtab = (char *)fetch(woody->file, woody->file_size, elf->Shdr[elf->Ehdr->e_shstrndx].sh_offset, 0); + if (Sshstrtab == NULL) + return EXIT_FAILURE; + + for (int i = 0; i < elf->Ehdr->e_shnum;i++) + { + if (elf->Shdr[i].sh_type == SHT_PROGBITS && elf->Shdr[i].sh_flags & SHF_EXECINSTR && elf->Shdr[i].sh_flags & SHF_ALLOC && elf->Shdr[i].sh_flags & SHF_EXECINSTR) + { + if (Sshstrtab + elf->Shdr[i].sh_name < (char *)woody->file + woody->file_size && !ft_strncmp(".text\0", Sshstrtab + elf->Shdr[i].sh_name, 6)) + { + elf->text_section = &elf->Shdr[i]; + return EXIT_SUCCESS; + } + } + } + return EXIT_FAILURE; } \ No newline at end of file -- 2.20.1 From fb51b9d0d265d5bb069c393ab0325df94fb8f0f3 Mon Sep 17 00:00:00 2001 From: pbonilla Date: Wed, 24 Jul 2024 16:59:27 +0200 Subject: [PATCH 13/13] Reset to help behaviour without text section --- print.s | 6 +++--- srcs/main.c | 2 -- srcs/payload.c | 5 +++++ srcs/woody32.c | 52 +++++++++++++++++++++++++++++++++++++------------- srcs/woody64.c | 3 +-- 5 files changed, 48 insertions(+), 20 deletions(-) diff --git a/print.s b/print.s index 0b5475f..01bce95 100644 --- a/print.s +++ b/print.s @@ -11,7 +11,7 @@ _start: lea rsi, [rel msg] mov rax, rsi sub rax, qword [rel text_section] ;text_section address - mov r8, qword [rel section_sisze] ;text_section size + mov r8, qword [rel section_size] ;text_section size mov r9, 0 ;increment register xor r10, r10 encrypt: @@ -33,5 +33,5 @@ _start: jmp 0xdadadada msg db "....WOODY....",10 - text_section dq 0xbabababababababa - section_sisze dq 0xcacacacacacacaca + text_section dq 0xbabababababababa + section_size dq 0xcacacacacacacaca diff --git a/srcs/main.c b/srcs/main.c index 542e77d..69c7219 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -110,12 +110,10 @@ int main(int ac, char **av) int inject_error = -1; if (elfclass == ELFCLASS32) { - encrypt(woody.file, woody.elf32->text_section->sh_offset, woody.elf32->text_section->sh_size); inject_error = inject32(&woody); } else if (elfclass == ELFCLASS64) { - encrypt(woody.file, woody.elf64->text_section->sh_offset, woody.elf64->text_section->sh_size); inject_error = inject64(&woody); } if (inject_error) diff --git a/srcs/payload.c b/srcs/payload.c index aca3fdf..fe7dea2 100644 --- a/srcs/payload.c +++ b/srcs/payload.c @@ -46,6 +46,11 @@ int insert_payload(t_elf_content *woody, t_payload *payload, size_t payload_posi int32_t jump_value = ((payload_position + jmp_index + 5) - e_entry) * -1; // 5 = JUMP SIZE (OPCODE + 4 bytes operand) ft_memcpy(&payload->payload[jmp_index + 1], &jump_value, sizeof(jump_value)); + printf("jump_value = %d (%x)\n", jump_value, jump_value); + printf("jmp_index = %d (%x)\n", jmp_index, jmp_index); + printf("payload_position = %ld (%lx)\n", payload_position, payload_position); + printf("e_entry = %d (%x)\n", e_entry, e_entry); + int64_t text_index = ptr_text_section - payload->payload; int64_t text_value = payload_position - p_offset + woody_index; ft_memcpy(&payload->payload[text_index], &text_value, sizeof(text_value)); diff --git a/srcs/woody32.c b/srcs/woody32.c index 1d8d8ce..7d26238 100644 --- a/srcs/woody32.c +++ b/srcs/woody32.c @@ -35,7 +35,6 @@ int inject32(t_elf_content *woody) free(payload); return ft_put_error("PT_LOAD segment missing"); } - size_t code_cave_size = elf->Phdr[j].p_offset - (elf->Phdr[i].p_offset + elf->Phdr[i].p_filesz); size_t payload_position = elf->Phdr[i].p_offset + elf->Phdr[i].p_filesz; @@ -46,17 +45,23 @@ int inject32(t_elf_content *woody) return ft_put_error("Unable to insert payload, not enough space for code cave"); } - elf->Phdr[i].p_filesz += payload->len; - elf->Phdr[i].p_memsz += payload->len; - elf->Ehdr->e_entry = payload_position; + encrypt(woody->file, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz); - if (insert_payload(woody, payload, payload_position, elf->Ehdr->e_entry, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) + if (insert_payload(woody, payload, payload_position, elf->text_section->sh_offset, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) { free(payload->payload); free(payload); return ft_put_error("Unable to insert payload, please regenerate it"); } + printf("code_cave_size = %ld (%lx)\n", code_cave_size, code_cave_size); + printf("payload_position = %ld (%lx)\n", payload_position, payload_position); + printf("elf->Phdr[i].p_offset = %d (%x)\n", elf->Phdr[i].p_offset, elf->Phdr[i].p_offset); + printf("elf->Phdr[i].p_filesz = %d (%x)\n", elf->Phdr[i].p_filesz, elf->Phdr[i].p_filesz); + printf("elf->Phdr[j].p_offset = %d (%x)\n", elf->Phdr[j].p_offset, elf->Phdr[j].p_offset); + + elf->Phdr[i].p_filesz += payload->len; + elf->Phdr[i].p_memsz += payload->len; elf->Phdr[i].p_flags = PF_X | PF_W | PF_R; free(payload->payload); free(payload); @@ -65,16 +70,37 @@ int inject32(t_elf_content *woody) int get_elf_sections32(t_elf_content *woody) { - woody->elf32->Ehdr = (Elf32_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf32_Ehdr)); - if (!woody->elf32->Ehdr) + t_elf32 *elf = woody->elf32; + + elf->Ehdr = (Elf32_Ehdr *)fetch(woody->file, woody->file_size, 0, sizeof(Elf32_Ehdr)); + if (!elf->Ehdr) return EXIT_FAILURE; - woody->elf32->Phdr = (Elf32_Phdr *)fetch(woody->file, woody->file_size, woody->elf32->Ehdr->e_phoff, sizeof(Elf32_Phdr)); - if (!woody->elf32->Phdr) + elf->Phdr = (Elf32_Phdr *)fetch(woody->file, woody->file_size, elf->Ehdr->e_phoff, sizeof(Elf32_Phdr)); + if (!elf->Phdr) return EXIT_FAILURE; - - woody->elf32->Shdr = (Elf32_Shdr *)fetch(woody->file, woody->file_size, woody->elf32->Ehdr->e_shoff, sizeof(Elf32_Shdr)); - if (!woody->elf32->Shdr || !fetch(woody->file, woody->file_size, woody->elf32->Ehdr->e_shoff, woody->elf32->Ehdr->e_shnum * sizeof(Elf32_Shdr))) + + elf->Shdr = (Elf32_Shdr *)fetch(woody->file, woody->file_size, elf->Ehdr->e_shoff, sizeof(Elf32_Shdr)); + if (!elf->Shdr || !fetch(woody->file, woody->file_size, elf->Ehdr->e_shoff, elf->Ehdr->e_shnum * sizeof(Elf32_Shdr))) return EXIT_FAILURE; - return EXIT_SUCCESS; + + if (!fetch(woody->file, woody->file_size, elf->Ehdr->e_shoff + (elf->Ehdr->e_shstrndx * sizeof(Elf32_Shdr)), sizeof(Elf32_Shdr))) + return EXIT_FAILURE; + + char *Sshstrtab = (char *)fetch(woody->file, woody->file_size, elf->Shdr[elf->Ehdr->e_shstrndx].sh_offset, 0); + if (Sshstrtab == NULL) + return EXIT_FAILURE; + + for (int i = 0; i < elf->Ehdr->e_shnum;i++) + { + if (elf->Shdr[i].sh_type == SHT_PROGBITS && elf->Shdr[i].sh_flags & SHF_EXECINSTR && elf->Shdr[i].sh_flags & SHF_ALLOC && elf->Shdr[i].sh_flags & SHF_EXECINSTR) + { + if (Sshstrtab + elf->Shdr[i].sh_name < (char *)woody->file + woody->file_size && !ft_strncmp(".text\0", Sshstrtab + elf->Shdr[i].sh_name, 6)) + { + elf->text_section = &elf->Shdr[i]; + return EXIT_SUCCESS; + } + } + } + return EXIT_FAILURE; } \ No newline at end of file diff --git a/srcs/woody64.c b/srcs/woody64.c index e26b79f..08b80cf 100644 --- a/srcs/woody64.c +++ b/srcs/woody64.c @@ -45,7 +45,7 @@ int inject64(t_elf_content *woody) free(payload); return ft_put_error("Unable to insert payload, not enough space for code cave"); } - + encrypt(woody->file, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz); if (insert_payload(woody, payload, payload_position, elf->Ehdr->e_entry, elf->Phdr[i].p_offset, elf->Phdr[i].p_memsz)) { @@ -58,7 +58,6 @@ int inject64(t_elf_content *woody) elf->Phdr[i].p_filesz += payload->len; elf->Phdr[i].p_memsz += payload->len; elf->Phdr[i].p_flags = PF_X | PF_W | PF_R; - elf->text_section->sh_size += payload->len; free(payload->payload); free(payload); return EXIT_SUCCESS; -- 2.20.1