ASLR
- PE 파일이 "메모리에 로딩될 때" 로딩 시작 주소 값을 랜덤하게 바꾼다
* RVA of EP=0x12AE이고, EXE 파일의 ImageBase는 0x00400000이므로 EP=4012AE이다.
* ASLR이 적용되면 "빌드 시마다" EXE 파일의 ImageBase 값이 달라진다
- 해당 프로세스의 스택/힙 시작 주소도 "실행될 때마다" 랜덤하게 바뀐다
* ASLR_no.exe의 경우 스택 주소 일정. ASLR.exe의 경우 실행 시마다 스택 주소 달라짐
ASLR 세팅 in visual C++
ASLR 적용 / 미적용 차이
1) .reloc 섹션 존재여부, IMAGE_FILE_HEADER.Characteristics
- ASLR_no.exe에는 .reloc 섹션이 존재하지 않으므로
- IMAGE_FILE_HEADER의 Number of Setcions 값이 1 작고
- IMAGE_FILE_HEADER의 Characteristics에 IMAGE_FILE_RELOCS_STRIPPED(1) 플래그가 추가된다
2) IMAGE_OPTIONAL_HEADER의 DLL Characteristics
- ASLR.exe의 경우 IMAGE_OPTIONAL_HEADER의 DLL Characteristics 값에
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 값(0x40)이 세팅되어 있다.
=> IMAGE_OPTIONAL_HEADER.DLL Characteristics 의 0x40 플래그를 없애면 ASLR 기능 비활성화!!
=> 분석하고자 하는 파일의 ASLR 기능을 잠시 제거한 후 디버깅하면 원활한 분석 가능
'security > 리버싱핵심원리' 카테고리의 다른 글
TLS 콜백 함수 (0) | 2023.04.05 |
---|---|
CreateRemoteThread()를 이용한 DLL Injetcion의 한계 (0) | 2023.04.04 |
API 코드 패치를 이용한 API hooking - notepad.exe 프로세스 은폐하기 (2) (0) | 2023.04.03 |
API 코드 패치를 이용한 API hooking - notepad.exe 프로세스 은폐하기 (1) (0) | 2023.04.01 |
[API 후킹] IAT 조작을 이용한 메모장 암호화/복호화 (완) (0) | 2023.04.01 |