본문 바로가기
반응형

[보안 Archive] ~2017/리버싱 핵심 원리4

[2주] 7장- 스택 프레임 리버싱 핵심 원리 [2주] 7장 - 스택 프레임 스택 프레임 : ESP가 아닌 EBP(베이스 포인터)를 사용하여 스택 내의 로컬변수, 파라미커, 복귀 주소에 접근하는 기법. EBP 레지스터의 베이스 포인터 역할: ESP값은 프로그램 안에서 수시로 변경된다. 그래서 스택에 저장된 변수, 파라미터에 접근하고자 할 때 ESP 값을 기준으로 하면 프로그램을 만들기 힘들고, CPU가 정확한 위치를 참고할 때 어려움이 있다. 따라서 어떤 기준 시점(함수의 시작)의 ESP값을 EBP에 저장하고 이를 함수에서 유지하면 ESP값이 아무리 변해도 EBP를 기준으로 안전하게 해달 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있다. 스택 프레임 구조 스택 프레임을 잘 이해하기 위해 책에 있는 실습을 해보도록 한다. 어셈블.. 2015. 3. 16.
[1주] 5장~6장 - 스택 & abex crackme #1 리버싱 핵심 원리 [1주] 5장 - 스택 프로세스에서 스택 메모리의 역할 : 1. 로컬 변수 임시 저장2. 함수 호출 시 파라미터 전달3. return address 저장 FILO(First In Last Out) 구조를 가지고 있다 스택의 특징 * 스택 포인터(ESP)의 초기값은 Stack Bottom쪽에 가깝다.* 높은 주소에서 낮은 주소 방향으로 자란다.* PUSH하면 스택 포인터는 아래(Stack Bottom쪽)에서 위(Stack Top쪽)로 쌓인다. POP하면 스택 포인터는 아래쪽으로 움직인다. 즉, 스택에 값을 입력하면 스택 포인터(ESP)는 감소하고, 스택에서 값을 꺼내면 스택 포인터는 증가한다. 6장 - abex' crackme #1 분석 간단한 crackme 샘플을 분석한다. 먼저, 파일.. 2015. 3. 9.
[1주] 3장~4장 - 리틀엔디언, IA-32 레지스터 리버싱 핵심 원리 [1주] 3장 - 리틀 엔디언 표기법 바이트 오더링(Byte Ordering)은 데이터를 저장하는 방식.크게 2가지 방식이 있다 : 1. 빅 엔디언(Big Endian)2. 리틀 엔디런(Little Endian) 어떻게 다른지 보자 1바이트의 자료형을 저장할떄는 차이가 없다. 자료형의 크기가 2바이트 이상이면 차이가 난다. 빅 엔디언 리틀 엔디언 데이터를 저장할 때 앞에서부터 순차적으로 저장 한다. 저장되는 바이트의 순서가 뒤집혀 있다. RISC 계열의 CPU에서 사용됨. 네트워크 프롵콜에서 사용됨. Intel x86 CPU에서 사용됨. 장점 : 사람이 보기에 직관적이다 장점 : 산술 연산과 데이터의 타입이 확장/축소될 때 더 효율적이다. ※ str 문자열은 엔디언 형식과 상관없이 동일.. 2015. 3. 9.
[1주] 1장~2장 리버싱 핵심 원리 [1주] 1장 - 리버싱 스토리 (1장은 디테일한 정리는 skip하겠다) * 리버스 엔지니어링이란?* 분석 방법-정적 분석-동적 분석* Source Code, Hex Code, Assembly Code* 패치와 크랙 2장 - Hello World! 리버싱 2장에서는 HelloWorld.exe를 실행 했을때 팝업에 나타나는 "Hello World!" 문자열을 "Hello Reversing!" 이라고 바꾸는 실습을 한다. (OllyDbg 이용) 실습을 하기 전에 알아야 하는 부분 : 출력되는 문자열을 바꾸기 위해서 먼저 main 함수를 찾아야한다. ※ 원본 소스코드에서 사용된적 없는 API들이 호출되면 main() 함수가 아니라는것을 알수있다. 예를 들어 Hello world! 팝업이 뜨는.. 2015. 3. 9.
반응형