ARM 어셈블리 언어 모듈에는 여러 구성 부분이 있습니다. 이 예제의 구성 부분은 다음 섹션에서 자세히 설명합니다. 이 지시문은 어셈블러에게 이 소스 파일의 처리를 중지하도록 지시합니다. 모든 어셈블리 언어 소스 모듈은 LINE에서 END 지시문으로 완료해야 합니다. 어셈블리 또는 컴파일의 출력은 포함 될 수 있습니다 : 그러나, 우리는 ARM 어셈블리 언어가 아마도 널리 사용에서 가장 쉬운 어셈블리 언어이지만, 우리가 ARM에 대해 가지고있는 것보다 x86 보안 연구에 전문 전문가가 더 있습니다. 그렇다면 왜 더 많은 사람들이 ARM에 집중하지 않을까요? 아마도 ARM에 대한 것보다 인텔의 악용을 다루는 더 많은 학습 리소스가 있기 때문일 것입니다. 그냥 퍼지 보안 또는 코이란 팀에 의해 쓰기 인텔 x86 악용에 대한 훌륭한 자습서에 대해 생각 – 이러한 지침은 실용적인 지식과 그에서 다루는 것을 넘어 배울 수있는 영감을 얻기 위해이 특정 영역에 관심이있는 사람들을 도와 자습서. x86 익스플로잇 쓰기에 관심이 있다면 코이란 및 퍼지섹 자습서를 통해 완벽한 출발점이 됩니다. 이 자습서 시리즈에서는 어셈블리 기본 사항과 ARM에 대한 쓰기 에 중점을 둡니다. *.s라는 이름으로 어셈블리 파일을 작성한 후에는 어셈블리 파일을 로 어셈블하고 ld와 연결해야 합니다: AREA 지시문을 사용하여 프로그램 코드 또는 데이터의 섹션의 이름을 지정하고 이름을 지정할 수 있습니다. 이 예제는 코드 세그먼트이며 CODE 식별자로 표시됩니다. 또한 실행 중에 코드를 변경할 수 없다는 점에서 READONLY로 선언됩니다. 작업 중인 ARM 어셈블리 프로그램에는 하나 이상의 CODE 영역이 있어야 합니다.
맨 아래에서 시작하여 어셈블리 언어까지 살펴보겠습니다. 가장 낮은 수준에서, 우리는 우리의 회로에 우리의 전기 신호를 가지고있다. 신호는 전기 전압을 0볼트(`off`) 또는 5볼트(`on`)와 같은 두 레벨 중 하나로 전환하여 형성됩니다. 회로가 어떤 전압인지 쉽게 알 수 없기 때문에 시각적 표현, 숫자 0 및 1을 사용하여 온 / 오프 전압의 패턴을 작성하여 신호의 부재 또는 존재에 대한 아이디어를 나타낼뿐만 아니라 0과 1이 di이기 때문에 이진 시스템의 gits. 그런 다음 0과 1의 시퀀스를 그룹화하여 컴퓨터 프로세서의 가장 작은 작업 단위인 컴퓨터 코드 명령을 형성합니다. 다음은 기계 언어 명령의 예입니다: 예제 2.1은 어셈블리 언어 모듈의 핵심 구성 요소 중 일부를 보여 줍니다. 이 예제는 ARM 어셈블리 언어로 작성됩니다. 어셈블리 프로그램이 mnemonics라는 텍스트 정보로 구성되어 있다는 것을 알고 있으므로 기계 코드로 변환해야합니다.
위에서 언급했듯이 ARM 어셈블리의 경우 GNU Binutils 프로젝트는 우리에게 다음과 같은 도구를 제공합니다. 어셈블러를 사용하여 (ARM) 어셈블리 언어에서 (ARM) 컴퓨터 코드로 변환하는 프로세스를 어셈블리라고 합니다.