tmxklab
ARM 크로스 컴파일 및 디버깅(qemu) 본문
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나 다른 아키텍쳐의 바이너리를 컴파일하거나 디버깅할 때 다음 링크에서 참고하자
'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