본문 바로가기
리눅스

objdump

by 다움위키 2023. 12. 22.

objdump유닉스-계열 운영 시스템에서 객체 파일에 대한 다양한 정보를 표시하기 위한 명령줄 프로그램입니다. 예를 들어, 그것은 어셈블리 형식으로 실행 파일을 보기 위한 디스어셈블러로 사용될 수 있습니다. 그것은 실행 파일 및 기타 바이너리 데이터에 대한 세밀한 제어를 위한 GNU Binutils의 일부입니다. objdump는 BFD 라이브러리를 객체 파일의 내용을 읽기 위해 사용합니다. 유사한 유틸리티로는 Borland TDUMP, Microsoft DUMPBINreadelf가 있습니다.

특정 플랫폼 (예를 들어, 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