[ Assemble ] 어셈블리어 개요 & SASM 설치

2020. 3. 31. 20:22·Archive/Hacking
728x90
반응형

 

 

 

 

 

 

 

어셈블리어란?

 

어셈블리어란 C나 JAVA 와 같은 사용자와 가까운 고급언어보다 기계어와 더 가까운 언어이다.

기계어와 명령어가 1:1로 대응하고,

이 기계어는 CPU 종류에 따라 달라지기 때문에 호환성이 없는 언어이다.

주로 임베디드나 커널 프로그래밍 등에 쓰인다.

 

 

 

 

 

어셈블리어의 특징

 

 

  • 동일한 종류의 프로레서만 실행된다.
  • 프로세서에 대한 사전지식이 필요하다.
  • 메모리나 입출력장치, 레지스터 등의 구성요소를 직접 다룰 수 있다.
  • 컴퓨터에서 실행하는 과정등을 이해하기 쉽다.

 

 

 

 

 

고급언어의 특징

 

 

  • 프로세서 종류 상관X -> CPU의 종류가 달라도 코드에 지장없다.
  • 프로세서에 대한 사전 지식이 필요없다.
  • 문법이 비교적 간단하고 이해하기 쉽다.
  • 코드 양이 적고 디버깅이 용이하다.

 

 

 

 

 

컴파일러 VS 어셈블러

 

- 컴파일러

  • 고급언어 프로그램 입력
  • 구문 오류 검사
  • 목적코드 생성
  • 한 문장을 여러개의 기계코드로 변환.

 

 

- 어셈블러

  • 기계어 형태의 오브젝트 코드로 해석해주는 언어번역 프로그램
  • 어셈블리어 프로그램입력
  • 하나의 어셈블리어 명령어는 하나의 기계코드에 대응

 

 

 

 

 

 

어셈블리 실행파일 생성 과정

 

 

test.asm 이라는 어셈블리 텍스트 파일이 어셈블러를 거치면

os규약과 합쳐져 test.obj 코드가 된다.

이후 이 목적코드가 링커를 거쳐 라이브러리 파일이 합쳐지면 비로소 test.exe가 된다.

 

 

 

 

 

 

어셈블리언어로 프로그래밍 하는것, 어떤가요?

  • 규칙이 단순하고 반복이 많다.

  • 편의를 위해 내부적으로 많은 매크로 사용
  • 매크로 차이로 소스 호환 안되는 경우 많음

 

 

 

 

어셈블러의 종류

 

  • MASM - 윈도우
  • GAS - 리눅스/유닉스
  • NASM - 윈도우, 리눅스, 맥
  • SASM - 윈도우, 리눅스

 

이중 SASM 은 통합개발 환경으로 GUI,CUI 둘 다 지원하며

공통 매크로 함수를 지원한다.

화면 및 키보드 입출력과 관련된 다른 운영체제 서비스를 추상화시킨다.

즉, 아키텍처 상관없이 사용이 가능하다.

 

 

 

 

 

어셈블리어 구조

 

  • 윈도우 : intel 문법
  • 리눅스 : AT&T 문법

 

 

 

+ 코드는 특수한 경우 제외 대소문자 구분 X

+ 주석은 세미콜론 사용.

 

 

 

 

 

 

 

 

 

 


 

 

 

SASM 설치

 

구글에 SASM 을 검색해 가장 먼저 나오는 창이다.

 

 

 

 

 

 

링크를 타고 들어가보자. 검색하기 귀찮으니까.

 

 

 

 

https://dman95.github.io/SASM/english.html

 

 

 

 

 

 

 

아래로 쭉 스크롤 하다보면 Windows와 Linux용 다운로드 버튼이 있다.

 

 

 

 

 

 

 

 

클릭하여 다운로드 받는다.

 

 

 

언어는 다 영어로 설정해준다.

 

 

 

 

 

 

 

 

 

설치하고 실행하면 위 그림과 같은 화면이 나올 것이다.

Create new project를 이용해서 새로운 프로젝트를 만들어준다.

 

 

 

 

 

 

 

나는 처음 설정을 조금 거쳐서 기본 화면 구성이 저렇다.

 

첫번째 줄이 %include "io.inc" 면 32bit 매크로를 의미한다.

 

%include "io64.inc" 는 64bit 매크로다.

 

 

 

32bit 매크로는 64비트의 컴퓨터에서 돌아가지만,

64bit 매크로는 32비트 컴퓨터에서 돌아가지 않는다.

 

 

 

 

 

 

나처럼 새로운 파일을 만들었을 때의 매크로 세팅을 바꾸고 싶다면

 

Settings -> Build 에서 64를 선택해주면 된다.

x86은 32bit다.

 

 

 

 

 

화면 안에 있는 주석도 없애고, section 도 만들어주고 싶다면

Settings -> common 에 들어가서 바꿔주면 된다.

 

 

 

 

 

 

 

 

참고로 section .text 는 코드를 쓰는 공간이고,

section .data는 변수를 선언하는 공간이다.

 

 

* 이때, section 다음은 반드시 띄우고 .을 쓰길 바란다.

 

 

 

 

 

오늘 포스팅은 간단한 어셈블리의 개요와 어셈블러인 SASM을 설치해보았다.

다음 포스팅은 출력과 연산 정도 수준의 어셈블리어 프로그래밍을 실습해보겠다.

 

 

 

 

 

728x90
반응형

'Archive > Hacking' 카테고리의 다른 글

[ Protocol ] 프로토콜 문서 기본 지식  (0) 2020.04.03
[ Assemble ] 어셈블리어 출력, add 연산, imul 연산실습  (0) 2020.03.31
[ Bee-Box ] 기타 Injection - OS 커맨드 injection  (1) 2020.03.30
[ Bee-Box ] 기타 Injection - iframe injection  (0) 2020.03.30
[ Bee-Box ] HTML Injection - Stored(Blog)  (0) 2020.03.29
'Archive/Hacking' 카테고리의 다른 글
  • [ Protocol ] 프로토콜 문서 기본 지식
  • [ Assemble ] 어셈블리어 출력, add 연산, imul 연산실습
  • [ Bee-Box ] 기타 Injection - OS 커맨드 injection
  • [ Bee-Box ] 기타 Injection - iframe injection
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    코드업 파이썬 기초 100제
    비박스
    파이썬 알고리즘
    oracle db
    장고
    Codeup
    javascript
    자바스크립트
    Oracle
    자바스크립트 API
    파이썬 문제
    C++
    카카오 100일 프로젝트
    오라클
    백준 파이썬
    백준
    보안뉴스
    백준 풀이
    파이썬 기초
    자바스크립트 객체
    파이썬
    docker
    Git
    백준 문제풀이
    코드업
    Python
    코드업 기초
    파이썬 기초 문제
    Django
    파이썬 백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Assemble ] 어셈블리어 개요 & SASM 설치
상단으로

티스토리툴바