kernel32.dll 주소값 찾기
※ TEB
현재 실행중인 쓰래드에 대한 정보를 담고 있는 구조체
※ PEB
현재 실행중인 프로세스에 대한 정보를 담고 있는 구조체
windbg 를 이용해 ie 를 열었습니다. 해당으로 kernel32.dll 을 찾아보도록 하겠습니다.
(주소 값은 pc 환경이나 실행동작 등으로 다르게 나오실 거라 제 사진이랑 같지 않습니다.)
TEB (Thread Environment Block)
windbg 를 명령어 !teb 를 통해 TEB 정보를 한번 확인 하였습니다.
TEB 주소 값이 0324f000 인 것을 확인 할 수 있습니다.
dt 명령어를 통해 이제 메모리 값을 확인 해 보도록 하겠습니다.
+0x30 란을 보시면 ProcessEnvironmentBlock 탭에 PEB 주소 값이 표시되어 있는 것을 확인 할 수 있습니다.
이제 PEB 주소로 넘어가도록 해보겠습니다. (LDR 주소를 찾기 위해서 이죠)
※ LDR (프로세스에 로드된 모듈의 정보를 담고 있는 구조체)
PEB (Process Environment Block)
PEB 의 메모리 내용 밑쪽의 0x00c 에 LDR 주소값이 있는 것을 확인 할 수 있습니다.
지금 0x77d9ab40 이라고 나타나져 있군요.
들어가보도록 하겠습니다.
0x014 탭에 inMemoryOrdrModuleList 가 있는데 그 앞의 주소값 0x36d1d48 - 8 로 들어가 보도록 합니다.
(-8을 해주는 이유는 좀더 공부해서 확실하게 되면 수정하겠습니다. flink 에서 -8 이유가 구조 때문에 그런 것 같은데 확실하게 설명을 못해서..ㅠ)
들어가보면 저희가 실행시킨 파일이 ie 라는 것을 확인 할 수 있었습니다. 또 한번 똑같은 방식으로 들어가 보도록 하겠습니다.
※ ntdll
ntdll.dll의 역활은 유저모드 코드에서 발생하는 시스템 자원에 대한 접근을 커널모드에게 요청하는 역활을 수행함.
ntdll.dll 이 커널모드에게 요청을 한다고 햇습니다. 그럼? 저 주소를 한번더 따라 들어가면??
커널의 주소값을 확인 할 수 가 있습니다. DllBase 인 0x77aa0000 가 해당 주소 값입니다.
(아직 시스템 공부를 시작한지 얼마안되서 설명도 미흡하구 그러네요 저두 아직 확실하게 개념이 박힌것이 아니라 공부하면서 계속 수정해 나가겠습니다.)