arm, mips cross compiling and debugging
ubuntu 18.04 이상 버전으로 해주세요.
apt repository 관련 문제로 이하 버전이 설치되어 오류가 많이 발생합니다..
gcc install with many arch
sudo apt-get install gcc-7-multilib-arm-linux-gnueabi -y;sudo apt-get install gcc-7-multilib-arm-linux-gnueabihf -y;sudo apt-get install gcc-7-multilib-mips64el-linux-gnuabi64 -y;sudo apt-get install gcc-7-multilib-mips64-linux-gnuabi64 -y;sudo apt-get install gcc-7-multilib-mipsel-linux-gnu -y;sudo apt-get install gcc-7-multilib-mips-linux-gnu -y
위의 gcc
들만 설치를 완료하면 크로스 컴파일을 할 수 있습니다.
compile
arm-linux-gnueabi-gcc-7 -o test test.c
mips-linux-gnu-gcc-7 -o test test.c
mips64-linux-gnuabi64-gcc-7 -o test test.c
이렇게 컴파일을 완료하시면 다음과 같은 elf
파일이 등장합니다.
execution
다른 아키텍처의 elf
실행을 도와주는 툴인 qemu-user-static
를 설치해봅시다.
sudo apt-get install qemu-user-static
설치하셨으면 다음과 같은 명령어로 실행이 가능합니다.
qemu-arm-static -L /usr/arm-linux-gnuabi ./test
qemu-mips-static -L /usr/mips-linux-gnu ./test
제 경우는 mips
바이너리를 실행할때만 오류가 발생하는데 관련 자료들을 아무리 찾아봐도 이유를 모르겠습니다.. 아시는분은 좀 알려주세요 ㅠㅜ
debug
디버그를 위해 gdb-multiarch
의 사전 설치가 필요합니다.
sudo apt-get install gdb-multiarch
설치하셨으면 디버그를 시작해봅시다.
arm debug
qemu-arm-static -L /usr/arm-linux-gnueabi -g 8888 ./test
위 명령어로 gdbserver
에 바이너리를 올려 8888 포트로 대기를 해줍니다.
gdb-multiarch
set arc arm
target remote localhost:8888
file ~/test/test2(바이너리 경로)
i386
아키텍처에서 arm
디버그를 성공했습니다!
mips debug
qemu-mips-static -L /usr/mips-linux-gnu -g 8888 ./test
위 명령어로 gdbserver
에 바이너리를 올려 8888 포트로 대기를 해줍니다.
gdb-multiarch
set arc mips
set endian big
target remote localhost:8888
file ~/test/test2(바이너리 경로)
mips
디버그에 성공했습니다!
ref
'system' 카테고리의 다른 글
mips 쉘코드 작성 (0) | 2019.08.11 |
---|---|
qemu 설치 및 mips 셋팅 (2) | 2019.08.10 |
peda-arm, peda-mips (0) | 2019.08.10 |