셸 코드를 배우고 있습니다.셸 코드에서 문자열을 올바르게 디 어셈블리하십시오.
나는 튜토리얼이 쉘 코드를 발견 : 내가 원하는 무엇
python -c 'print "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80 "' > shellcode
어떻게 작동하는지 이해하기 위해이 매우 기본적인 쉘 코드를 분해하는 것입니다. 여기
내가 무슨 짓입니다 :
$ objdump -D -b binary -m i8086 shellcode
shellcode: file format binary
Disassembly of section .data:
00000000 <.data>:
0: 90 nop
1: 90 nop
2: 90 nop
3: 90 nop
4: 90 nop
5: 90 nop
6: 90 nop
7: 90 nop
8: 90 nop
9: 31 c0 xor %ax,%ax
b: 50 push %ax
c: 68 2f 2f push $0x2f2f
f: 73 68 jae 0x79
11: 68 2f 62 push $0x622f
14: 69 6e 89 e3 50 imul $0x50e3,-0x77(%bp),%bp
19: 53 push %bx
1a: 89 e1 mov %sp,%cx
1c: b0 0b mov $0xb,%al
1e: cd 80 int $0x80
또는 :
$ ndisasm shellcode
00000000 90 nop
00000001 90 nop
00000002 90 nop
00000003 90 nop
00000004 90 nop
00000005 90 nop
00000006 90 nop
00000007 90 nop
00000008 90 nop
00000009 31C0 xor ax,ax
0000000B 50 push ax
0000000C 682F2F push word 0x2f2f
0000000F 7368 jnc 0x79
00000011 682F62 push word 0x622f
00000014 696E89E350 imul bp,[bp-0x77],word 0x50e3
00000019 53 push bx
0000001A 89E1 mov cx,sp
0000001C B00B mov al,0xb
0000001E CD80 int 0x80
이 쉘 코드는 86 지침으로 해석 된 문자열이 포함되어 있습니다. 점프에 적절한 라벨을 부착 할 수있는 방법이 있습니까?
문자열에 x86 명령어를 디코딩하는 대신 문자열을 표시하는 방법이 있습니다. 섹션과 헤더가있는 엘프가 없기 때문에 이것이 쉬운 일이 아니라는 것을 알고 있습니다 ...
음, 이것은 실제로 다른 모드를 언급하는 https://stackoverflow.com/questions/1737095/how-do-i-disassemble-raw-x86-code의 복제입니다 (예 : [이 답변에서 ] (https://stackoverflow.com/questions/1737095/how-do-i-disassemble-raw-x86-code/34424146#34424146).)하지만 우리는이 질문을 당신이 언제 잘못된 모드로 분해 중입니다 ... (아마도 그 중복이있을지라도 /) –