본문 바로가기

취약점 분석/windbg

windbg 포인터 참조하기

반응형

WinDBG 포인터 참조하기


70634b48이라는 메모리 주소에 6e26a330이라는 값이 담겨있습니다.


call dword ptr [eax+0Ch] 처럼 어셈블리 명령어에서는 내부의 값을 참조한다는 의미로 [] 대괄호가 사용됩니다.

하지만 이를 그대로 메모리창 (Alt+5)에서 확인하려고 똑같이 대괄호를 쓰면 원하는 값이 나오지 않습니다.



어셈블리 명령어 그대로 [eax+0ch]를 입력해보겠습니다.

그림에서 보듯이 eax+0ch 와 [eax+0ch] 출력 시 값이 같게 나옵니다. 메모리창에서도 마찬가지구요.

어셈블리에서 쓰이는 값참조의 의미가 아닌 수식을 위한 괄호로 인식하기 때문입니다.


보다 정확하게 보자면 덧셈과 곱셈 연산에 괄호유무에 따라 값이 바뀌는 걸 확인할 수 있습니다.



어셈블리 명령어의 대괄호를 메모리창에서는 어떻게 사용해야할까요?

주소 안의 값을 참조하려면 poi() 함수를 사용하면 됩니다.

c언어 포인터에서  *(변수) 이렇게 값을 참조했던 것을 떠올려봅시다. 



  트레이싱 하다가 [ [[[edi+10h]+4]+esi*4] + 2ch ]와 같이 복잡한 참조를 해야할 때, 일일이 값을 바꿔넣지 말고 poi() 함수를 사용합시다.

반응형

'취약점 분석 > windbg' 카테고리의 다른 글

Mutex 뮤텍스 API 함수 정리  (0) 2019.02.23
(임계영역) CriticalSection API 함수 정리  (0) 2019.02.23
Trace 명령어  (0) 2018.09.03
Windbg LFH 동작시킨 상태로 디버깅하는 방법  (0) 2018.07.19
힙 디버깅  (0) 2018.05.09