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)


 -확인

>재실행해도 메모리 주소는 고정된다.