SlideShare a Scribd company logo
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

More Related Content

Similar to [기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습

ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
Kenu, GwangNam Heo
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
S.O.P.T - Shout Our Passion Together
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
Jinkyoung Kim
 
Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)
one_two_12
 
TestBCD2013-1(answer)
TestBCD2013-1(answer)TestBCD2013-1(answer)
TestBCD2013-1(answer)Yong Heui Cho
 
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
Seok-joon Yun
 
Linux kernel head.S restart label
Linux kernel head.S restart labelLinux kernel head.S restart label
Linux kernel head.S restart label
재원 최
 
TestBCD2017-1(answer)
TestBCD2017-1(answer)TestBCD2017-1(answer)
TestBCD2017-1(answer)
Yong Heui Cho
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)
Yong Heui Cho
 
Netmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoSNetmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoS
Chris Changmo Yoo
 
IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍OnGameServer
 
TestBCD2015-1(Answer)
TestBCD2015-1(Answer)TestBCD2015-1(Answer)
TestBCD2015-1(Answer)
Yong Heui Cho
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
NAVER D2
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Mario Cho
 
망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8
종인 전
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
Daniel Shin
 
iOS 메모리관리
iOS 메모리관리iOS 메모리관리
iOS 메모리관리
Changwon National University
 
Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program
경섭 심
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
JaM2in
 
Before OTD EDU Assignments
Before OTD EDU AssignmentsBefore OTD EDU Assignments
Before OTD EDU Assignments
Beom Lee
 

Similar to [기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습 (20)

ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)
 
TestBCD2013-1(answer)
TestBCD2013-1(answer)TestBCD2013-1(answer)
TestBCD2013-1(answer)
 
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
 
Linux kernel head.S restart label
Linux kernel head.S restart labelLinux kernel head.S restart label
Linux kernel head.S restart label
 
TestBCD2017-1(answer)
TestBCD2017-1(answer)TestBCD2017-1(answer)
TestBCD2017-1(answer)
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)
 
Netmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoSNetmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoS
 
IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍
 
TestBCD2015-1(Answer)
TestBCD2015-1(Answer)TestBCD2015-1(Answer)
TestBCD2015-1(Answer)
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
 
iOS 메모리관리
iOS 메모리관리iOS 메모리관리
iOS 메모리관리
 
Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
Before OTD EDU Assignments
Before OTD EDU AssignmentsBefore OTD EDU Assignments
Before OTD EDU Assignments
 

More from Seongho Park

[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서
[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서
[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서
Seongho Park
 
2015 hi first 스터디 최종보고서
2015 hi first 스터디 최종보고서2015 hi first 스터디 최종보고서
2015 hi first 스터디 최종보고서
Seongho Park
 
Unreal engine 1차 발표 150507
Unreal engine 1차 발표   150507Unreal engine 1차 발표   150507
Unreal engine 1차 발표 150507
Seongho Park
 
버니니 책이있는 어디든 도서관 최종 발표
버니니   책이있는 어디든 도서관 최종 발표버니니   책이있는 어디든 도서관 최종 발표
버니니 책이있는 어디든 도서관 최종 발표
Seongho Park
 
버니니 책이있는 어디든 도서관 시작 발표
버니니   책이있는 어디든 도서관 시작 발표버니니   책이있는 어디든 도서관 시작 발표
버니니 책이있는 어디든 도서관 시작 발표
Seongho Park
 
버니니 책이있는 어디든 도서관 세번째 이터레이션 계획
버니니   책이있는 어디든 도서관 세번째 이터레이션 계획버니니   책이있는 어디든 도서관 세번째 이터레이션 계획
버니니 책이있는 어디든 도서관 세번째 이터레이션 계획
Seongho Park
 
버니니 책이있는 어디든 도서관 세번째 발표
버니니   책이있는 어디든 도서관 세번째 발표버니니   책이있는 어디든 도서관 세번째 발표
버니니 책이있는 어디든 도서관 세번째 발표
Seongho Park
 
버니니 책이있는 어디든 도서관 두번째 이터레이션 계획
버니니   책이있는 어디든 도서관 두번째 이터레이션 계획버니니   책이있는 어디든 도서관 두번째 이터레이션 계획
버니니 책이있는 어디든 도서관 두번째 이터레이션 계획
Seongho Park
 
버니니 책이있는 어디든 도서관 두번째 발표
버니니   책이있는 어디든 도서관 두번째 발표버니니   책이있는 어디든 도서관 두번째 발표
버니니 책이있는 어디든 도서관 두번째 발표
Seongho Park
 
Windows Server Groupware & Network
Windows Server Groupware & NetworkWindows Server Groupware & Network
Windows Server Groupware & Network
Seongho Park
 
K-Hackathon_청춘내일_발표자료
K-Hackathon_청춘내일_발표자료K-Hackathon_청춘내일_발표자료
K-Hackathon_청춘내일_발표자료
Seongho Park
 
Unreal engine 1차 발표 150507
Unreal engine 1차 발표   150507Unreal engine 1차 발표   150507
Unreal engine 1차 발표 150507
Seongho Park
 
사뭇 Tour us_박성호
사뭇 Tour us_박성호사뭇 Tour us_박성호
사뭇 Tour us_박성호
Seongho Park
 
안전Dream365 설명서
안전Dream365 설명서안전Dream365 설명서
안전Dream365 설명서
Seongho Park
 
제46회 전국교육자료전 작품제작 설명서
제46회 전국교육자료전 작품제작 설명서제46회 전국교육자료전 작품제작 설명서
제46회 전국교육자료전 작품제작 설명서
Seongho Park
 
4팀 중간발표
4팀 중간발표4팀 중간발표
4팀 중간발표
Seongho Park
 
4팀 완료발표
4팀 완료발표4팀 완료발표
4팀 완료발표
Seongho Park
 
4팀 시작발표
4팀 시작발표4팀 시작발표
4팀 시작발표
Seongho Park
 
[신청서]설계왕 스터디 추천서
[신청서]설계왕 스터디 추천서[신청서]설계왕 스터디 추천서
[신청서]설계왕 스터디 추천서
Seongho Park
 
[신청서]설계왕 스터디 지원서
[신청서]설계왕 스터디 지원서[신청서]설계왕 스터디 지원서
[신청서]설계왕 스터디 지원서
Seongho Park
 

More from Seongho Park (20)

[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서
[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서
[11조 co ap-iot]sw연합프로젝트-2015f-결과보고서
 
2015 hi first 스터디 최종보고서
2015 hi first 스터디 최종보고서2015 hi first 스터디 최종보고서
2015 hi first 스터디 최종보고서
 
Unreal engine 1차 발표 150507
Unreal engine 1차 발표   150507Unreal engine 1차 발표   150507
Unreal engine 1차 발표 150507
 
버니니 책이있는 어디든 도서관 최종 발표
버니니   책이있는 어디든 도서관 최종 발표버니니   책이있는 어디든 도서관 최종 발표
버니니 책이있는 어디든 도서관 최종 발표
 
버니니 책이있는 어디든 도서관 시작 발표
버니니   책이있는 어디든 도서관 시작 발표버니니   책이있는 어디든 도서관 시작 발표
버니니 책이있는 어디든 도서관 시작 발표
 
버니니 책이있는 어디든 도서관 세번째 이터레이션 계획
버니니   책이있는 어디든 도서관 세번째 이터레이션 계획버니니   책이있는 어디든 도서관 세번째 이터레이션 계획
버니니 책이있는 어디든 도서관 세번째 이터레이션 계획
 
버니니 책이있는 어디든 도서관 세번째 발표
버니니   책이있는 어디든 도서관 세번째 발표버니니   책이있는 어디든 도서관 세번째 발표
버니니 책이있는 어디든 도서관 세번째 발표
 
버니니 책이있는 어디든 도서관 두번째 이터레이션 계획
버니니   책이있는 어디든 도서관 두번째 이터레이션 계획버니니   책이있는 어디든 도서관 두번째 이터레이션 계획
버니니 책이있는 어디든 도서관 두번째 이터레이션 계획
 
버니니 책이있는 어디든 도서관 두번째 발표
버니니   책이있는 어디든 도서관 두번째 발표버니니   책이있는 어디든 도서관 두번째 발표
버니니 책이있는 어디든 도서관 두번째 발표
 
Windows Server Groupware & Network
Windows Server Groupware & NetworkWindows Server Groupware & Network
Windows Server Groupware & Network
 
K-Hackathon_청춘내일_발표자료
K-Hackathon_청춘내일_발표자료K-Hackathon_청춘내일_발표자료
K-Hackathon_청춘내일_발표자료
 
Unreal engine 1차 발표 150507
Unreal engine 1차 발표   150507Unreal engine 1차 발표   150507
Unreal engine 1차 발표 150507
 
사뭇 Tour us_박성호
사뭇 Tour us_박성호사뭇 Tour us_박성호
사뭇 Tour us_박성호
 
안전Dream365 설명서
안전Dream365 설명서안전Dream365 설명서
안전Dream365 설명서
 
제46회 전국교육자료전 작품제작 설명서
제46회 전국교육자료전 작품제작 설명서제46회 전국교육자료전 작품제작 설명서
제46회 전국교육자료전 작품제작 설명서
 
4팀 중간발표
4팀 중간발표4팀 중간발표
4팀 중간발표
 
4팀 완료발표
4팀 완료발표4팀 완료발표
4팀 완료발표
 
4팀 시작발표
4팀 시작발표4팀 시작발표
4팀 시작발표
 
[신청서]설계왕 스터디 추천서
[신청서]설계왕 스터디 추천서[신청서]설계왕 스터디 추천서
[신청서]설계왕 스터디 추천서
 
[신청서]설계왕 스터디 지원서
[신청서]설계왕 스터디 지원서[신청서]설계왕 스터디 지원서
[신청서]설계왕 스터디 지원서
 

[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습

  • 1. 1 / 16 IA-32레지스터 분석 및 abex’ crackme를 통한 파라미터 전달 실습 25-1 박성호 리버싱 #2
  • 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. 3 / 16 Register? _ Definition
  • 4. 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. 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. 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. 7 / 16 Register? _ IA32 CPU Architecture
  • 8. 8 / 16 Register? _ 범용 Register
  • 9. 9 / 16 메모리 구조 소개
  • 10. 10 / 16 메모리 구조 소개
  • 11. 11 / 16  Stack _ 스택이란 역할 1. 로컬 변수 임시 저장. 2. 함수 호출 시 파라미터 전달 3. 리턴 어드레스 저장 스택이 높은 주소에서부터 쌓이는 이유
  • 12. 12 / 16 Stack _ 스택에 사용되는 ESP, Stack Frame, RET, EBP, FP, SFP 레지스터
  • 13. 13 / 16 Stack _ 스택에 사용되는 ESP, Stack Frame, RET, EBP, FP, SFP 레지스터
  • 14. 14 / 16 실습소개 실습목표 : Disassem Code의 Debuging 연습 내용 : CD-ROM을 요구하는 프로그램이 있을 때, HDD 를 CD-Rom으로 크랙시켜 통과 메시지를 출력시키도록 함. 응용기술 : Stack에 파라미터를 전달하는 과정을 이해하여 크랙화 Stack의 FIFO 구조의 이해 사용되는 명령 : PUSH, CALL, INC, DEC, JMP, CMP, JE
  • 15. 15 / 16 실
  • 16. 16 / 16 Q & A