디씨가 망했나... 리플도 안달리고... 글은 써질려나..
일단 그 코드의 문제점은
*(unsigned int*)(zwq+1) = (unsigned int)NewNtOpenProcess - (unsigned int)zwq - (unsigned int)15; 이라인이 병신이고...
15 를 빼는게 아니고, 5를 빼야됨. 점프 명령어는 5 바이트 짜리라서, 그거 5개 수행 후에 점프할 곳이기 때문에 15가 아니고, 5...
그리고 커널 드라이버 만들면서 디버깅을 모르다니 -_-
일단 vmware 깔고, vmware 안에다가 드라이버 설치하고, 안의 os 를 디버깅 부팅시키고...
바깥 리얼 OS 에서 WinDbg 띄워서 커널 디버거 연결해서 디버깅 해봐.
이건 네이버 검색하면 조올라 많이 나오니깐 그냥 따라하면 돼.
그리고 아오 퇴근 후엔 코드 보기가 귀찮아서 대충 대충 봤는데...
일단 디버거 연결해서 코드를 한줄 한줄 따라가보고, 후킹한 부분이 15 가 되었을 때 어디로 뛰는지, 5가 되었을 때 어디로 뛰는지를 보면,
이해가 훨씬 쉬울거임.
이 글은 올라갈려나.. -ㅅ-
아... 그말인가.. 무슨말인가 했네. 후킹을 DriverEntry 에서 한거? WinDbg 에서 브레이크 포인트를 bu 명령어를 써서, bu MyDrv!DriverEntry같이 해주면, 드라이버 로딩 되는 순간에 심벌 로딩하고, 해당 심벌에다가 브레이크 포인트 먼저 심고 DriverEntry 실행하기 땜에 DriverEntry첫 라인부터 트레이싱 할 수 있음
몰라 블루 스크린 뜨는 오류 코드를 봐야 무슨 원인인지 알 수 있지. 그리고 나한테 저런 코드 머리로 돌리게 하지마. 프갤에 와서 까지 일하고싶진 않어 -_-
// XOROX 으엉... SOD... 이건 개그죠? 아까 공대 개그 보고 나선 웃음 포인트 찾기가 힘들어지고 있음.
음~ 더이상 질문 글이 안올라오니.. 난 이만 자러감. ㅂㅂ2~