어셈블리 코드 분석좀 해주세요.
0x080484e4 <+0>: push ebp
0x080484e5 <+1>: mov ebp,esp
0x080484e7 <+3>: and esp,0xfffffff0
0x080484ea <+6>: sub esp,0x130
0x080484f0 <+12>: mov eax,DWORD PTR [ebp+0xc]
0x080484f3 <+15>: mov DWORD PTR [esp+0x1c],eax
0x080484f7 <+19>: mov eax,gs:0x14
0x080484fd <+25>: mov DWORD PTR [esp+0x12c],eax
0x08048504 <+32>: xor eax,eax
0x08048506 <+34>: mov DWORD PTR [esp+0x28],0x0
0x0804850e <+42>: mov eax,0x80486e0 ;"Input Your Name:"
0x08048513 <+47>: mov DWORD PTR [esp],eax
0x08048516 <+50>: call 0x80483c0
0x0804851b <+55>: mov DWORD PTR [esp+0x28],0x0
0x08048523 <+63>: jmp 0x8048557
0x08048525 <+65>: call 0x80483d0
0x0804852a <+70>: mov edx,eax
0x0804852c <+72>: lea eax,[esp+0x2e]
0x08048530 <+76>: add eax,DWORD PTR [esp+0x28]
0x08048534 <+80>: mov BYTE PTR [eax],dl
0x08048536 <+82>: lea eax,[esp+0x2e]
0x0804853a <+86>: add eax,DWORD PTR [esp+0x28]
0x0804853e <+90>: movzx eax,BYTE PTR [eax]
0x08048541 <+93>: cmp al,0xa
0x08048543 <+95>: jne 0x8048552
0x08048545 <+97>: lea eax,[esp+0x2e]
0x08048549 <+101>: add eax,DWORD PTR [esp+0x28]
0x0804854d <+105>: mov BYTE PTR [eax],0x0
0x08048550 <+108>: jmp 0x8048561 ;"Your Name is %s\nNow Input your code Number:"
0x08048552 <+110>: add DWORD PTR [esp+0x28],0x1
0x08048557 <+115>: cmp DWORD PTR [esp+0x28],0xfd
0x0804855f <+123>: jle 0x8048525
0x08048561 <+125>: mov eax,0x80486f4 ;"%d"
0x08048566 <+130>: lea edx,[esp+0x2e]
0x0804856a <+134>: mov DWORD PTR [esp+0x4],edx
0x0804856e <+138>: mov DWORD PTR [esp],eax
0x08048571 <+141>: call 0x80483c0
0x08048576 <+146>: mov eax,0x8048720
0x0804857b <+151>: lea edx,[esp+0x20]
0x0804857f <+155>: mov DWORD PTR [esp+0x4],edx
0x08048583 <+159>: mov DWORD PTR [esp],eax
0x08048586 <+162>: call 0x8048420 <__isoc99_scanf@plt>
0x0804858b <+167>: mov DWORD PTR [esp+0x24],0x0
0x08048593 <+175>: mov DWORD PTR [esp+0x28],0x0
0x0804859b <+183>: jmp 0x80485b9
0x0804859d <+185>: lea eax,[esp+0x2e]
0x080485a1 <+189>: add eax,DWORD PTR [esp+0x28]
0x080485a5 <+193>: movzx eax,BYTE PTR [eax]
0x080485a8 <+196>: movsx eax,al
0x080485ab <+199>: imul eax,DWORD PTR [esp+0x28]
0x080485b0 <+204>: add DWORD PTR [esp+0x24],eax
0x080485b4 <+208>: add DWORD PTR [esp+0x28],0x1
0x080485b9 <+213>: lea eax,[esp+0x2e]
0x080485bd <+217>: add eax,DWORD PTR [esp+0x28]
0x080485c1 <+221>: movzx eax,BYTE PTR [eax]
0x080485c4 <+224>: test al,al
0x080485c6 <+226>: jne 0x804859d
0x080485c8 <+228>: mov eax,DWORD PTR [esp+0x20]
0x080485cc <+232>: cmp eax,DWORD PTR [esp+0x24]
0x080485d0 <+236>: jne 0x80485e0
0x080485d2 <+238>: mov DWORD PTR [esp],0x8048723 ;"Good, Well done!"
0x080485d9 <+245>: call 0x80483f0
0x080485de <+250>: jmp 0x80485ec
0x080485e0 <+252>: mov DWORD PTR [esp],0x8048734 ;"Wrong!!! Try Next Time"
0x080485e7 <+259>: call 0x80483f0
0x080485ec <+264>: mov eax,0x0
0x080485f1 <+269>: mov edx,DWORD PTR [esp+0x12c]
0x080485f8 <+276>: xor edx,DWORD PTR gs:0x14
0x080485ff <+283>: je 0x8048606
0x08048601 <+285>: call 0x80483e0 <__stack_chk_fail@plt>
0x08048606 <+290>: leave
0x08048607 <+291>: ret
이 파일인데요. 첨부파일인 a.out인 파일(파일 확장자를 .ods에서 .out으로 바꿔서 실행해보세요[파일을 올리기 위해 확장자 바꾸었습니다.)을 디스어
셈블리 한것이에요.
c언어로 작성하였는데 소스코드를 삭제 해버렸어요. 이렇게 나오는 C언어 코드좀 알려주세요.
첨부파일은 리눅스용 실행파일이고요
입력된 문자마다 코드가 바뀌는 원리를 알려주세요.
댓글 달기