objdump는 유닉스-계열 운영 시스템에서 객체 파일에 대한 다양한 정보를 표시하기 위한 명령줄 프로그램입니다. 예를 들어, 그것은 어셈블리 형식으로 실행 파일을 보기 위한 디스어셈블러로 사용될 수 있습니다. 그것은 실행 파일 및 기타 바이너리 데이터에 대한 세밀한 제어를 위한 GNU Binutils의 일부입니다. objdump는 BFD 라이브러리를 객체 파일의 내용을 읽기 위해 사용합니다. 유사한 유틸리티로는 Borland TDUMP, Microsoft DUMPBIN 및 readelf가 있습니다.
특정 플랫폼 (예를 들어, macOS)에서, objdump 바이너리는 실제로 다른 명령줄 옵션과 동작을 갖는 llvm의 objdump에 대한 링크일 수 있습니다.
Example
예를 들어,
$ objdump -D -M intel file.bin | grep main.: -A20
이것은 인텔 구문에 표시된 어셈블리 코드를 갖는 «file.bin» 파일에서 디스어셈블리를 수행합니다. 우리는 그런-다음 메인 함수를 검색하고 해당 코드의 20줄을 표시하는 grep으로 리다이렉션합니다.
예제 출력:
4004ed: 55 push rbp
4004ee: 48 89 e5 mov rbp,rsp
4004f1: c7 45 ec 00 00 00 00 mov DWORD PTR [rbp-0x14],0x0
4004f8: c7 45 f0 01 00 00 00 mov DWORD PTR [rbp-0x10],0x1
4004ff: c7 45 f4 02 00 00 00 mov DWORD PTR [rbp-0xc],0x2
400506: c7 45 f8 03 00 00 00 mov DWORD PTR [rbp-0x8],0x3
40050d: c7 45 fc 04 00 00 00 mov DWORD PTR [rbp-0x4],0x4
400514: c7 45 ec 00 00 00 00 mov DWORD PTR [rbp-0x14],0x0
40051b: eb 13 jmp 400530 <main+0x43>
40051d: 8b 05 15 0b 20 00 mov eax,DWORD PTR [rip+0x200b15] # 601038 <globalA>
400523: 83 e8 01 sub eax,0x1
400526: 89 05 0c 0b 20 00 mov DWORD PTR [rip+0x200b0c],eax # 601038 <globalA>
40052c: 83 45 ec 01 add DWORD PTR [rbp-0x14],0x1
400530: 8b 05 02 0b 20 00 mov eax,DWORD PTR [rip+0x200b02] # 601038 <globalA>
400536: 39 45 ec cmp DWORD PTR [rbp-0x14],eax
400539: 7c e2 jl 40051d <main+0x30>
40053b: 5d pop rbp
40053c: c3 ret
40053d: 0f 1f 00 nop DWORD PTR [rax]
See also
External links
- objdump(1) – Linux User Commands Manual
- readelf(1) – Linux User Commands Manual
- Binutils::Objdump - Perl interface to objdump