부동산, 채권, 주식, 경제흐름 자료를 모아 보는 블로그입니다.

Process BaseAddress 구하기 본문

Study

Process BaseAddress 구하기

runardor 2017. 6. 2. 00:40

Process Base Address 구하기 ( ASLR 상관없이 구하기 )


Process Memory 패치할때.. ASLR적용시 Base Address가 다를수 있으므로 가끔.. BaseAddress를 동적으로 구해서 사용할 필요가 있음.



사용할 함수는 "NtQueryInformationProcess" 함수를 사용하여 구함


해당 함수는 프로세스의 정보를 뽑아낼수 있는 함수이다.




PEB 구조체 내에서 Reserved3 값은 OS 내에서 사용하는 구조체 맴버로 MSDN에 표시되어 있지 않지만 Process에 BaseAddress를 기록하고 있다.




프로세스 PEB 구조체에 +8 위치를 보게 되면 0x1380000 값을 나타냄을 알 수 있다. 이후 해당 주소에 가서 DATA를 확인하면 아래와 같이 해당 파일의 PEE Image Address임을 알 수 있다.



해당 주소는 ASLR이 적용되기 전에 로드되는 주소인 0x400000주소가 아님을 확인 할 수 있다. Win 7 이상이나 ASLR이 기본적용된 OS에서는 프로세스의 Image Address를 동적으로 얻어야 프로세스내 특정 메모리 영역을 패치 할 수 있다.


아래는 Image Address를 구할 수 있는 Code이며 dwGetBaseAddress 함수의 경우 매개변수로 프로세스 핸들을 주게 되면 프로세스의 Base Address를 리턴해주게 된다.


< Code >




'Study' 카테고리의 다른 글

RSA AES 256  (0) 2017.06.07
RSA 2048 Key 생성  (0) 2017.06.07
Command 실행시 매개변수 잘 써보자! (Power shell)  (0) 2016.12.21
파이프로 매개변수 넘겨주기(Power Shell)  (0) 2016.12.21
Cmdlet(Power Shell)  (0) 2016.12.21
Comments