X64 아키텍쳐 분석과 x64와 x86 비교 분석 손충호 (StolenByte).

Slides:



Advertisements
Similar presentations
Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved. 제7강제7강.
Advertisements

운영체제의 역사 작성 / 발표 오두환.  OS( 운영체제 ) 의 정의 OS(operating system) 란 ?? 머리 - > 계산 = Cpu 얼굴 + 몸매 = 그래픽카드 눈 = 모니터 머리 -> 기억 = HDD/SDD 입 = 스피커 귀 = 마이크 ….. 하드웨어하드웨어.
운 영 체 제 실 습 ( 리눅스 서버관리입문 ) 개 요. 2/31 운영체제 (Operating System) 개요 시스템 소프트웨어 !!!  응용 프로그램과 하드웨어 사이의 인터페이스 역할  응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를.
1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
J-Stream part1 (Software streaming service) ▪ 팀명 : Jukdori ▪ 팀원 : 16 th 윤병호 (PL) 15 th 송인규 16 th 김영진.
미디어 프로그래밍 II 소개.
Linux Seminar #1 리눅스 이해하기.
MO/MT를 활용한 Call Center 제안
64bit 프로그래밍 MSDN Magazine x64 Primer – Everything You Need to Know To Start Programming.
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
Linux Debugging issues
SYSTEM CALL (Syscall) CSLAB SEWON PARK.
PC와 인터넷 정강수 컴퓨터 구조와 웹의 이해 PC와 인터넷 정강수
EZ Board-M In-Ho, Roh Real Time System Lab.
Hide Process
Ablecom Type-7 IVR 에이블컴 기술연구소.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
네트워크 프로그래밍 <네트워크 주문 프로그램 V1.00 >
변화 하는 세계 무역 환경 (p.144~147) 5303김민영.
System Call Linux Kernel 수업 3번째.
자료 구조: Chapter 3 (2)구조체, 포인터
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
Borland® JBuilder™ 7 Installation.
Software Exploit and Kernel Protection
Unix Project2 <test character device 생성>
OpenGL Project (3D 움직이는 자동차)
Program Memorandum - MODEL HOUSE
Visual ESTO 안정성,편리성,성능을 한단계 높였습니다! Visual ESTO IDE/Debugger/Monitor
컴퓨터 구조.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
openGL Project 결과보고서 야구 시구 시뮬레이션
Operating System 5주차 - System Call Analysis -
MicroC/OS-II 3. Memory Management ITISN Technical Lab.
강의 및 교재의 목표 리눅스 초보자 리눅스 중급자. 강의 및 교재의 목표 리눅스 초보자 리눅스 중급자.
C#.
openGL Project 제안서 비 오는 정류장에서
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
포토서버 (PhotoServer) 제품 소개서
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Computer System Architecture
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
Windows 환경에서 동작하는 Arm Emulator(Simulator)
A Web-Based Little Man Computer Simulator
WindowsXP 설치와 동시에 해야 할 일 Windows XP 완벽한 설치
cafe.naver.com/embeddedcrazyboys
영상처리 실습 인공지능연구실.
Go Lang 리뷰 이동은.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
Lesson 2. 기본 데이터형.
Flash Communication Server
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제7강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
Copyrightⓒ ohta. All Rights Reserved.
ARM Development Suite v1.2
( Windows Service Application Debugging )
OpenGL Project.
7주차: Functions and Arrays
OpenGL Project = Solar System = 김민지 박유나.
Numerical Analysis Programming using NRs
원도우 네트워크 프로그래밍 (TCP/IP 소켓 프로그래밍)
2015 교원능력개발평가 “학부모는 제2의 교원입니다” 여러분의 의견을 들려주세요.
13. 포인터와 배열! 함께 이해하기.
Lecture 7 7-Segment LED controller using u-controller
Pointers summary.
LEON3 DBT 엔진을 이용한 ERC32 기반의 하이퍼바이저 프로토 타입 개발
Presentation transcript:

x64 아키텍쳐 분석과 x64와 x86 비교 분석 손충호 (StolenByte)

Agenda Intro of x64 The x64 Architecture Difference between x86 and x64 Quiz Time Question

Intro of x64

Intro of x64 Linux - x86_64 Debian/Ubuntu – amd64 Intel IA-32e EM64T Intel 64 Oracle x64 BSD – amd64 Linux - x86_64 Debian/Ubuntu – amd64 Fedora/SuSE – x86_64 Solaris – amd64

Intro of x64 1999년 2000년 2001년 2003년 2011년 AMD x86-64 발표 AMD 사양 공개 Linux에 최초 적용 2003년 AMD64 Operton 출시 2011년 Windows 7 사용자 중 약 40%가 x64사용자

The x64 Architecture

The x64 Architecture 32bit의 한계 사용 가능한 가상메모리(Virtual Memory) 64bit 사용 가능한 물리메모리(Physical Memory) 52bit Intel은 40bit까지 지원

The x64 Architecture 64bit Registers (GPRs) 32bit Register에서 64bit로 확장 EAX -> RAX ESP -> RSP EIP -> RIP 64bit Register 8개 추가 r8, r9, r10, r11, r12, r13, r14, r15

The x64 Architecture Register Operation

The x64 Architecture 64bit Registers (Media Register) x86에 기존 8개 Register 존재 xmm0, xmm1, xmm2, … xmm7 128bit XMM(SSE) Register 8개 추가 xmm8, xmm9, xmm10, … xmm15 Vector 및 부동소수점 사용

The x64 Architecture 64bit Registers

The x64 Architecture Intel/AMD AVX AVX 256bit Register 8개 추가 Adavanced Vector Extension 256bit Register 8개 추가 ymm0, ymm1, ymm2, … ymm7 AVX의 하위 128는 XMM(SSE) Register와 Overlap xmm0, xmm1, xmm, … xmm7 AVX가 최초 적용된 CPU는 Intel Sandy Bridge

Difference between x86 and x64

Difference between x86 and x64 Operating Model

Difference between x86 and x64 Address space

Difference between x86 and x64 Debugging Tool for x64

Difference between x86 and x64 Debugging Tool for x64 – Visual Studio

Difference between x86 and x64 Debugging Tool for x64 - WinDbg

Difference between x86 and x64 Debugging Tool for x64 - IDA

Difference between x86 and x64 Debugging Tool for x64 – Visual DuxDebugger

Difference between x86 and x64 64bit Instructions CDQE Quardword에서 Doubleword로 변환(ex. RAX -> EAX) CMPSQ RSI와 RDI를 비교 CMPXCHG16B RDX:RAX와 m128와 비교 m128은 128bit Register를 가리키는 메모리 주소 LODSQ RSI주소에 있는 값을 RAX에 로드 MOVSQ RSI의 주소를 RDI로 이동

Difference between x86 and x64 64bit Instructions STOSQ RDI의 주소를 RAX에 보관 SYSCALL Fast System Call, SYSENTER SYSRET Fast System Call, SYSEXIT

Difference between x86 and x64 RIP-Relative Addressing x86에서 RIP는 사용 불가 x64에서는 RIP를 통해 데이터 Access가 가능 mov rax, qword ptr [rip+100h]

Difference between x86 and x64 x64 Application Binary Interface - Microsoft 하나의 Calling Convention만 사용 cdecl/stdcall 등 사용하지 않음 Calling convention의 모델은 fastcall 처음 4개의 Parameter는 Register를 사용하고, 그 이후는 Stack을 사용 RAX와 XMM0으로 Return 처음 4개의 Parameter에 사용되는 Register RCX, RDX, R8, R9 (정수형) XMM0, XMM1, XMM2, XMM3 (소수형) XMM0은 Float, Double, 128bit 타입에 대한 모든 Return

Difference between x86 and x64 x64 Application Binary Interface - Microsoft 함수 호출 방법 MSDN에는 4번째 이후 Parameter에 대한 정보가 없음. - 25페이지 ~ 26페이지 Calling Convention에 대해 MSDN에 없는 이유는 당연히 MS에서 하는것이 아니고, 이미 예전부터 약속이 되어있기 때문에 MS에서 거론을 할 이유가 없는 것이다.

Difference between x86 and x64 x64 Application Binary Interface - Microsoft 4번째 이후 Parameter는 rsp+20h부터 +08h

Difference between x86 and x64 x64 Application Binary Interface - Microsoft Calling Convention – x86

Difference between x86 and x64 x64 Application Binary Interface - Microsoft Calling Convention – x64

Difference between x86 and x64 x64 Kernel Patch Guard (KPP) Windows XP x64 부터 도입이 된 기술 악성코드 및 Third Part 개발로 인해 BSOD 발생되는 경우에 OS를 안정화를 도모하기 위해 적용 System Image 보호 Ntoskrnl, NDIS, HAL에 대한 이미지 무결성을 체크 SSDT(System Service Descriptor Table) Windows의 커널이 아닌 다른 메모리가 맵핑되지 않게 Hooking 방지 Processor MSRs(syscall), GDT, IDT 보호 Descriptor Table에 대한 보호를 하여 Hooking 방지

Difference between x86 and x64 x64 Application Binary Interface - System Linux, BSD, MAC 등 사용 Microsoft와 전체적으로 다름 Calling Convention에 많은 Register 사용 6개 정수형 Register를 Argument 사용 8개 Float/Double형 Register를 Argument 사용

Difference between x86 and x64 x64 Application Binary Interface - System 정수형 Paramter 6개 Register RDI, RSI, RDX, RCX, R8, R9 Float/Double/Vector형 Parameter 8개 Register XMM0, XMM1, XMM2, … XMM7 중복되지 않고 최대 14개의 Parameter를 저장 가능 구조체 Parameter는 Register 사이에서 분할 가능 RAX는 Vector 번호를 가짐 - 31페이지 PE와 ELF의 Calling Convention이 틀린 이유는 컴파일러에 있다.

Difference between x86 and x64 x64 Application Binary Interface - System

Difference between x86 and x64 x64 Application Binary Interface – System printf("%i %i %f %i %f %i\n", 1, 2, 3.0, 4, 5.0, 6);

Quiz Time Microsoft Application Interface 중 처음 4개의 Parameter로 사용되는 소수형 Register? SYSENTER은 대체 Intruction? Kernel Patch Protection은 Windows 버전 몇부터 적용되고, 몇 bit 운영체제에서 적용 되는가?

Quiz Time Microsoft Application Interface 중 처음 4개의 Parameter로 사용되는 소수형 Register? XMM0, XMM1, XMM2, XMM3 SYSENTER은 대체 Intruction? Kernel Patch Protection은 Windows 버전 몇부터 적용되고, 몇 bit 운영체제에서 적용 되는가?

Quiz Time Microsoft Application Interface 중 처음 4개의 Parameter로 사용되는 소수형 Register? XMM0, XMM1, XMM2, XMM3 SYSENTER은 대체 Intruction? SYSCALL Kernel Patch Protection은 Windows 버전 몇부터 적용되고, 몇 bit 운영체제에서 적용 되는가?

Quiz Time Microsoft Application Interface 중 처음 4개의 Parameter로 사용되는 소수형 Register? XMM0, XMM1, XMM2, XMM3 SYSENTER은 대체 Intruction? SYSCALL Kernel Patch Protection은 Windows 버전 몇부터 적용되고, 몇 bit 운영체제에서 적용 되는가? Windows XP SP3, 64bit

Question E-Mail : thscndgh@gmail.com Twitter : @StolenByte Facebook : fb.com/stolenbyte