본문 바로가기

Study/리버싱14

PE Structure (1) PE 포맷 참고 사이트 : - [위키백과] PE 포맷- [위키백과] 가상 주소 - [누구나가 다 이해할 수 있는 프로그래밍 첫걸음] 리버스 엔지니어링 스터디 1편. PE(Portable Executable) 구조- [A Kind of Magic] 링크(Linkers) 와 로더(Loaders) PE 포맷PE 포맷 (Portable Executable)은 윈도우 운영 체제에서 사용되는 실행 파일, DLL, object 코드, FON 폰트 파일 등을 위한 파일 형식이다. "Portable"의 단어 뜻 그대로 의식성이 있으며 플랫폼에 독립적이다. PE 포맷은 윈도우 로더가 실행 가능한 코드를 관리하는 데 필요한 정보를 캡슐화한 데이터 구조체이다. 이것은 링킹을 위한 동적 라이브러리 참조, API 익스포트와 임포트 테이블,.. 2016. 6. 19.
Stack 참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기] 저자 : 이승원출판사 : 인사이트 참고 사이트 :- [위키백과] 스택 Stack스택(Stack)은 제힌적으로 접근할 수 있는 나열 구조다. 접근 방법은 언제나 목록의 끝에서만 일어난다. 즉, 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조 (LIFO, Last In First Out)으로 되어 있다. 자료를 넣는 것을 푸시(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 한다. 이 때 가장 최근에 보관한 자료부터 나오게 된다. 프로세스에서 스택 메모리의 역할은 아래와 같다. 1. 함수 내의 로컬 변수 임시 저장2. 함수 호출 시 파라미터 전달3. 복귀 주소 (return address) 저장 이와 같은 역.. 2016. 6. 12.
Register 참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기] 저자 : 이승원출판사 : 인사이트 참고 문헌 : [리버싱 기초]저자 : 심준보작성 날짜 : 2014-01-07 참고 사이트 :- [위키백과] IA-32- [위키백과] 하드웨어 레지스터- [위키백과] 프로세스 레지스터- [영성이 블로그] 레지스터 종류와 특징- [정리를 위한!] 범용 레지스터 (General Register)- [Rude's Factory] [어셈블리] 세그먼트(segment)란?- [MY STORY] 레지스터 정리 디버깅을 잘 하려면 디버거가 해석 (디스어셈)해주는 어셈블리 명령어를 공부해야 한다. 어셈블리 명령어의 대부분은 레지스터를 조작하고 그 내용을 검사하는 것들이기 때문이다. 데이터 단위(1) BIT데이터를 표.. 2016. 6. 8.
Endianness 참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기] 저자 : 이승원출판사 : 인사이트 참고 사이트 : - [위키 백과] 엔디언 Endianness엔디언 (Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻한다. 바이트를 배열하는 방법을 특히 바이트 순서(Byte Order)라 한다. 엔디언은 보통 큰 단위가 앞에 나오는 빅 엔디언(Big-Endian)과 작은 단위가 앞에 나오는 리틀 엔디언(Little-Endian)으로 나눌 수 있다. 두 경우에 속하지 않거나 둘을 모두 지원하는 것을 미들 엔디언(Middle-Endian)이라 부르기도 한다. Byte Order바이트 순서는 크게 빅 엔디언과 리틀 엔디언으로 나눌 수 있다. 빅 엔.. 2016. 6. 8.
Stub Code 참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기] 저자 : 이승원출판사 : 인사이트 침고 사이트 : - [위키백과] 메소드 스텁- [SecurityFactory] [개념 이해] Stub 코드- [SecurityFactory] [PE File] Compiler에 따른 실행파일 분석 방법 OllyDbg를 통해 디버깅을 하다보면 Stub Code가 섞여 있는 것을 알 수 있다. Visual C++, Delphi 등의 개발툴로 제작된 실행 파일들은 대개 이와 같은 형식으로 이루어져 있다. 따라서 이런 Stub Code를 눈에 잘 익혀 두면 항후 디버깅할 때 이런 부분은 빨리 건너뛸 수 있다. 또한 Stub Code는 개발도구에 따라 달라지며, 각개발도구끼리도 버전에 따라 달라진다. 따라서 .. 2016. 6. 8.