DLL 인젝션 후 API 후킹시 GlobalAlloc 사용시 주의점
·
개발/연구
얼마전부터 mp3 저장하는 뻘짓 유틸리티를 만들기 위해 모 사이트에서 WSASend, WSARecv 함수를 후킹하여 좋아하는 mp3 파일을 수집하고 있었습니다. 그런데 잘 동작하다가 인터넷익스플로러가 종종 잘못된 연산으로 종료되더군요. 지금까지 써왔던 api hook 코드가 잘못되었나 싶어 어셈코드부터 다 뜯어보았습니다. 그래도 원인을 알 수 없더군요. 할 수 없이 기존의 쓰던 훅코드를 지우고 Microsoft Research 에서 배포하는 Detours 를 통해 훅을 해서 테스트 하였습니다. 그랬더니 역시나 익스플로러가 종료되더군요. 사실 어셈이나 인젝션한 DLL 에서 잘못되었다면 익셉션 직전의 콜스택이 저렇게 되면 안되는 것인데.. 머.. 어쨋든 Detours에서도 같은 증상을 나타내니 코드를 하니씩..