DLL인젝션을 통한 API함수 후킹
http://www.reversecore.com/ 에서 공부한 내용으로 만들어본것. CreateFile, WriteFile을 후킹하여서 해당 DLL이 인젝션된 프로세스에서 CreateFile이나 WriteFile함수가 호출되면 중간에 인수(lpFileName과 lpBuffer)를 가로체는 프로그램을 만들어 보았다. 또, 인젝션된 프로세스에서 CreateProcess같은 함수를 이용하여, 자식 프로세스를 생성하여도 자동으로 그 프로세스에도 DLL을 인젝션 하도록 ZwResumeThread() 함수를 후킹했다. (CreateProcess는 내부적으로 ZwResumeThread를 호출한다.)
메모장을 실행시킨후에 내가 만든 DLL을 메모장에 인젝션 시키면 다음과 같은 콘솔창이 뜬다. 그후에 메모장에 아무거나 입력후에 다른이름으로 저장을 하면 다음과 같은내용이 콘솔창에 기록된다.
다른이름으로 저장을 누르는 순간 \pipe\~어쩌구~로 엄청나게 많이 CreateFileW가 호출되는걸 알 수 있는데, SVN을 설치햇엇는데 걔랑 관련이 있는거 같앗다.. 또 내가 다른이름으로 저장하니, 테스트저장 ㅋㅋ.txt 라는 파일이 두번 CreateFileW에서 쓰인다. 아마도 첫번째에서 파일을 생성한다음 핸들을 닫고, 메모장의 내용을 기록할때 다시한번 오픈한다음 기록하는것 같다. 이 방법을 잘 이용해서 윈도우에서 저장되는 모든 파일을 서버로 전송되게 하는 방법을 생각하고 있다.
안녕하세요!
리버스엔진을 공부하고 이쪽으로 논문을 작성하고 있는 대학생입니다.
이번에 논문 주제를 후킹을 사용한 문서 보안으로 잡았는데, 후킹이 사실상 자료는 많지만 초심자를 위한 자료가 많지는 않더라구요.
그래서 리버스코어 책자를 사서 공부 하고 있는데, 이해가 좀 어렵네요...
다름이 아니라 지금 작성하신 예제 소스좀 얻을 수 있을까 해서 코맨트 남깁니다!
------@-----.com 으로 연락 부탁드리겠습니다 ^^