728x90
반응형

리버싱/ARM 13

ARMv8

ARM은 대표적인 RISC 계열 마이크로프로세서로, 구조가 단순하고 낮은 소비전력이 강점이다. ARMv4부터 시장의 성장기에 경쟁하던 아키텍처에 비해 저전력 고성능을 인정받으면서 자리 잡게 됬다. 시장의 요구에 따라 아키텍처가 지속적으로 발전하여 VFP와 SIMD 등 퍼포먼스를 위한 기능과 코드 크기 감소, 가상화와 시큐리티 지원 기능이 추가되며 현재의 ARMv8에까지 이르게 됬다. ARMv8은 Cortex-A/R/M 시리즈에 따라 다르게 구현된다. 이 중 가장 먼저 발표된 ARMv8-A는 애플리케이션 프로세서 프로파일에 해당한다. ARMv8의 가장 큰 특징은 64비트 아키텍처다. 하지만 실행 상태(execution state)라는 개념이 도입하여 32비트 ARMv7용 코드도 실행 가능하다. 실행 상태는..

리버싱/ARM 2021.02.09

ARM Assembly

ARM CPU의 기본 구성 R0 ~ R15 총 16개의 범용 레지스터를 가지고 있다. 범용 레지스터 R13은 특수 레지스터 SP로 사용된다. SP(Stack Pointer)는 스택의 주소를 저장하는 레지스터이다. 범용 레지스터 R14는 특수 레지스터 LR로 사용된다. LR(Link Register)는 함수 호출 시 되돌아갈 함수의 주소를 저장하는 레지스터이다. 범용 레지스터 R15는 특수 레지스터 PC로 사용된다. PC(Program Counter)는 다음 실행할 프로그램의 주소를 가지고 있는 레지스터이다. 명령어들 MOV ARM에서 레지스터의 데이터 이동을 MOV 명령을 사용한다. ex) MOV R0, R1 (R1의 내용을 R0으로 복사) MOV R0, #1 (상수 1을 R0으로 복사) LDR (Loa..

리버싱/ARM 2021.02.09

ARM 크로스 컴파일러 및 실행

ARM 32Bit sudo apt-get install gcc-arm-linux-gnueabi sudo apt-get install g++-arm-linux-gnueabi ARM 64Bit sudo apt-get install gcc-aarch64-linux-gnu sudo apt-get install g++-aarch64-linux-gnu ARM 크로스 컴파일 하기 arm-linux-gnueabi-gcc -o test test.c (32Bit) aarch64-linux-gnu-gcc -o test test.c (64Bit) ARM 실행 qemu-arm -L /usr/arm-linux-gnueabi ./실행파일 qemu-aarch64 -L /usr/aarch64-linux-gnu ./실행파일 gdb-mu..

리버싱/ARM 2021.02.01
728x90
반응형