본문 바로가기

취약점 분석/Pin Tool

Win API) 메모리 값 읽기

반응형

WinAPI로 메모리 값 읽기.



Pin을 이용하여 ReadFile 인자를 전역변수로 잡아두고 After에서 읽은 결과를 뽑아내고자 한다.

포인터 변수에 메모리 주소를 담았는데 *를 하나 더 붙이니 에러가 난다.


이럴 경우 윈도우 API 함수인 ReadProcessMemory() 함수를 쓰면 된다.

프로세스 핸들이야 GetCurrentProcess() 함수로 받아오면 되고, 나머지는 선언해서 인자로 주면 된다.


PIN_LockClient();

WINDOWS::BYTE *tmp_buffer = new WINDOWS::BYTE[tmp_size];


//ReadFile 결과 버퍼 내용을 읽어들임.

WINDOWS::HANDLE cprocess = WINDOWS::GetCurrentProcess();

TraceFile << "ReadProcessMemory success? " << WINDOWS::ReadProcessMemory(cprocess, WINDOWS::LPCVOID(*tmp), tmp_buffer, tmp_size, 0) << endl;

PIN_UnlockClient();


좋아!


+) 핀툴에서 지원하는 API인 LEVEL_CORE::MEMORY_ReadInt32(*tmp)도 유용하다.

다른 인자 필요없이 메모리 주소만 인자로 주면 되므로 :)

반응형