1.intel_syntax noprefix 2 3.global _start 4_start: 5 mov ebp, esp 6 sub ebp, 0x4000 7 mov edx, ebp 8 9 lea esi, [self_modifying] 10 mov edi, ebp 11 mov ecx, 0x2d 12 call memcpy 13 add ebp, 0x2d 14 xor ebx, ebx 15 call edx 16 17 mov eax, 1 18 int 0x80 19 20memcpy: 21 cmp ecx, 0 22 je _end 23 dec ecx 24 mov al, byte ptr [esi+ecx] 25 mov byte ptr [edi+ecx], al 26 jmp memcpy 27 28_end: 29 ret 30 31self_modifying: 32 inc ebx 33 call $+5 34 pop esi 35 dec byte ptr [esi+11] 36 xor edx, edx 37 sub esi, 6 38_loop_start: 39 cmp edx, 5 40 jz _loop_end 41 42 mov edi, ebp 43 mov ecx, 0x2d 44 lea eax, [memcpy] 45 call eax 46 inc edx 47 add ebp, 0x2d 48 mov byte ptr [ebp], 0xc3 49 jmp _loop_start 50 51_loop_end: 52