Study/리버싱
Windows] ASLR
Wooum@n
2017. 8. 8. 18:13
1.정의
-Address Space Layout Randomization
-프로그램이 실행될 때마다 로딩되는 메모리 주소값이 달라지는 기술.
>스택, 힙, Dll 모두 적용된다.
>>프로그램 재시작
-Windows Vista(Kernel 6~) 이후부터 지원
2.설정방법
-Visual C++의 /DYNAMICBASE 옵션을 활성화.
>`링커 - 고급 - 임의 기준 주소 - 예(/DYNAMICBASE)
3.특징
-.reloc 섹션이 추가된다.(제거해도 실행에 문제가 되지는 않는다.)
-IMAGE_FILE_HEADER - Characteristics
>IMAGE_FILE_RELOCS_STRIPPED (1) 플래그가 빠져있다.
-Number of Sections가 하나 더 많다.(reloc 섹션 추가로)
-IMAGE_OPTIONAL_HEADER - DLL Characteristics
>IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (40) 플래그가 세팅되어 있다.
4.ASLR 제거
-IMAGE_OPTIONAL_HEADER - DLL Characteristic(File offset: 0x156)
>IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (40) 플래그 제거. (0x8140 -> 0x8100)
-확인
>재실행해도 메모리 주소는 고정된다.