1. WinMain함수


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)

- hInstance : 프로그램의 인스턴스 핸들

- hPrevInstance : 바로 앞에 실행된 현재 프로그램의 인스턴스 핸들

없는 경우에는 NULL이 되어야하며 Win32에서는 항상 NULL

- lpCmdLine : 명령행으로 입력된 프로그램 인수. DOS의 argv에 해당

- nCmdShow : 프로그램이 실행될 형태 / 최소화, 보통모양 등이 전달




2. 윈도우 클래스

윈도우 클래스는 windows.h에 정의되어있는 구조체이다.


typedef struct tagWNDCLASS

{

    UINT        style;

    WNDPROC     lpfnWndProc;

    int         cbClsExtra;

    int         cbWndExtra;

    HINSTANCE   hInstance;

    HICON       hIcon;

    HCURSOR     hCursor;

    HBRUSH      hbrBackground;

    LPCSTR      lpszMenuName;

    LPCSTR      lpszClassName;

} WNDCLASS;


- style : 윈도우의 스타일을 정의

- lpfnWndProc : 메시지가 발생할 때마다 여기에 지정된 함수가 호출됨

- cbClsExtra, cbWndExtra : 윈도우가 내부적으로 아주 특수한 목적에 사용되는 공간. 사용되지 않으면 0으로 지정

- hInstance : 윈도우의 클래스를 사용하는 프로그램의 번호

- hIcon, hCursor : 윈도우가 사용할 마우스와 출력되는 아이콘을 정함.

- hbrBackground : 윈도우의 배경색상 정의, 보통 GetStockObject라는 함수를 사용하여 윈도우에서 기본적으로 제공하는 브러쉬를 사용

- lpszMenuName : 프로그램이 사용할 메뉴 지정

- lpszClassName : 윈도우 클래스의 이름을 정의. CreateWindow함수에 전달되며 

CreateWindow함수는 윈도우 클래스에서 정의한 값을 참조하여 윈도우를 생성한다

'Programming > WinAPI' 카테고리의 다른 글

악성코드에 자주 사용되는 함수목록  (0) 2017.03.04
[API함수] WaitForSingleObject  (0) 2017.03.02
WinAPI 핸들에 대한 이해  (0) 2017.02.08
API란?  (0) 2017.02.08
WinAPI 윈도우의 특징  (0) 2017.02.08

1. 핸들(Handle)이란?

- 32비트 정수값을 가짐

- 대상끼리의 구분을 위해 문자열보다 정수를 사용하는게 더 빠르고 편하기 때문



2. 특징

- 정수값을 가지며 대부분 32비트이다.

- 핸들끼리는 서로 중복되지 않아야한다.

- 핸들은 운영체제가 발급해주고, 사용자는 사용만하면 된다.

- 핸들의 데이터형은 HWND, HPEN, HBRUSH 등이 있다.





쉽게말해 조종할수있는(?) 자동차(프로그램) 핸들을 생각하면 될거같다.

'Programming > WinAPI' 카테고리의 다른 글

악성코드에 자주 사용되는 함수목록  (0) 2017.03.04
[API함수] WaitForSingleObject  (0) 2017.03.02
WinAPI WinMain과 윈도우 클래스  (0) 2017.02.08
API란?  (0) 2017.02.08
WinAPI 윈도우의 특징  (0) 2017.02.08

1. API란 특정 시스템을 위한 함수 집합을 가리키는 말



2. SDK(Software Development Kit)

- MS에서 제공하는 윈도우용 프로그램 개발 킷이다.

- ??? 아직 감이 잘 안잡힘



3. 클래스 라이브러리

- 복잡하고 양이 많은 API함수들을 더 쉽고 빠르게 사용하기 위해 클래스로 잘 포장하여 클래스 위주로 프로그램을 작성하는 방법

- 윈도우 프로그래밍에 필요한 클래스들을 미리 만들고 그 클래스를 조립하듯이 프로그래밍하는 것이 특징

- 예시로 MS의 MFC가 있다.



4. 배우는 이점

- 운영체제에 이해하기 쉬워지고 접근성 증가

- 알아야 내가 하는 리버싱작업이 수월할 것(?)





팁) API와 MFC의 비유

API는 공사장의 모래, 시멘트라면

MFC는 벽돌로 만들어진 건물이나 구조물


MFC는 API를 체계적으로 잘 정리하여 만든 C++라이브러리이다

'Programming > WinAPI' 카테고리의 다른 글

악성코드에 자주 사용되는 함수목록  (0) 2017.03.04
[API함수] WaitForSingleObject  (0) 2017.03.02
WinAPI WinMain과 윈도우 클래스  (0) 2017.02.08
WinAPI 핸들에 대한 이해  (0) 2017.02.08
WinAPI 윈도우의 특징  (0) 2017.02.08

+ Recent posts