본문 바로가기

정상을향해/OS·Kernel Driver·Rootkit15

윈도우 프로그램의 기본 구조 출처 : API Programming / 이창현 저 - 혜지원 윈도우 프로그램은 기본적으로 WinMain 함수와 WndProc 함수로 구성된다. 이 두 함수는 없어서는 안 될 필수 함수이다. WndProc함수는 이름이 정해져 있는 것이 아니며 사용자 임의대로 바꿀 수 있다. WinMain( ) { 윈도우 클래스 만들기 윈도우 객체 생성하기 윈도우 객체 화면에 띄우기 메시지 루프 돌리기 } WndProc( ) { 전달된 메시지 처리하기 } WinMain 함수는 프로그램의 윈도우 자체를 생성만 하고, 실제 일어나는 윈도우 메시지는 메시지 처리 함수인 WndProc이 처리한다고 생각하면 된다. 다음은 WinMain 함수가 순차적으로 하는 일이다. 윈도우 클래스를 만든다 ( RegisterClass( ) ) ↓.. 2013. 11. 10.
핸들 (Handle) 출처 : http://www.winapi.co.kr 핸들(Handle) 프로그래밍에서의 핸들이란, 일종의 토큰으로, 프로그램이 라이브러리 함수 등과 같은 자원을 엑세스 할 수 있게 하는 일종의 포인터이다. 이는 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32bit 정수값이다. 도스 프로그래밍에서는 거의 유일하게 파일 핸들만이 사용되었다. 그래서 도스에서의 핸들은 곧 파일 핸들을 의미하는 경우가 많았다. 하지만 윈도우즈에서는 여러가지 종류의 핸들이 사용되고 있다. 만들어진 윈도우에는 '윈도우 핸들(hWnd)'을 붙여 윈도우를 번호로 관리하며, DC에 대해서도 핸들을 사용하고 논리적 펜, 브러시에도 핸들을 붙여 관리한다. 심지어 메모리를 할당할 때도 할당한 메모리의 번지를 취급하기 보다는 메모리에 번.. 2013. 11. 10.
WinMain 코드 분석 출처 : http://www.winapi.co.kr 윈도우 만드는 과정 #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); // 두 번째 함수 원형. (주의깊게 봐야 할 함수) // 전역 변수 선언 HINSTANCE g_hInst; LPSTR lpszClass="First"; // 이 문자열은 윈도우 클래스를 정의하는데 사용된다. // 첫 번째 함수 : WinMain의 모양은 대체로 일정 int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hI.. 2013. 11. 10.