Build Mode
Debug Mode : 실행파일에 디버깅 정보를 포함하여 언제든지 디버깅이 가능함.
Release Mode 보다 더 큰 메모리를 사용함.
디버그에 필요한 정보들을 실행 시 계속 체크하기 때문에 속도가 느려짐.
Release Mode : 디버그에 필요한 정보가 없고, 코드를 최적화하여 실행파일의 크기를 줄여줌.
초기화를 하지 않으며, 같은 문자열 상수라도 서로 다른 공간에 할당됨.
메모리 사용, 속도 측면에서 디버그 모드보다 좋음.
더 이상 문제점이 없을때 빌드하는걸 추천.
Debugger
EP(Entry Point) : Windows 실행 파일 (EXE, DLL, SYS 등)의 코드 시작점을 의미함.
프로그램이 실행될때 CPU에 의해 가장 먼저 실행되는 코드 시작 위치.
Stub Code : 컴파일러가 프로그램을 만들 때 집어넣는 코드이다.
악성 코드 분석을 빠르게 잘 분석하기 위해서는 Stub Code를 보는 법이 중요하다.
※ Stub Code는 실행 정보를 가져오고 Image Base Address 값을 구하는 등, 프로그램 실행에 필요한 정보를 얻어오는 코드로 구성되어 있다. 때문에 Stub Code는 넘기고 Main 함수 코드를 찾을 줄 알아야 한다.
원하는 코드를 빨리 찾아내는 4가지 방법.
1. 코드 실행 방법 : 프로그램의 기능이 명확한 경우에 명령어를 하나하나 실행하면서 원하는 위치를 찾아가는 방법.
2. 문자열 검색 방법 : 하드코딩 되어있는 문자열을 검색하여 원하는 위치를 찾아가는 방법.
3. API 검색 방법(1) : 호출 코드에 BP : 코드에서 사용된 API를 예상할 수 있을 때 API를 검색하여 찾아가는 방법.
4. API 검색 방법(2) : API 코드에 직접 BP : Packer/Proctector를 사용하면 API를 검색하기 어려워지는데 이런 경우 프로세스 메모리에 로딩된 라이브러리(DLL 코드)에 직접 BP를 건다.
Packer(Run Time Packer) : 실행 압축 유틸리티. 실행 파일의 코드, 데이터, 리소스 등을 압축시킴.
압축된 파일 그 자체도 실행 파일이다.
Protector : 실행 압축 기능 외에 파일과 그 프로세스를 보호하려는 목적으로 Anti-Debugging, Anti-Emulating,
Anti-Dump 등의 기능을 추가한 유틸리티.
Reverse Core 7장 (0) | 2020.01.15 |
---|---|
Reverse Core 5장 (0) | 2020.01.14 |
Reverse Core 4장 (0) | 2020.01.14 |
Reverse Core 3장 (0) | 2020.01.14 |
Reverse Core 1장 (0) | 2020.01.14 |
댓글 영역