[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터...
-
Upload
seongho-park -
Category
Engineering
-
view
53 -
download
8
Transcript of [기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터...
1 / 16
IA-32레지스터 분석 및
abex’ crackme를 통한 파라미터 전달 실습
25-1 박성호
리버싱 #2
2 / 16
목차
Register? – Register, IA-32 Register, Load & Store Design
메모리 구조 소개 (8086 Memory Architecture)
Stack, Stack 에 사용되는 레지스터 (ESP, EBP, Stack Frame, RET, FP, SFP)
실습
Q&A
3 / 16
Register? _ Definition
4 / 16
Register? _ Load & Store Design
int a = 10; // 0x10번지 할당int b = 20; // 0x20번지 할당int c = 0; // 0x30번지 할당
c = a + b;"0x10번지(a)에 저장된 값과 0x20번지(b)에 저장된 값을 더해서 0x30번지(c)에 저장해라"
메인메모리에 저장된 데이터를 레지스터로 일단 옮긴 후, 그 다음 덧셈을 진행해야 함.
-------------------------------------Register Set ---------> 메인 메모리
(STORE)<--------
(LOAD)-------------------------------------
5 / 16
Register? _ Load & Store Design
-----------------------------------------------------예약(2) LOAD(3) destination(3) source(8)
110 011 00000111-----------------------------------------------------
- destination : 데이터를 저장한 레지스터 정보- source : 데이터를 읽어올 메모리 주소 정보
-----------------------------------------------------예약(2) STORE(3) source(3) destination(8)
110 010 00001000-----------------------------------------------------
LOAD r3, 0x07->0x07번지에 존재하는 데이터를 레지스터 r3에 저장STORE r2, 0x08->레지스터 r2에 존재하는 데이터를 메인 메모리의 0x80번지에 저장
6 / 16
Register? _ Load & Store Design
int a = 10; // 0x10번지 할당int b = 20; // 0x20번지 할당int c = 0; // 0x30번지 할당c = a + b;
----------------------------------------------------
10 0x10----------------------------------------------------
20 0x20----------------------------------------------------
30 0x30----------------------------------------------------
LOAD r1, 0x10 // 0x10번지에 저장된 데이터를r1로 이동
LOAD r2, 0x20 // 0x20번지에 저장된 데이터를r2로 이동
ADD r3, r1, r2 // r1, r2에 저장된 값을 더해서r3에 결과를 저장
STORE r3, 0x30 // r3에 저장된 값을0x30번지에 저장
피연산자가 레지스터가 되게끔 하기 위해서 메모리에저장된 값을 레지스터에 옮겨다 놓은 후 연산!!
Conclusion : CU는 명령어를 해석한다.메모리에서 나와 입출력 버스를 타고, 레지스터에 저장된다.
ALU에 의해 연산이 진행되고, 그 결과값은 다시 입출력 버스를 타고 메모리에 STORE 된다.
7 / 16
Register? _ IA32 CPU Architecture
8 / 16
Register? _ 범용 Register
9 / 16
메모리 구조 소개
10 / 16
메모리 구조 소개
11 / 16
Stack _ 스택이란
역할1. 로컬 변수 임시 저장.2. 함수 호출 시 파라미터 전달3. 리턴 어드레스 저장
스택이 높은 주소에서부터 쌓이는 이유
12 / 16
Stack _ 스택에 사용되는 ESP, Stack Frame, RET, EBP, FP, SFP 레지스터
13 / 16
Stack _ 스택에 사용되는 ESP, Stack Frame, RET, EBP, FP, SFP 레지스터
14 / 16
실습소개
실습목표 : Disassem Code의 Debuging 연습
내용 : CD-ROM을 요구하는 프로그램이 있을 때, HDD 를 CD-Rom으로 크랙시켜 통과 메시지를 출력시키도록 함.
응용기술 : Stack에 파라미터를 전달하는 과정을 이해하여 크랙화Stack의 FIFO 구조의 이해
사용되는 명령 : PUSH, CALL, INC, DEC, JMP, CMP, JE
15 / 16
실 습
16 / 16
Q & A