본문 바로가기
Security/[리얼] System

ARM 어셈블리어 Cross compile하기

by blackcon 2015. 4. 28.

일반 intel아키텍처에서 ARM아키텍처의 프로그램을 생성하는 크로스컴파일을 간략히 설명한다.

테스트 환경은 Ubuntu 14.04 64bit 이다.

$ uname -a
Linux bk 3.13.0-51-generic #84-Ubuntu SMP Wed Apr 15 12:08:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

그럼 크로스컴파일을 하기전에 apt-get install을 이용하여 아래의 파일들을 다운받는다.

[+] 설치 할 항목

sudo apt-get install qemu-user libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-arm-linux-gnueabi

그리고 간단한 어셈코드를 코딩할건데 여기서는 shell을 실행할 수 있는 코드를 작성한다.

[+] test.asm

  1 .text
  2 .globl _start
  3 _start:
  4     mov %r7, $11
  5     ldr %r0, =msg
  6     mov %r1, $0
  7     mov %r2, $0
  8     svc 0
  9 msg:
 10     .asciz "/bin/sh"


그 후 컴파일을 하기 위해서 아래와 같은 명령어를 입력한다.

[+] Cross Compile

arm-linux-gnueabi-gcc -o arm.exe -nostartfiles -static test.s


[+] ARM 파일 실행하기

qemu-arm ./arm.exe


[!] 실행 결과


'Security > [리얼] System' 카테고리의 다른 글

간단한 바이너리를 통한 ROP 공격  (0) 2014.08.15
페이징(Paging)  (0) 2014.05.29
바인딩 타임(binding time)  (0) 2013.09.16