본문으로 바로가기

CrossCompile - ARM,MIPS

category Study/reversing 2018. 4. 17. 21:45

컴퓨터구조론 강의를 들으면서 배운 ARM과 MIPS 방식이 실제로 어떻게 돌아가는지 궁금증이 생겼다. 그래서 검색해보니 CrossCompile을 진행하면 c언어가 원하는 환경으로 멀티 컴파일 되어 코드를 다른 방식으로 역어셈블을 할 수 있게된다고 한다.


이러한 환경변경을 가능하게 해주는 유틸리티가 있다.

바로 가상화 소프트웨어중 하나인 QEMU이다.


Install


1
2
3
4
5
6
7
8
9
10
sudo apt-get install -y  gcc-multilib-arm-linux-gnueabi
sudo apt-get install -y  gcc-multilib-arm-linux-gnueabihf
sudo apt-get install -y  gcc-multilib-mips-linux-gnu
sudo apt-get install -y  gcc-multilib-mips64-linux-gnuabi64
sudo apt-get install -y  gcc-multilib-mips64el-linux-gnuabi64
sudo apt-get install -y  gcc-multilib-mipsel-linux-gnu
sudo apt-get install -y  gcc-multilib-powerpc-linux-gnu
sudo apt-get install -y  gcc-multilib-powerpc64-linux-gnu
sudo apt-get install -y  gcc-multilib-s390x-linux-gnu
sudo apt-get install -y  gcc-multilib-sparc64-linux-gnu
cs


위와 같이 여러 멀티 컴파일 라이브러리를 설치한다.




Compile


1
arm-linux-gnueabi-gcc -o file file.c --static
cs

ARM 방식으로 컴파일을 원할경우 위와같이 명령을 입력하면 된다.


1
mips-linux-gnu-gcc -o file file.c --static
cs

MIPS 방식으로 컴파일을 원할경우 위와같이 명령을 입력하면 된다.




QEMU


1
qemu-arm-static -/usr/arm-linux-gnueabi ./file
cs

ARM 가상환경을 구축한다.


1
qemu-mips-static -/usr/mips-linux-gnu ./file
cs

MIPS 가상환경을 구축한다.




GDB


1
gdb-multiarch
cs

gdb 소프트웨어를 다양한 아키텍쳐로 실행할 수 있는 명령이다.



1
(gdb) file ./file
cs

gdb 소프트웨어 내에서 역어셈블을 원하는 파일을 불러온다.

(앞의 file은 명령이고 뒤의 file은 실제 파일명이다)







'Study > reversing' 카테고리의 다른 글

함수 인자 전달 레지스터(64bit)  (0) 2018.04.01
GDB 사용법  (0) 2017.11.07
안티 디버깅  (0) 2017.10.17
언패킹  (1) 2017.10.17
패킹  (0) 2017.10.16