tmxklab

ARM 크로스 컴파일 및 디버깅(qemu) 본문

Security/etc

ARM 크로스 컴파일 및 디버깅(qemu)

tmxk4221 2020. 12. 17. 21:39

pwnable.kr문제 중에 leg라는 문제를 풀다가 나중에 ARM 바이너리를 실행하거나 디버깅할 때 참고하면 좋을 것 같아 짧게 정리하게 되었다. (ubuntu 18.04 ≥)

 

test용 소스코드는 pwnable.kr의 leg.c를 참고하였고 환경은 ubuntu 18.04에서 진행되었다.

 


1. Install gcc

sudo apt-get install gcc-7-multilib-arm-linux-gnueabi -y
sudo apt-get install gcc-7-multilib-arm-linux-gnueabihf -y

 

 

2. Install qemu-user-static & gdb-multiarch

sudo apt-get install qemu-user-static
sudo apt-get install gdb-multiarch

 

 

3. Compile source code

arm-linux-gnueabi-gcc-7 -o test test.c

 

 

test)

 

4. Execution arm binary

qemu-arm-static -L /usr/arm-linux-gnueabi ./test

 

test)

 

5. Debugging arm binary

디버깅을 하기 위해서 2개의 터미널이 필요하다.

 

첫 번째 터미널) gdbserver에 바이너리를 올려 2222포트로 대기

qemu-arm-static -L /usr/arm-linux-gnueabi -g 2222 ./test

 

test)

 

두 번째 터미널) gdb-mulitarch를 실행시켜 2222포트로 접속하여 디버깅

gdb-multiarch
gdb-peda$ set arc arm
gdb-peda$ target remote localhost:2222
gdb-peda$ file ./test

 

test)

이제 bp를 걸고 디버깅 ㄱㄱㄱ(첨에 run안됨 continue로 ㄱㄱ)

 

 


아직 ARM 바이너리 밖에 디버깅 안해봤는데 나중에 mips나 다른 아키텍쳐의 바이너리를 컴파일하거나 디버깅할 때 다음 링크에서 참고하자

 

Arm, mips, ppc등 cross compile and excution

gcc compile 가능한 아키텍처 목록입니다 저는 그냥 multilib 만 깔아서 사용하였습니다. 명령어 sudo apt-get install gcc-7-multilib-arm-linux-gnueabi -y;sudo apt-get install gcc-7-multilib-arm-linux-gnu..

gyeongje.tistory.com

 

'Security > etc' 카테고리의 다른 글

Malware Analysis tool 관련  (0) 2021.04.21
유용한 툴  (0) 2021.03.31
Thread Debugging(feat. x64dbg)  (0) 2021.01.06
[x64dbg] 파라미터 주고 실행하기  (0) 2020.10.28
IDA plugin & hotkey  (0) 2020.08.20
Comments