지금 생각한게, 머 컴퓨터로 한글이나 파워포인트 등 작업한다음 저장하잖아? 그러면 그걸 해당 컴퓨터에 저장하는게 아니라
하나의 메인서버로 전부다 전송하는거야. 그리고 개개인이 작업한 컴퓨터에는 다 자료가 안남아 있도록..
그래서 생각해본게, DLL인젝션으로 전역후킹을해서 CreateFile, WriteFile을 후킹했어.
그런다음 메모장을 실행시킨다음(인젝션된 상태) 내용 입력후에 다른이름으로 저장하기 하면 다음과 같은 함수호출을 하더라구..(DLL안에서 콘솔생성하는 함수를 넣어놓음..)
그런데 문제가, CreateFile을 없던 파일을 생성하려고 호출한건지, 아니면 읽으려고 한건지에 대한 부분은 CreateFile호출전에 CreateFile하려는 파일이 존재하는지 먼저 검사해서 생성하려는 거구나 라는걸 알 수 있엇는데.. 없는 파일인데도 스샷과 같이 미친듯이 생성하는 경우도 있더라고..(거북이 svn깔앗더니 메모장에서 저장하는 동작 하나로도저럼..)
한마디로 사용자가 저장하려는 진짜파일을 구분할 수 있는 좋은 방법이 있을까..?
생각해본게, CreateFile하는순간의 리턴되는 핸들을 리스트에 넣어서 기억해놧다가, CloseHandle 할때 리스트에서 지워지도록 만들고,
WriteFile함수가 호출되는놈만 필요한 파일로 보려고 햇는데, 메모장만 봐도 일단 파일 생성한다음 CloseHandle하고, 다시 열어서 WriteFile 하더라고.. 크...
아니면 특정 확장자만 저장되고 나머지는 전부다 drop시키는 방법도 쓸만할까? 예를 들어 자주쓰는 .txt .ppt .pptx .doc 같은것만 전송시키고 나머지는 컴퓨터에 저장조차 안되게 전부 drop... 근데 또 이건 문제가 생길거 같아서,,
니 얘기대로 WriteFile 작업을 해서 dirty 플래그가 true인놈만 , 서버로 전송하면 되는거 아닌가?
메모장의 경우 CreateFile -> 관리리스트에 추가 -> CloseHandle -> dirty 플래그가 false 임으로 서버에 전송하지 않음, 관리리스트에서 삭제 -> 같은 파일에 대해 다시 CreateFile -> 관리리스트에 추가 -> WriteFile -> dirty flag = true -> CloseHanlde -> dirty flag가 true임으로 서버에 전송, 관리리스트에서 삭제
ㄴ 처럼하면, 어떤게 문제가 된다는건지..질문이 이해가 안가
CloseHandle 햇을때 리스트에서 지워주는 작업을 하는데, 메모장은 일단 파일만 생성한후에 바로 CloseHandle 하더라구..
그다음 다시한번 해당파일을 열어서 WriteFile을 하는데, 그렇게 되면 이미 리스트에서 지워진 핸들이라서 구분이 어렵더라구..
CreateFile -> 신규파일이라면 dirtyflag = 1 -> 아무것도 안하고 CloseHandle -> dirty flag가 1임으로 0바이트 write인 상태로 서버에 전송,즉 신규파일생성.
ㄴ 무조건 이러면...실제 메모장에서 아무것도 적지않고 그냥 종료한경우에도, 서버에는 신규파일이 생성되서 문제가 된단 얘끼지?
한번 형말대로 해볼게.. 아.. CreateFile 이거 기능이 너무 많아서 골치아픈거같아.. 디바이스 드라이버 접근할때도 사용하고.. 파이프통신 할때도 사용하고.. 파일 읽을때도 사용하고.. 만들때도 사용하고.. 너무 기능이 많네 ..
내 생각에는, 후킹보단, 파일 시스템 드라이버를 만드는게 더 나을거 같은데..
아, 신입때 졸 간단한 필터드라이버 깔짝한정도라..(파일숨기는거), 잘알고 얘기하는건 아니야.
아아, 초반에 드라이버로 하려고 드라이버 스터디하다가, 도저히 시간내에는 못만들겟다해서 주제를 급하게 변경한거야 ㅠ
원래 NDIS 드라이버 제작해서 간단한 방화벽을 만드려고 햇는데 무산됫어..
헐..NDIS 는..어렵고, 그나마 파일드라이버는 훨씬 간단하고, 참고소스도 많아서 , 후킹으로 꼬아서 구현하는것보다, 오히려 더 쉬울지도 몰라.
국내서적 윈도우 드라이버 구조와 원리에도 니가 했던거와 유사한 작업 풀소스가 제공되었던거 같고(기억이 가물가물..) .. 거진 7,8년전에 참고해서 본거라..요즘에도 책이 나오는지는 모르겠으나, 소스는 구할수 있을거야.
요즘나오는 책이나 자료들도 찾아보면 쉽게 구할수 있을거 같은데, 난 주구장창 SI노가다만하다보니...요즘 어떤자료가 볼만한지 잘 모르겠다
와 좋네 찾아볼게 형
헉..미안 , 그책이 아니다. 디바이스 드라이버 구조와 원리 그리고 제작 노하우
: 고급 개발자들만이 알고 있던 네. 오래되서 기억이 가물가물..
http://www.yes24.com/24/goods/1439564#contentsConstitution
절판된 책이네.. 드라이버책 구하기가 정말 힘들던데.. 다들 추천하는책은 전부 절판..