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