디바이스 드라이버 스터디 1일차
- 드라이버 개발 환경 구성
- WinDBG를 이용한 유저모드 디버깅
- WinDBG를 이용한 커널모드 디버깅
- 초 간단 드라이버 제작
요약본 받기
디바이스 드라이버 스터디 1일차
요약본 받기
이것저것 공부하던중에 또 샛길로 빠지는 바람에 여기까지 오게되었습니다.
후킹이라는 말은 예전에 들어봤지만 사실상 간단한 개념만 알고 있었지 제대로 된 부분은 잘 몰랐습니다. 그래서 이번기회에 그나마 여러 글들을 읽고 제가 받아들인 부분을 정리차 한번 써보겠습니다.
일단 간단하게 후킹이라는 말이 무엇을 뜻하는지 알아보겠습니다.
그러니 다시 말하자면 어떤 일을 행하려 할때 원래 수행되던 일이 있지만, 그 부분을 가로채서 새로운 일을 하도록 만드는 일이 바로 "후킹(Hooking)" 이라고 할 수 있겠습니다.
이렇게 설명을 듣다보니 뇌리에 스치는 부분이 있을지 모르겠습니다. 바로 이 후킹이라는 부분을 악용한다면?? 이란생각 말입니다. 물론 그런 부분들로 문제가 야기되고 있으니 우리는 악용하면 안되겠죠?ㅎ
이 후킹에도 2가지 정도 종류로 나눌 수 있습니다.
1. 메시지 후킹(Message Hooking)
2. API 후킹(API Hooking)
처음 말한 메시지 후킹은 Windows의 구동방식을 알면 좀더 쉽게 이해할 수 있습니다.
윈도우는 메시지 구동(Message Driven)방식으로 실행되고 있습니다. 이게 무슨 말이냐 하면 우리가 하는 모든 작업은 메시지를 발생되게 되어있습니다. ex) WM_MOUSEMOVE, WM_KEYDOWN
위와 같이 마우스를 움직일 때, 키를 누를 때 처럼 하나하나의 이벤트의 중심이되어서 윈도우는 실행되게 되어있습니다. 이런 메시들이 발생 되면 메시지 큐(Message Queue)라는 공간에 차곡차곡 쌓이게 되고 앞에서 부터 처리 함수로 보내지게 되는데 그 때, 또는 메시지 큐에 들어오려는 시점에서 중간에 가로채서 특정 작업을 할 수 있겠금 바꾸게 되면 그게 바로 메시지 후킹이라는 방법이 되겠습니다. ex)Enter키를 눌렀는데 ESC효과가 나온다
그렇다면 이제 설명 드릴 API 후킹은 무엇인가 하면 API호출이 일어날 때 그 호출을 가로채는 것입니다.
API호출을 하면 그 해당하는 호출 루틴으로 가지 않고 자신의 지정한 작업을 행하게 하는것입니다.
그럼 이제 본론인 User-Mode와 Kernel-Mode의 API Hooking기법들 소개하겠습니다.
User-Mode Hooking
Kernel-Mode Hooking (루트킷)
우리는 흔히들 겪는 일들 중에 하나가 메모리를 4GB로 업그레이드 하고 기분좋게 확인을 해보면 4GB로 잡히지 않고 3.2GB 아니면 3.4GB정도로 만족할만한 용량으로 잡히지 않는 경우가 대부분일 것입니다.
이런 부분에 있어서 보통 Windows XP가 32Bit 운영체제 이기때문에 참조 할 수 있는 주소가 32Bit이기 때문이라고 합니다. 사실상 32Bit이면 4GB까지 지원가능합니다.
이부분에 대해서 정리된 내용이 있어서 이렇게 링크를 걸어 봅니다.
이제부터 이 카테고리의 내용은 모두 디바이스드라이버(DeviceDriver)라는 내용으로 채워질 것이며, 채워 나갈것이다. 그 내용의 양과 질은 전적으로 나의 몫이니 ...
내 나이 24세, 군 제대 후 현재 3학년,
1학년 때의 과거를 회상해 본다.
난 디바이스드라이버라는 말을 대학와서 처음들어보게 되었다.
그게 그럴 수 밖에 없는게 우리 서울산업대학교 컴퓨터 공학과 내 EnlessCreation(이하EC)라는 동아리는 디바이스드라이버라는 분야에서 내놓으라는 분들이 계셨던 곳이라서 간간히 접할수 있었던 것이다.
하지만 그 이제 막 들어온 신입생들이 무슨 내용인줄 알아겠나, 그냥 우와~ 라는 생각만 가졌던것 같다.
그렇게 학교생활은 그저 학교 커리큘럼 흐름에만 묻혀서 다니다보니 지금의 여기까지 오게 되었다.
지난 3년 동안을 뒤돌아 보면 정말 나는 그야 말로 "뭐 한게 없다"라는 말이 딱 맞는것 같다.
그냥 그냥 학교 과목만 듣고 하루하루 허비했다는 생각에 현재 나는 몹쓸 자책감에 빠져있다.
사실 현재에 있는 어플리케이션을 만드는 부분에 있어서는 그다지 흥미가 생기지는 않는다. 그렇다고해서 내가 하고 싶은대로 다 만들수 있는 실력에는 근처도 가지도 못하고 있고, 노력 또한 별로 하지 않았다. 예전때에 그런 느낌이 없었다.그러는 과정에서 신입생 때 들었었던 DeviceDriver, SystemProgramming, Low-Level part등에 대한 관심이 조금씩 싹트기 시작했다. 하지만 그 기초라고 생각되는 내용에 접근하려 하니 그다지 쉽게 나에게 문을 열어주지 않는듯 보인다. 그런 부분이 또다시 나를 움직이게 하는 원동력이 될거라는 생각이 들었다.
그 과정에서 역시나 내 동기들도 같은 부분에 관심을 가지고 있어서 가는길이 외롭지는 않을듯 보인다.
또한 유능하신 선배님들이 많으셔서 더욱더 힘이 난다.
어제부터 5주간 5번의 DeviceDriver특강을 EC 9기 최정현 선배님이 고생해주시기로 해서 천군만마를 얻은듯하여 매우 기뻤다. 정말 이제부터 시작인듯 보인다. ! 열심히 해야지
혹시라도 관심을 가지시고 접해보시려고 하시는 분들이 있다면 현재 특강(스터디) 진행 사항을 구글그룹에 올려놓고 있으니 참고 하시기 바랍니다.
[출처] [본문스크랩] 레지스터|작성자 엑스타입
아...
오늘 친구녀석이 노트북 쿨러랍시고 가져온 "크라디아 플랙스 mini"
생각보다 크기는 컸지만, 다양한 기능으로 약간의 지름신 압박을 당하고 있습니다.
제 생각에는 쿨러의 역할은 무난할듯 보이고, 또한 거취대의 기능, USB포트 확장의 기능까지 그 부가적인 부분이 더 끌린다고 할수 있습니다.
하지만 가격이 생각보다 3만원이라는 부분이 약간의 NG 인듯 합니다.
혹시라도 관심있으신 분이라면 이쪽에서 자세한 그림과 함께 정보를 얻으시면 됩니다.
"크라디아 플랙스 mini" 쿨럭 보러가기
간단한 제 친구녀석의 사용기 보러가기
우연찮게 갱주니님의 블로그에서 흥미 있는 글이 있어서 읽어보게 되었습니다.
간략한 내용은 예전에 8086에서부터 서서히 발전해서 펜티엄이라는이름을 가지기까지, 또한 싱글코어라는 부분에서 이제는 듀얼코어,쿼드코어 등 멀티코어의 시대로 도래함에 있어서의 내용입니다.
그 안에서 코어의 스피드클럭(hz, Mhz, Ghz)이라는 부분으로 컴퓨터의 성능을 저울질 해왔지만 요새들어서는 오히려 몇 Ghz라는 말보다는 싱글? 또는 듀얼, 쿼드? 라는 말로써 컴퓨터의 성능이 표현되고 있는것 같습니다.
이런 말들에 대해서 왜 그렇게 갈수 밖에 없고 그렇게 가게 된다면(병렬프로세서형식) 우리 프로그래머들이 해나가야 하는 그에 합당한 행동태세는 어떤것인지에 대해서 설명해주고 있었습니다.
그렇게 길지 않은 글이라 생각보다 재미나게 읽었습니다.
워낙 가지고 있는 지식이 없는터라 유익하게 받아들였습니다.
그럼 이 글에 흥미를 가지시는 분들은 읽어보시기 바랍니다.
고고씽! "멀티프로세서 프로그래밍의 시대 개막"