| // NOTE NOTE NOTE NOTE THIS IS A GENERATED FILE!! |
| // Any edits will be deleted! |
| // Instead, change gen-x86-prologues.rb and re-generate. |
| // |
| |
| |
| void pattern_1 (void); |
| void func_under_pattern_1 (void); |
| void pattern_2 (void); |
| void func_under_pattern_2 (void); |
| void pattern_3 (void); |
| void func_under_pattern_3 (void); |
| void pattern_4 (void); |
| void func_under_pattern_4 (void); |
| void pattern_5 (void); |
| void func_under_pattern_5 (void); |
| void pattern_6 (void); |
| void func_under_pattern_6 (void); |
| void pattern_7 (void); |
| void func_under_pattern_7 (void); |
| void pattern_8 (void); |
| void func_under_pattern_8 (void); |
| void pattern_9 (void); |
| void func_under_pattern_9 (void); |
| void pattern_10 (void); |
| void func_under_pattern_10 (void); |
| void pattern_11 (void); |
| void func_under_pattern_11 (void); |
| void pattern_12 (void); |
| void func_under_pattern_12 (void); |
| void pattern_13 (void); |
| void func_under_pattern_13 (void); |
| void pattern_14 (void); |
| void func_under_pattern_14 (void); |
| void pattern_15 (void); |
| void func_under_pattern_15 (void); |
| void pattern_16 (void); |
| void func_under_pattern_16 (void); |
| void pattern_17 (void); |
| void func_under_pattern_17 (void); |
| void pattern_18 (void); |
| void func_under_pattern_18 (void); |
| void pattern_19 (void); |
| void func_under_pattern_19 (void); |
| void pattern_20 (void); |
| void func_under_pattern_20 (void); |
| void pattern_21 (void); |
| void func_under_pattern_21 (void); |
| void pattern_22 (void); |
| void func_under_pattern_22 (void); |
| void pattern_23 (void); |
| void func_under_pattern_23 (void); |
| void pattern_24 (void); |
| void func_under_pattern_24 (void); |
| void pattern_25 (void); |
| void func_under_pattern_25 (void); |
| void pattern_26 (void); |
| void func_under_pattern_26 (void); |
| void pattern_27 (void); |
| void func_under_pattern_27 (void); |
| void pattern_28 (void); |
| void func_under_pattern_28 (void); |
| void pattern_29 (void); |
| void func_under_pattern_29 (void); |
| void pattern_30 (void); |
| void func_under_pattern_30 (void); |
| void pattern_31 (void); |
| void func_under_pattern_31 (void); |
| void pattern_32 (void); |
| void func_under_pattern_32 (void); |
| void pattern_33 (void); |
| void func_under_pattern_33 (void); |
| void pattern_34 (void); |
| void func_under_pattern_34 (void); |
| void pattern_35 (void); |
| void func_under_pattern_35 (void); |
| |
| static int word_of_writable_memory; |
| main (int argc, char **argv, char **envp) |
| { |
| pattern_1 (); |
| pattern_2 (); |
| pattern_3 (); |
| pattern_4 (); |
| pattern_5 (); |
| pattern_6 (); |
| pattern_7 (); |
| pattern_8 (); |
| pattern_9 (); |
| pattern_10 (); |
| pattern_11 (); |
| pattern_12 (); |
| pattern_13 (); |
| pattern_14 (); |
| pattern_15 (); |
| pattern_16 (); |
| pattern_17 (); |
| pattern_18 (); |
| pattern_19 (); |
| pattern_20 (); |
| pattern_21 (); |
| pattern_22 (); |
| pattern_23 (); |
| pattern_24 (); |
| pattern_25 (); |
| pattern_26 (); |
| pattern_27 (); |
| pattern_28 (); |
| pattern_29 (); |
| pattern_30 (); |
| pattern_31 (); |
| pattern_32 (); |
| pattern_33 (); |
| pattern_34 (); |
| pattern_35 (); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_1:\n" |
| " push %ebp\n" |
| " or $0xffffffff, %ecx # [ 0x83 0xc9 0xff ]\n" |
| " mov %esp,%ebp\n" |
| " sub $0x8, %esp\n" |
| " test %edx,%edx\n" |
| " call _func_under_pattern_1\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_1 (void) |
| { |
| puts ("I am the function under pattern_1"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_2:\n" |
| " call L1 # [ 0xe0 0x00 0x00 000 0x00 ]\n" |
| "L1:\n" |
| " pop %ecx # [ 0x59 ]\n" |
| " push %ebp\n" |
| " mov %esp, %ebp\n" |
| " sub $0x18, %esp\n" |
| " call _func_under_pattern_2\n" |
| " add $0x18, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_2 (void) |
| { |
| puts ("I am the function under pattern_2"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_3:\n" |
| " push %ebp\n" |
| " add %edx, %eax # [ 0x01 0xd0 ]\n" |
| " mov %esp, %ebp\n" |
| " push %ecx\n" |
| " push %ecx\n" |
| " call _func_under_pattern_3\n" |
| " pop %ecx\n" |
| " pop %ecx\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_3 (void) |
| { |
| puts ("I am the function under pattern_3"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_4:\n" |
| " push %ebp\n" |
| " movzwl %ax,%eax # [ 0x0f 0xb7 0xc0 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_4\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_4 (void) |
| { |
| puts ("I am the function under pattern_4"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_5:\n" |
| " push %ebp\n" |
| " movzwl %dx,%edx # [ 0x0f 0xb7 0xd2 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_5\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_5 (void) |
| { |
| puts ("I am the function under pattern_5"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_6:\n" |
| " push %ebp\n" |
| " test %eax, %eax # [ 0x85 0xc0 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_6\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_6 (void) |
| { |
| puts ("I am the function under pattern_6"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_7:\n" |
| " push %ebp\n" |
| " test %edx,%edx # [ 0x85 0xd2 ]\n" |
| " mov %esp,%ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_7\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_7 (void) |
| { |
| puts ("I am the function under pattern_7"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_8:\n" |
| " push %ebp\n" |
| " test $0xffffff80,%eax # [ 0xa9 0x80 0xff 0xff 0xff ]\n" |
| " mov %esp,%ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_8\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_8 (void) |
| { |
| puts ("I am the function under pattern_8"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_9:\n" |
| " push %ebp\n" |
| " inc %eax # [ 0x40 ]\n" |
| " mov %esp,%ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_9\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_9 (void) |
| { |
| puts ("I am the function under pattern_9"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_10:\n" |
| " push %ebp\n" |
| " add $0x3, %ecx # [ 0x83 0xc1 0x03 ]\n" |
| " mov %esp,%ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_10\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_10 (void) |
| { |
| puts ("I am the function under pattern_10"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_11:\n" |
| " push %ebp\n" |
| " mov %eax,%ecx # [ 0x89 0xc1 ]\n" |
| " mov %esp,%ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_11\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_11 (void) |
| { |
| puts ("I am the function under pattern_11"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_12:\n" |
| " push %ebp\n" |
| " cld # [ 0xfc ]\n" |
| " xor %eax,%eax\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_12\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_12 (void) |
| { |
| puts ("I am the function under pattern_12"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_13:\n" |
| " push %ebp\n" |
| " dec %edx # [ 0x4a ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_13\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_13 (void) |
| { |
| puts ("I am the function under pattern_13"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_14:\n" |
| " mov %eax, %ecx # [ 0x89 0xc1 ]\n" |
| " mov %edx, %eax # [ 0x89 0xd0 ]\n" |
| " xor %edx, %edx # [ 0x31 0xd2 ]\n" |
| " div %ecx # [ 0xf7 0xf1 ]\n" |
| " push %ebp\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_14\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_14 (void) |
| { |
| puts ("I am the function under pattern_14"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_15:\n" |
| " push %ebp\n" |
| " fldz # [ 0xd9 0xee ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_15\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_15 (void) |
| { |
| puts ("I am the function under pattern_15"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_16:\n" |
| " and $0x3d, %eax # [ 0x83 0xe0 0x3d ]\n" |
| " push %ebp\n" |
| " sub $0x8, %eax # [ 0x83 0xe8 0x08 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_16\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_16 (void) |
| { |
| puts ("I am the function under pattern_16"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_17:\n" |
| " push %ebp\n" |
| " cmpl $0x0,_main # From mach_kernel: [ 0x83 0x3d 0x54 0x42 0x3a 0xc0 0x00 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_17\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_17 (void) |
| { |
| puts ("I am the function under pattern_17"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_18:\n" |
| " push %ebp\n" |
| " mov $0xffffffce, %eax # [ 0xb8 0xce 0xff 0xff 0xff ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_18\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_18 (void) |
| { |
| puts ("I am the function under pattern_18"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_19:\n" |
| " push %ebp\n" |
| " mov $0x18, %dx # [ 0x66 0xba 0x18 0x00 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_19\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_19 (void) |
| { |
| puts ("I am the function under pattern_19"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_20:\n" |
| " nop # [ 0x90 ]\n" |
| " nop\n" |
| " nop\n" |
| " nop\n" |
| " nop\n" |
| " nop\n" |
| " push %ebp\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_20\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_20 (void) |
| { |
| puts ("I am the function under pattern_20"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_21:\n" |
| " push %ebp\n" |
| " movzbl %al, %eax # [ 0x0f 0xb6 0xc0 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_21\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_21 (void) |
| { |
| puts ("I am the function under pattern_21"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_22:\n" |
| " push %ebp\n" |
| " mov %eax, %edx # [ 0x89 0xc2 ]\n" |
| " sar $0x8, %eax # [ 0xc1 0xf8 0x08 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_22\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_22 (void) |
| { |
| puts ("I am the function under pattern_22"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_23:\n" |
| " push %ebp\n" |
| " and $0xffffff, %eax # [ 0x25 0xff 0xff 0xff 0x00 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_23\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_23 (void) |
| { |
| puts ("I am the function under pattern_23"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_24:\n" |
| " push %ebp\n" |
| " xorps %xmm4, %xmm4 # [ 0x0f 0x57 0xe4 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x28, %esp\n" |
| " call _func_under_pattern_24\n" |
| " add $0x28, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_24 (void) |
| { |
| puts ("I am the function under pattern_24"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_25:\n" |
| " push %ebp\n" |
| " mov $_main, %edx # Added instruction so edx has a valid addr\n" |
| " mov 0x18(%edx), %eax # [ 0x8b 0x42 0x18 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_25\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_25 (void) |
| { |
| puts ("I am the function under pattern_25"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_26:\n" |
| " push %ebp\n" |
| " and $0x7fffffff,%edx # [ 0x81 0xe2 0xff 0xff 0xff 0x7f ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_26\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_26 (void) |
| { |
| puts ("I am the function under pattern_26"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_27:\n" |
| " push %ebp\n" |
| " mov $_main, %eax\n" |
| " lea 0x4(%eax), %ecx # [ 0x8d 0x48 0x04 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_27\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_27 (void) |
| { |
| puts ("I am the function under pattern_27"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_28:\n" |
| " add $0x628df, %ecx # [ 0x81 0xc1 0xdf 0x28 0x06 0x00 ]\n" |
| " push %ebp\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_28\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_28 (void) |
| { |
| puts ("I am the function under pattern_28"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_29:\n" |
| " push %ebp\n" |
| " mov $_main, %ecx\n" |
| " mov 0x100(%ecx), %edx # [ 0x8b 0x91 0x00 0x01 0x00 0x00 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_29\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_29 (void) |
| { |
| puts ("I am the function under pattern_29"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_30:\n" |
| " push %ebp\n" |
| " mov $_main, %ecx\n" |
| " lea 0x100(%ecx), %edx # [ 0x8d 0x91 0x00 0x01 0x00 0x00 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_30\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_30 (void) |
| { |
| puts ("I am the function under pattern_30"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_31:\n" |
| " push %ebp\n" |
| " mov $_main, %eax\n" |
| " cmpb $0x0, (%eax) # [ 0x80 0x38 0x00 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_31\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_31 (void) |
| { |
| puts ("I am the function under pattern_31"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_32:\n" |
| " push %ebp\n" |
| " mov $_word_of_writable_memory, %eax\n" |
| " mov %edx, (%eax) # [ 0x89 0x10 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_32\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_32 (void) |
| { |
| puts ("I am the function under pattern_32"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_33:\n" |
| " push %ebp\n" |
| " mov $_word_of_writable_memory, %edx\n" |
| " mov %eax, (%edx) # [ 0x89 0x02 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_33\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_33 (void) |
| { |
| puts ("I am the function under pattern_33"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_34:\n" |
| " push %ebp\n" |
| " mov $_word_of_writable_memory, %eax\n" |
| " movb $0x1, (%eax) # [ 0xc6 0x00 0x01 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_34\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_34 (void) |
| { |
| puts ("I am the function under pattern_34"); |
| } |
| |
| asm (" .text\n" |
| " .align 8\n" |
| "_pattern_35:\n" |
| " push %ebp\n" |
| " shl $0x5, %ecx # [ 0xc1 0xe1 0x05 ]\n" |
| " mov %esp, %ebp\n" |
| " sub $0x8, %esp\n" |
| " call _func_under_pattern_35\n" |
| " add $0x8, %esp\n" |
| " pop %ebp\n" |
| " ret\n" |
| ); |
| |
| void func_under_pattern_35 (void) |
| { |
| puts ("I am the function under pattern_35"); |
| } |
| |