Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Spring
- Python
- IntelliJ
- 루비
- Godot
- JS
- kotlin
- 개발노트
- CPP
- rubymine
- ruby2d
- C
- Java
- Baekjoon
- jetbrains
- RaspberryPi
- OAuth
- error
- Shell
- react
- Android
- OTLanguage
- maven
- Vane
- ruby
- plugin
- GitHub
- boj
- gnuplot
- gradle
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[C][해킹] 컴파일된 바이너리 파일 살펴보기 (objdump) 본문
objdump는 C언어를 컴파일한 실행파일을 어셈블리어로 보여줄 수 있게하는 GNU 바이너리 유틸리티 입니다.
코드
간단한 예제 코드를 만들어서 실행해보았습니다.
#include <stdio.h>
int main() {
printf("안녕하세요.");
return 0;
}
실행
macos를 사용할때 objdump가 없다면 xcode를 깔아야합니다.
저는 CLion을 사용하였는데 저랑 같은 CLion이라면 cmake-build-debug/CMakeFiles/프로젝트명.dir안에 .out, .o파일이 있으니 해당 디렉토리로 이동하면 됩니다.
objdump -D a.out | grep -A20 main.:
0000000100003ee8 <_main>:
100003ee8: ff 03 01 d1 sub sp, sp, #64
100003eec: fd 7b 03 a9 stp x29, x30, [sp, #48]
100003ef0: fd c3 00 91 add x29, sp, #48
100003ef4: bf c3 1f b8 stur wzr, [x29, #-4]
100003ef8: a0 83 1f b8 stur w0, [x29, #-8]
100003efc: a1 03 1f f8 stur x1, [x29, #-16]
100003f00: a9 83 5f b8 ldur w9, [x29, #-8]
100003f04: e8 03 09 aa mov x8, x9
100003f08: e9 03 00 91 mov x9, sp
100003f0c: 28 01 00 f9 str x8, [x9]
100003f10: 00 00 00 90 adrp x0, 0x100003000 <_main+0x28>
100003f14: 00 50 3e 91 add x0, x0, #3988
100003f18: 1c 00 00 94 bl 0x100003f88 <_printf+0x100003f88>
100003f1c: bf c3 1e b8 stur wzr, [x29, #-20]
100003f20: 01 00 00 14 b 0x100003f24 <_main+0x3c>
100003f24: a8 c3 5e b8 ldur w8, [x29, #-20]
100003f28: a9 83 5f b8 ldur w9, [x29, #-8]
100003f2c: 08 01 09 6b subs w8, w8, w9
100003f30: 4a 02 00 54 b.ge 0x100003f78 <_main+0x90>
100003f34: 01 00 00 14 b 0x100003f38 <_main+0x50>
아래의 명령어를 입력하면 결과가 출력되는 것을 볼 수 있었습니다.
참고로 -A20는 20줄을 의미하므로 숫자부분을 변경하여 원하는 출력 갯수를 지정할 수 있습니다.
100003ee8부분은 주소를 의미합니다.
'Language > C' 카테고리의 다른 글
[C] 10진수 2진수로 변환 (특이하게 변환해보기) (0) | 2023.04.05 |
---|---|
[C] C언어에서 배열 길이 구하기 (sizeof) (0) | 2023.04.05 |
[C++] 출력하기 (0) | 2023.03.09 |
[C][C++] GCC 다운로드 하기 (0) | 2023.03.04 |
[C][CPP] 자동 컴파일 제작 (0) | 2023.03.04 |