반응형
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)도 유용하다.
다른 인자 필요없이 메모리 주소만 인자로 주면 되므로 :)
반응형
'취약점 분석 > Pin Tool' 카테고리의 다른 글
메모리 값을 Hex 문자열로 출력하기 (0) | 2018.12.24 |
---|---|
명령어 주소를 이미지이름+나머지로 나타내기 (0) | 2018.12.06 |