ARM 어셈블리 튜토리얼 (5) 여러 값 불러오기/저장하기

ARM Assembly에 대해 공부하던 중 좋은 글이 있어 번역 하였다. 출처: Azeria Labs (https://azeria-labs.com/writing-arm-assembly-part-5/) 값 불러오기 및 저장하기 가끔은 여러 숫자를 한번에 불러오거나 저장하는 것이 더 효율적일 때가 있습니다. 우리는 LDM(여러개 불러오기)와 STM(여러개 저장하기)를 그런 용도로 사용합니다. 해당 명령어 들은 시작 주소를 접근하는 방법만 다릅니다. 이 파트에서는 아래의 코드를 기반으로 설명할 것입니다. 아래에서 각 명령어 마다 스텝 바이 스텝으로 설명 하겠습니다. .data array_buff: .word 0x00000000 /* array_buff[0] */ ....

May 8, 2022 · 8 min · deguru22

ARM 어셈블리 튜토리얼 (4) 메모리 명령어: 불러오기 및 저장

ARM Assembly에 대해 공부하던 중 좋은 글이 있어 번역 하였다. 출처: Azeria Labs (https://azeria-labs.com/writing-arm-assembly-part-4/) ARM은 메모리 접근 시 오직 불러오기-저장(load-store, LDR and STR) 명령만을 사용 하도록 하는 불러오기-저장 모델을 사용합니다. x86에서 대부분의 명령들은 직접 메모리 안의 데이터를 접근하는 것과 달리, ARM에서는 데이터는 반드시 처리 전에 레지스터로 불러오는 과정을 거쳐야 합니다. 이 말인 즉슨 특정 메모리에 올라와 있는 32-bit 값을 ARM에서 증가 시키려면 3개의 명령어(불러오기, 증가하기, 저장)를 실행 해야 한다는 이야기 입니다....

September 19, 2021 · 11 min · deguru22

ARM 어셈블리 튜토리얼 (3) ARM & Thumb

ARM Assembly에 대해 공부하던 중 좋은 글이 있어 번역 하였다. 출처: Azeria Labs (https://azeria-labs.com/writing-arm-assembly-part-3/) ARM은 실행하기 위해 두 개의 상태(Jazelle는 제외하도록 합니다)를 가지고 있습니다 - ARM과 Thumb 입니다. 이 상태들은 권한과는 관계가 없습니다. 예를들어 SVC 모드에서 실행되는 코드는 ARM 일 수도 Thumb일 수도 있습니다. 두 상태의 주요 다른 점은 명령어 셋입니다. ARM 상태일때는 명령어가 항상 32-bit 이지만, Thumb 상태의 명령어 셋은 16-bit 입니다(그러나 32-bit 일 수도 있습니다). 언제, 어떻게 Thumb를 쓰는지 아는 것이 ARM 익스플로잇 개발에 매우 중요합니다....

August 30, 2021 · 5 min · deguru22

ARM 어셈블리 튜토리얼 (2) 데이터 타입과 레지스터

ARM Assembly에 대해 공부하던 중 좋은 글이 있어 번역 하였다. 출처: Azeria Labs (https://azeria-labs.com/writing-arm-assembly-part-2/) 데이터 타입들 하이레벨 언어들과 비슷하게, ARM은 다른 데이터타입에 대한 연산을 지원합니다. 우리가 불러오거나 저장할 수 있는 데이터 타입들은 부호가 없는 워드(unsigned words), 반 워드(half words), 혹은 바이트(bytes) 입니다. 이 데이터 타입들에 대해 붙는 전치사(익스텐션)들은: -h or -sh: halfwords, -b or -sb: bytes이며 워드(words)는 익스텐션이 없습니다. 부호가 있는(signed) 것과 없는(unsigned)것의 차이는 아래와 같습니다. 부호가 있는 데이터 타입들은 양수와 음수를 모두 저장할 수 있으므로, 표현할 수 있는 범위(range)가 적습니다....

August 22, 2021 · 8 min · deguru22

ARM 어셈블리 튜토리얼 (1) 기초

ARM Assembly에 대해 공부하던 중 좋은 글이 있어 번역 하였다. 출처: Azeria Labs (https://azeria-labs.com/writing-arm-assembly-part-1/) ARM Assembly Basics 튜토리얼 시리즈에 오신 여러분을 환영합니다! 이 문서는 ARM Exploit 개발 튜토리얼 전에 알아야 할 내용을 담고 있습니다. ARM 쉘코드를 작성하고 ROP 체인을 만들기 전에 ARM Assembly 기초에 대해서 알아야 합니다. 아래 주제들을 순차적으로 다룰 예정입니다. ARM Assembly 기본 튜토리얼 시리즈: Part 1. ARM Assembly 기본 Part 2. 데이터 타입 레지스터 Part 3....

August 18, 2021 · 6 min · deguru22