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

2020. 3. 31. 20:22·Archive/Hacking
목차
  1. 어셈블리어란?
  2. 어셈블리어의 특징
  3. 고급언어의 특징
  4. 컴파일러 VS 어셈블러
  5. 어셈블리 실행파일 생성 과정
  6. 어셈블리언어로 프로그래밍 하는것, 어떤가요?
  7. 어셈블러의 종류
  8. 어셈블리어 구조
  9. SASM 설치
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
  1. 어셈블리어란?
  2. 어셈블리어의 특징
  3. 고급언어의 특징
  4. 컴파일러 VS 어셈블러
  5. 어셈블리 실행파일 생성 과정
  6. 어셈블리언어로 프로그래밍 하는것, 어떤가요?
  7. 어셈블러의 종류
  8. 어셈블리어 구조
  9. SASM 설치
'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 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.