나는 프로그램의 뒤에서 무슨 일이 일어나고 있는지 이해하려고 노력해 왔습니다. 나는 작은 C 프로그램을 작성하고 이를 i386 Linux(Ubuntu 12.04)에서 사용했습니다 gcc
. 그런 다음 hexdump -C
출력을 텍스트 파일로 조작했습니다. 오프셋에 약간의 차이가 있음을 발견했습니다 *
.
00000670 00 3f 1a 3b 2a 32 24 22 1c 00 00 00 40 00 00 00 |.?.;*2$"....@...|
00000680 94 fd ff ff 05 01 00 00 00 41 0e 08 85 02 42 0d |.........A....B.|
00000690 05 03 01 01 c5 0c 04 04 38 00 00 00 60 00 00 00 |........8...`...|
000006a0 80 fe ff ff 61 00 00 00 00 41 0e 08 85 02 41 0e |....a....A....A.|
000006b0 0c 87 03 41 0e 10 86 04 41 0e 14 83 05 4e 0e 30 |...A....A....N.0|
000006c0 02 4a 0e 14 41 0e 10 c3 41 0e 0c c6 41 0e 08 c7 |.J..A...A...A...|
000006d0 41 0e 04 c5 10 00 00 00 9c 00 00 00 b4 fe ff ff |A...............|
000006e0 02 00 00 00 00 00 00 00 10 00 00 00 b0 00 00 00 |................|
000006f0 a2 fe ff ff 04 00 00 00 00 00 00 00 00 00 00 00 |................|
00000700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000f10 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff ff ff |................|
00000f20 00 00 00 00 00 00 00 00 01 00 00 00 10 00 00 00 |................|
00000f30 0c 00 00 00 d4 82 04 08 0d 00 00 00 cc 85 04 08 |................|
00000f40 f5 fe ff 6f ac 81 04 08 05 00 00 00 2c 82 04 08 |...o........,...|
00000f50 06 00 00 00 cc 81 04 08 0a 00 00 00 54 00 00 00 |............T...|
00000f60 0b 00 00 00 10 00 00 00 15 00 00 00 00 00 00 00 |................|
00000f70 03 00 00 00 f4 9f 04 08 02 00 00 00 20 00 00 00 |............ ...|
00000f80 14 00 00 00 11 00 00 00 17 00 00 00 b4 82 04 08 |................|
00000f90 11 00 00 00 ac 82 04 08 12 00 00 00 08 00 00 00 |................|
00000fa0 13 00 00 00 08 00 00 00 fe ff ff 6f 8c 82 04 08 |...........o....|
00000fb0 ff ff ff 6f 01 00 00 00 f0 ff ff 6f 80 82 04 08 |...o.......o....|
00000fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000ff0 00 00 00 00 28 9f 04 08 00 00 00 00 00 00 00 00 |....(...........|
00001000 26 83 04 08 36 83 04 08 46 83 04 08 56 83 04 08 |&...6...F...V...|
00001010 00 00 00 00 00 00 00 00 47 43 43 3a 20 28 55 62 |........GCC: (Ub|
00001020 75 6e 74 75 2f 4c 69 6e 61 72 6f 20 34 2e 36 2e |untu/Linaro 4.6.|
00001030 33 2d 31 75 62 75 6e 74 75 35 29 20 34 2e 36 2e |3-1ubuntu5) 4.6.|
00001040 33 00 00 2e 73 79 6d 74 61 62 00 2e 73 74 72 74 |3...symtab..strt|
00001050 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e 69 6e |ab..shstrtab..in|
00001060 74 65 72 70 00 2e 6e 6f 74 65 2e 41 42 49 2d 74 |terp..note.ABI-t|
00001070 61 67 00 2e 6e 6f 74 65 2e 67 6e 75 2e 62 75 69 |ag..note.gnu.bui|
00001080 6c 64 2d 69 64 00 2e 67 6e 75 2e 68 61 73 68 00 |ld-id..gnu.hash.|
00001090 2e 64 79 6e 73 79 6d 00 2e 64 79 6e 73 74 72 00 |.dynsym..dynstr.|
내 질문은, 이것을 어떻게 설명해야 합니까 *
? 나는 이것이 파일에 공백이 있다는 것을 의미한다고 가정하지만, 왜 공백이 있습니까? 이것이 ELF 파일의 표준 형식의 일부인가요?
답변1
표준 od
명령 또는 와 마찬가지로 hd
이는 생략된 모든 줄이 이전 줄과 동일함을 의미합니다. 어쨌든, -v
라인을 표시함으로써 라인을 표시할 수 있습니다. 에서 hexdump(1)
:
-v 옵션을 사용하면 hexdump가 모든 입력 데이터를 표시합니다. -v 옵션이 없으면 바로 앞의 출력 행 그룹(입력 오프셋 제외)과 동일한 수의 출력 행 그룹이 단일 별표로 구성된 행으로 대체됩니다.