5. • 실행 가능한 코드들이 위치함
• 실제 실행되는 assembly 코드들
.data 섹션
5
6. • 실행 가능한 코드가 아님
• 초기 값이 있는 전역 변수, 스태틱 변수, 문자열 등
.text 섹션
6
7. ASM Grammar
7
• X86 CPU 기준으로 크게 Intel 과 AT&T 방식으로 나뉨
• Intel 방식
• 가독성이 뛰어남
• Windows 플랫폼에서 기본 문법으로 많이 사용
• AT&T 방식
• Intel 보다 가독성이 떨어짐
• Intel 보다 좀 더 많은 정보를 담을수 있음
• 오픈 소스 진영에서 GNU 어셈블러(GAS)의 기본이 AT&T 방식
10. SYSCALL
10
• SYSCALL
• Level0 의 시스템 프로시져를 호출하기 위한 명령
• 어플리케이션 레벨에서 커널 레벨로 진입하기 위한 명령
• SYSENTER 나 int 0x80h로 사용되기도 함
11. Calling Convention
11
• Cdecl (C declaration)
• X86 아키텍처를 위한 C 컴파일러에서 주로 사용됨
• 함수를 위한 인자들을 stack 을 통해 전달
• 결과는 EAX 레지스터를 통해 전달됨 (interger, memory address)
• Syscall
• 32bit OS/2 API 의 표준 호출 규약
• Optlink, Fastcall, Etc…
12. 명령어
12
• MOV (Move)
• Source에서 Destination으로 데이터를 복사
• MOV destination, source
• LEA (Load Effective Address)
• Source의 유효 주소를 계산하여, Destination에 복사
• LEA destination, source
• XOR (Exclusive OR)
• Destination과 Source의 각 비트를 XOR 연산
• XOR destination, source
14. GDB
14
• x option
• 메모리를 조사 하는 옵션
• show option
• o : 8진법
• x : 16진법
• d : 10진법
• t : 2진법
• b : 1byte
• h : 2byte
• w : 4byte
• g : 8byte
• i : 역어셈블리된 명령의 메모리
• c : ASCII 표의 바이트
• s : 문자 데이터의 전체 문자열
27. t h a n k y o u
Copyright 2017 Penta Security Systems Inc. All rights reserved.
KOREA
U.S.A.
JAPAN
Yeouido, Seoul www.pentasecurity.co.kr (HQ)
Houston, Texas www.pentasecurity.com
Shinjuku-Ku, Tokyo www.pentasecurity.co.jp