Microsoft Word - hook7.doc

Size: px
Start display at page:

Download "Microsoft Word - hook7.doc"

Transcription

1 개발자를위한윈도우후킹테크닉 WH_SHELL 훅을사용해다른프로세스윈도우서브클래싱하기 Win32 플랫폼에서는컨텍스트문제로다른프로세스에존재하는윈도우를서브클래싱 하기가쉽지않다. WH_CBT 훅과 WH_SHELL 훅을통해서이러한작업을하는방법을 살펴본다. 또한브라우저 URL 하이재커와팝업제거프로그램을만드는방법을살펴본다. 목차 목차...1 필자소개...1 연재가이드... 오류! 책갈피가정의되어있지않습니다. 연재순서... 오류! 책갈피가정의되어있지않습니다. 필자메모...2 Intro...3 다른프로세스윈도우서브클래싱...3 WH_CBT 훅...4 WH_SHELL 훅...6 브라우저 URL 하이재커...8 서브클래싱스택 팝업킬러 도전과제 참고자료 필자소개 신영진 " 너는네세상어디에있느냐? 너에게주어진몇몇해가지나고몇몇날이지났는데, 그래너는네세상어디쯤에와있느냐?" 2006 년도이제몇달남지않았다. 후회가되지않는한해를보내기란버그없는프로그램을만드는것만큼힘든일인것같다.

2 연재가이드 운영체제 : 윈도우 2000/XP 개발도구 : 마이크로소프트비주얼스튜디오 2003 기초지식 : C/C++, Win32 프로그래밍응용분야 : 팝업제거프로그램, 브라우저 URL 하이재커 연재순서 키보드모니터링프로그램만들기 마우스훅을통한화면캡쳐프로그램제작 메시지훅이용한 Spy++ 흉내내기 SendMessage 후킹하기 Spy++ 클론 imspy 제작하기 저널훅을사용한매크로제작 WH_SHELL 훅을사용해다른프로세스윈도우서브클래싱하기 WH_DEBUG 훅을이용한훅탐지방법 OutputDebugString 의동작원리 필자메모 이번달샘플로소개된 URL 하이재커는처음에는 WH_CBT 훅으로작성했다가 WH_SHELL 훅으로변경했다. 훅 DLL 만교체하면되는간단한작업이었다. 그런데신기한것이 WH_SHELL 훅으로변경하고나서 HSHELL_WINDOWCREATED 가전혀호출되지않는것이었다. 필자는몇시간동안모든코드를찍어보면서 WH_SHELL 훅을디버깅했다. 훅 DLL 디버깅과구글검색을반복하기를수시간문제가훅 DLL 에있지않음을알게되었다. 문제의원인은훅프로시저를설치하던메인프로그램의코드에서 WH_CBT 를 WH_SHELL 로고치지않았던것이었다. 필자가최고의디버깅덕목으로여기는것에는두가지가있다. 냉정함과상상력이그것이다. 냉정하게어디서문제가발생했는지상상한다면대부분의문제는쉽게해결된다. 하지만이번사례에서필자는냉정함을잃었고지엽적인문제에집착함으로써결과적으로상당한시간을허비했다. 따라서디버깅을할때에는늘냉정한마음으로문제의원인을분석해야한다. 만약냉정해지기가힘든상황이라면해당문제를잠시잊고휴식을취하는것이좋다. 냉정함을잃은상태에서문제를해결하기는굉장히어렵기때문이다. 2/16 페이지

3 Intro 윈도우개발자가특정컨트롤의기능을확장시키기위해서가장자주사용하는기술은서브클래싱이다. 주로고객의 UI 욕구를충족시키기위해서이러한기법이많이사용된다. 이미지로된버튼, 이미지가삽입된리스트컨트롤등이대표적인예라할수있겠다. 하지만이러한것들은늘자신의프로그램내에서만동작하도록국한된다. SetWindowLong 을통해서해당윈도우의메시지프로시저를교체하더라도해당프로시저의주소는자신의기준이지다른프로세스의기준이아니기때문이다. 그렇다면다른프로그램의윈도우를서브클래싱할수는없을까? 물론할수있다. 메신저플러스팩등이대표적이라고할수있다. 다른프로세스윈도우서브클래싱 다른프로세스의윈도우를서브클래싱하지못하는가장큰이유는컨텍스트가다르기때문이다. 이문제를해결하기위해서사용되는방법은여러가지가있다. 직접적으로해결하는방법은 Dll injection 을사용하는것이다. 하지만이방법의경우복잡하고생각해야할것이많다. 간단하게는우리가이제껏사용해왔던훅을이용하면된다. 훅을다른스레드에걸경우해당스레드컨텍스트에서훅프로시저가수행되기때문이다. 훅을사용하는방법은두가지단점을가지고있다. 첫째는훅 DLL 이다른컨텍스트에서로드되고해제되는시점이애매모호하다는점이다. 이과정은전적으로시스템에서제어하기때문이다. 둘째는 USER32.DLL 을사용하지않는프로그램들 ( 대표적으로콘솔프로그램 ) 에는사용할수없다는점이다. 우리는서브클래싱을할것이기때문에두번째단점은문제가되지않는다. 또한첫번째단점의경우는 WH_CBT 나 WH_SHELL 훅을사용함으로써어느정도커버가된다. 훅 DLL 은해당훅프로시저가처음으로호출될때로드된다. 키보드훅은해당스레드에서처음으로키보드메시지가발생하는시점에, 마우스훅은해당스레드에서처음으로마우스메시지가발생하는시점에훅 DLL 이해당컨텍스트에서로드된다. WH_CBT 나 WH_SHELL 훅은윈도우의생성 / 소멸 / 활성화등을감지하는역할을하기때문에훅프로시저중에는가장먼저다른프로세스에서로드된다는점이특징이다. 훅 DLL 의로드지연이가장적고윈도우의활동을감시하기때문에서브클래싱에사용하기에가장적합한훅이다. 박스 1 DLL Injection 3/16 페이지

4 DLL injection 이란 DLL 을다른프로세스의주소공간으로침투시키는방법을말한다. 일반적으로프로그램에서필요한 DLL 을 LoadLibrary 함수를사용해서로드한다. DLL injection 의핵심은다른프로세스에서자신의 DLL 을강제로 LoadLibrary 하도록만드는것이다. 이렇게함으로써해당 DLL 의코드가침투한프로세스와동일한주소공간에서수행되도록할수있다. 실제구현방법이궁금한독자분들은 "Programming Applications for Microsoft Windows" 를참고하도록하자. WH_CBT 훅 WH_CBT 훅은컴퓨터베이스드트레이닝에사용되기위해서고안된훅이다. 이훅의주된역할은윈도우의생성 / 파괴 / 이동 / 활성화등을검사하는일이다. 훅함수의원형은아래와같다. LRESULT CALLBACK CBTProc(int ncode, WPARAM wparam, LPARAM lparam); code [ 입력 ] 훅프로시저가호출된이유를알리는코드값이다 (< 표 1> 을참고 ). 0 보다 작은경우에는훅프로시저를수행하지않고 CallNextHookEx 를호출한후바로리턴해야 한다. 표 1 code 값의의미코드값의미 HCBT_ACTIVATE 윈도우가활성화된경우다. HCBT_CLICKSKIPPED 마우스메시지가시스템메시지에서제거된경우다. 윈도우가생성된경우다. 이훅프로시저는 WM_CREATE, WM_NCCREATE 메시지가윈도우에전달되기이전에호출된다. 훅프로시저에서 0 이아닌값을리턴할경우해당윈도우는생성되지않는다. CreateWindow 함수는 NULL 을리턴한다. 0 을리턴할경우에는정상적으로윈도우가생성된다. HCBT_CREATEWND 이훅프로시저가수행되는시점에윈도우는생성되었으나, 최종크기, 위치, 부모윈도우등은결정되지않은상태다. 이상태에서훅프로시저는해당윈도우로메시지를전송할수있으나, 해당윈도우의 WM_CREATE, WM_NCCREATE 프로시저가아직수행되지않은단계라는것을알아야한다. CBT_CREATEWND 구조체의 hwndinsertafter 값을 4/16 페이지

5 변경함으로써생성될윈도우의 z-order 를변경할수있다. HCBT_DESTROYWND 윈도우가파괴된경우다. HCBT_KEYSKIPPED 키보드메시지가시스템메시지큐에서제거된경우다. HCBT_MINMAX 윈도우가최소화 / 최대화가된경우다. HCBT_MOVESIZE 윈도우가옮겨지거나크기가변경된경우다. 시스템메시지큐로부터 WM_QUEUESYNC 메시지를 HCBT_QS 전달받은경우다. HCBT_SETFOCUS 윈도우가키보드포커스를가지게된경우다. HCBT_SYSCOMMAND 시스템명령 (WM_SYSCOMMAND) 이수행되는경우다. wparam, lparam code 값에따라서다른값이넘어온다 (< 표 2> 참고 ) 표 2 code 값에따른 wparam 및 lparam 정보 code wparam lparam HCBT_ACTIVATE 활성화된윈도우핸들 CBTACTIVATESTRUCT 구조체포인터 HCBT_CLICKSKIPPED 마우스메시지가제거되었는지를 MOUSEHOOKSTRUCT 구조체나타내는플래그포인터 HCBT_CREATEWND 생성된윈도우핸들 CBT_CREATEWND 구조체포인터 HCBT_DESTROYWND 파괴될윈도우핸들 사용안함 HCBT_KEYSKIPPED 가상키코드 WM_KEYDOWN, WM_KEYUP 메시지의 lparam 값 ( 반복횟수, 스캔코드등을포함 ) HCBT_MINMAX 최대 / 최소화된윈도우핸들 하위워드는 ShowWindow 플래그가저장되어있다 (SW_SHOW, SW_HIDE 등 ). 상위워드는사용되지않는다. HCBT_MOVESIZE 이동 / 크기변경된윈도우핸들 변경된영역을담고있는 RECT 구조체포인터 HCBT_QS 사용안함 사용안함 HCBT_SETFOCUS 포커스를얻은윈도우핸들 포커스를잃은윈도우핸들 시스템커맨드 (SC_CLOSE, 해당시스템커맨드에대한 HCBT_SYSCOMMAND SC_HOTKEY, ) lparam 정보 5/16 페이지

6 wparam 과 lparam 에사용되는대부분의구조체와정보가이제껏소개한것이기때문에 새로나오는구조체에대한정보만살펴보도록하자. 아래는 HCBT_ACTIVATE 인경우에 LPARAM 으로전달되는 CBTACTIVATESTRUCT 구조체의원형과필드별설명이다. typedef struct BOOL fmouse; // 마우스에의해서활성화되었는지를나타내는플래그 HWND hwndactive; // 활성화된윈도우핸들 CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT; 아래는 HCBT_CREATEWND 인경우에 LPARAM 으로전달되는 CBT_CREATEWND 구조체의원형과필드별설명이다. HCBT_CREATEWND 인경우에윈도우는생성되었으나각종정보가아직설정되지않은단계다. 이단계에서는 GetWindowText 등으로윈도우의텍스트를구할수없다. 윈도우명을구하기위해서는 lpcs 필드내에있는 lpszname 을참조해서구해야한다. typedef struct LPCREATESTRUCT lpcs; // WM_CREATE 메시지의 LPARAM 으로전달되는윈도우생성정보 HWND hwndinsertafter; // z-order 상에생성될윈도우보다먼저위치될윈도우핸들 CBT_CREATEWND, *LPCBT_CREATEWND; 리턴값 : code 값이 HCBT_CLICKSKIPPED, HCBT_KEYSKIPPED, HCBT_QS 인경우는리턴값이 무시된다. 그외의경우에는 0 을리턴할경우해당작업이정상적으로처리되고, 1 을리턴 할경우해당작업이취소된다. WH_SHELL 훅 WH_SHELL 훅은쉘이벤트가발생할때호출되는훅이다. WH_CBT 훅과비슷하게윈도우의 생성 / 소멸 / 활성화를감지하는기능이있다. 하지만 WH_CBT 와는달리모두탑레벨 윈도우의변화만감지하기때문에호출빈도가낮다. 따라서좀더효율적이라할수있다. LRESULT CALLBACK CBTProc(int ncode, WPARAM wparam, LPARAM lparam); code [ 입력 ] 훅프로시저가호출된이유를알려주는코드값이다 (< 표 3> 을참고 ). 0 보다 작은경우에는훅프로시저를수행하지않고 CallNextHookEx 를호출한후바로리턴해야 한다. 표 3 code 값의의미 코드값 의미 6/16 페이지

7 HSHELL_ACCESSIBILITYSTATE Windows 2000/XP: accessibility 상태가변경되었음. HSHELL_ACTIVATESHELLWINDOW 쉘메인윈도우가활성화되어야하는경우다. Windows 2000/XP: 사용자의입력이벤트에의해서 WM_APPCOMMAND 가발생한경우다. HSHELL_APPCOMMAND WM_APPCOMMAND 는볼륨조절등의추가적인키입력을처리하는메시지다. HSHELL_GETMINRECT 윈도우가최소화 / 최대화된경우다. 키보드언어가변경되거나새로운키보드레이아웃이 HSHELL_LANGUAGE 로드된경우다. 태스크바에있는윈도우타이틀이새로그려지는 HSHELL_REDRAW 경우다. 사용자가태스크리스트를선택한경우다. 테스트해본 HSHELL_TASKMAN 결과 Ctrl + Esc 키를누른경우훅프로시저가호출되었다. 시작버튼을눌렀을때엔호출되지않는다. HSHELL_WINDOWACTIVATED 탑레벨윈도우의활성화상태가변경된경우다. 탑레벨윈도우가생성된경우다. 이훅이호출되는 HSHELL_WINDOWCREATED 시점에윈도우는생성된상태다. 탑레벨윈도우가파괴된경우다. 이훅이호출되는 HSHELL_WINDOWDESTROYED 시점에윈도우는존재한다. Windows XP: 탑레벨윈도우가대체 (replaced) 된 HSHELL_WINDOWREPLACED 경우다. 실제로훅프로시저가호출되는시점에관한문서정보고애매한점도있고, 일부는문서의내용과호출되는시점이달랐다. XP 컴퓨터에서테스트해본결과 code 값이 HSHELL_ACTIVATESHELLWINDOW, HSHELL_WINDOWREPLACED 로호출되는경우는없었다. HSHELL_GETMINRECT 는최소화될때는호출되었으나, 최대화될경우에는호출되지않았다. HSHELL_TASKMAN 은 Ctrl + Esc 를누른경우호출되었다. 반면마우스로시작버튼을클릭한경우에는호출되지않았다. HSHELL_ACCESSIBILITYSTATE 는필터키, 고정키등의설정이변경될때호출되었고, HSHELL_APPCOMMAND 는볼륨조절등의키보드를누른경우에호출되었다. wparam, lparam < 표 4> 참고 표 4 code 값에따른 wparam 및 lparam 정보 code wparam lparam 7/16 페이지

8 HSHELL_ACCESSIBILITYSTATE 상태가변경된 accessibility 기능을나타낸다. ACCESS_FILTERKEYS, ACCESS_MOUSEKEYS, ACCESS_STICKYKEYS 중하나의값을가진다. 사용안함. HSHELL_ACTIVATESHELLWINDOW 사용안함. 사용안함. HSHELL_APPCOMMAND WM_APPCOMMAND 가전달된원래윈도우핸들. 사용안함. HSHELL_GETMINRECT 최대화 / 최소화된윈도우핸들. RECT 구조체포인터. HSHELL_LANGUAGE 윈도우핸들. 키보드레이아웃핸들. HSHELL_REDRAW 새로그려질윈도우핸들. 플래시되는경우에는 TRUE, 그렇지않은경우에는 FALSE. HSHELL_TASKMAN 사용안함. 사용안함. HSHELL_WINDOWACTIVATED 활성화된윈도우핸들. 풀스크린모드인경우 TRUE, 아닌경우 FALSE. HSHELL_WINDOWCREATED 생성된윈도우핸들. 사용안함. HSHELL_WINDOWDESTROYED 파괴된윈도우핸들. 사용안함. HSHELL_WINDOWREPLACED 대체될윈도우핸들. 새로운윈도우핸들. 리턴값 : code 값이 HSHELL_APPCOMMAND 인경우엔 1 을, 아닌경우엔 0 을리턴해야한다. 브라우저 URL 하이재커 이번시간에우리가 WH_SHELL 훅을사용해만들어볼프로그램은브라우저 URL 하이재커다. 작업을간단하게하기위해서 " 마이크로소프트 " 란하나의키워드만검사하도록한다. 주소창에 " 마이크로소프트 " 가입력될경우 로이동시키면된다. 우리는이작업을 WH_SHELL 훅을통해서브라우저의 URL 입력상자를서브클래싱해서구현할것이다. 박스 2 하이재킹하이재킹 (hijacking) 또한후킹의일종이라고할수있다. 하이재킹은주로실행경로를 8/16 페이지

9 중간에가로채서다른경로로변경시키는것을의미한다. 브라우저의 URL 하이재커가가장많이알려져있다. URL 하이재커는특정키워드가 URL 주소에입력될경우다른주소로이동시키거나자사의검색엔진결과를출력하도록만든다. 물론이러한 URL 하이재커외에도하이재킹대상에따라서다양한종류의하이재커가있다. URL 하이재커를만들기위해서우리가가장먼저해야할일은브라우저의주소창을찾는일이다. 주소창을찾는가장손쉬운방법은윈도우의계층구조를조사하는것이다. < 화면 1> 에는 Internet Explorer 의주소창에대한윈도우계층구조가나타나있다. 선택된부분이실제우리가서브클래싱할에디터상자다. 화면 1 브라우저주소창의윈도우계층구조 < 리스트 1> 에는위정보를사용해서주어진탑레벨윈도우로부터주소창을찾아서리턴하는함수가나와있다. 주소창이없는경우엔 NULL 이리턴된다. Spy++ 제작할때사용했던 GetWindow 함수를사용해서구현되어있다. 좀더엄밀히구현한다면 GetWindow 의리턴값이 NULL 인경우바로 NULL 을리턴하도록처리해야한다. 여기서는구현의핵심만보이기위해서그러한에러처리부분을생략했다. 리스트 1 윈도우주소창을찾는함수 HWND GetAddressBarWnd(HWND hwnd) 9/16 페이지

10 TCHAR buf[max_path]; GetClassName(hwnd, buf, sizeof(buf)); if(_tcsicmp(buf, "IEFrame")!= 0) return NULL; hwnd = GetWindow(hwnd, GW_CHILD); // #32770 대화상자 hwnd = GetWindow(hwnd, GW_HWNDNEXT); // WorkerW hwnd = GetWindow(hwnd, GW_CHILD); // ReBarWindow32 hwnd = GetWindow(hwnd, GW_CHILD); // ToolbarWindow32 hwnd = GetWindow(hwnd, GW_HWNDNEXT); // ComboBoxEx32 hwnd = GetWindow(hwnd, GW_CHILD); // ToolbarWindow32 hwnd = GetWindow(hwnd, GW_HWNDNEXT); // ComboBox hwnd = GetWindow(hwnd, GW_CHILD); // Edit GetClassName(hwnd, buf, sizeof(buf)); if(_tcsicmp(buf, "Edit")!= 0) return NULL; return hwnd; 주소창을찾았으면다음으로할일은서브클래싱을해야한다. 서브클래싱작업의경우여러곳에서반복적으로사용되기때문에함수셋을정의해두면나중에도다시사용할수있다. < 리스트 2> 에는이러한서브클래싱작업을도와줄함수셋이나와있다. 서브클래싱을할경우이전주소를저장해야한다. 주소를전역맵으로저장하는대신에간단하게윈도우프로퍼티를사용해서구현했다. 서브클래싱을할때에프로퍼티를설정하고해제할때에프로퍼티를삭제하는방식이다. 그리고서브클래싱을할때에주의해야할점은유니코드윈도우인지를판단해서서브클래싱을해야한다는점이다. IsWindowUnicode 함수를사용해서유니코드윈도우인지를판별해서매칭되는정확한함수를사용해서서브클래싱을해야한다. 그렇지않을경우문자열메시지에서오류가발생할수있다. 리스트 2 서브클래싱관련함수들 #define SUBCLASS_PROP TEXT("SubClassData") typedef struct _SUBCLASSDATA HWND hwnd; WNDPROC oldproc; SUBCLASSDATA, *PSUBCLASSDATA; // 윈도우의서브클래스구조체를구해온다. PSUBCLASSDATA GetSubclassData(HWND hwnd) PSUBCLASSDATA data = (PSUBCLASSDATA) GetProp(hwnd, SUBCLASS_PROP); 10/16 페이지

11 if(!data) return NULL; if(data->hwnd!= hwnd) return NULL; return data; // 윈도우를서브클래싱한다. BOOL SubclassWindow(HWND hwnd, WNDPROC fn) PSUBCLASSDATA data = new SUBCLASSDATA; data->hwnd = hwnd; data->oldproc = (WNDPROC) GetWindowLongPtr(hwnd, GWL_WNDPROC); SetProp(hwnd, SUBCLASS_PROP, data); if(iswindowunicode(hwnd)) SetWindowLongPtrW(hwnd, GWL_WNDPROC, (LONG_PTR) fn); else SetWindowLongPtrA(hwnd, GWL_WNDPROC, (LONG_PTR) fn); return TRUE; // 서브클래싱을해제한다. BOOL UnSubclassWindow(HWND hwnd) PSUBCLASSDATA data = GetSubclassData(hwnd); if(!data) return FALSE; if(iswindowunicode(hwnd)) SetWindowLongPtrW(hwnd, GWL_WNDPROC, (LONG_PTR) data->oldproc); else SetWindowLongPtrA(hwnd, GWL_WNDPROC, (LONG_PTR) data->oldproc); RemoveProp(hwnd, SUBCLASS_PROP); return TRUE; // 서브클래싱된윈도우인지체크한다. BOOL IsWindowSubclassed(HWND hwnd) PSUBCLASSDATA data = GetSubclassData(hwnd); if(!data) return FALSE; return TRUE; 이제주소창을서브클래싱한프로시저를작성하면된다. < 리스트 3> 에그코드가 나와있다. 특별한내용은없다. 엔터키가눌린경우내용을검사해서 " 마이크로소프트 " 라면 11/16 페이지

12 로대체하는것과 WM_DESTROY 인경우에는서브클래싱을 복원시키는것이전부다. 리스트 3 새로운주소창프로시저 LRESULT CALLBACK UrlHijackProc(HWND hwnd, UINT msg, WPARAM w, LPARAM l) PSUBCLASSDATA data = (PSUBCLASSDATA) GetProp(hwnd, SUBCLASS_PROP); if(!data) return DefWindowProc(hwnd, msg, w, l); if(msg == WM_KEYDOWN && w == VK_RETURN) TCHAR buf[max_path] = 0,; GetWindowText(hwnd, buf, sizeof(buf)); if(_tcscmp(buf, TEXT(" 마이크로소프트 ")) == 0) // 하이재킹 SetWindowText(hwnd, " else if(msg == WM_DESTROY) UnSubclassWindow(hwnd); return CallWindowProc(data->oldProc, hwnd, msg, w, l); 이제 WH_SHELL 훅프로시저를살펴보자. < 리스트 4> 에훅프로시저의전문이나와있다. 우리는 HSHELL_WINDOWACTIVATED 를사용해서서브클래싱을하도록했다. 이렇게해야후킹되기이전의주소창까지서브클래싱을할수있기때문이다. HSHELL_WINDOWCREATED 를사용하면이전에생성된윈도우는서브클래싱할수없다. 박스 3 IME 완료상태에디터상자의입력문자열의한글조합상태가완료되지않은상태에서에디터의내용을변경하는경우조합중인글자가찌꺼기로남는경우가있다. 이러한경우에는에디터의내용을변경하기전에 IME 조합상태를취소하거나완료시킬필요가있다. 이전텍스트의내용이필요없는경우라면아래와같이 IME 조합상태를취소함으로써그런문제를없앨수있다. HIMC imc = ImmGetContext(hwnd); ImmNotifyIME(imc, NI_COMPOSITIONSTR, CPS_CANCEL, 0); ImmReleaseContext(hwnd, imc); 12/16 페이지

13 리스트 4 훅프로시저 LRESULT CALLBACK SubclassProc(int code, WPARAM w, LPARAM l) if(code < 0) return CallNextHookEx(NULL, code, w, l); if(code == HSHELL_WINDOWACTIVATED) HWND hwnd = GetAddressBarWnd((HWND) w); if(hwnd &&!IsWindowSubclassed(hwnd)) // 하이재킹 SubclassWindow(hwnd, UrlHijackProc); return 0; 이제모든작업이끝났다. 위의함수를가진 DLL 을만들고, SubclassProc 을전역 WH_SHELL 훅으로설치만하면된다. 화면 2 URL 하이재커실행화면 이번달샘플로제작된 URL 하이재커를실행하면 < 화면 2> 와같은윈도우가나타난다. 훅시작버튼을누르면주소창의 URL 을하이재킹한다. 훅종료를누르면해당훅을 종료한다. 서브클래싱스택 서브클래싱은가장원시적인방법의후킹이기때문에서브클래싱한순서에따라서스택과같은구조가생기게된다. 이렇게여러단계의서브클래싱이걸린경우는제거하는데생각을많이해야한다. 그렇지않으면잘못된연산오류나프로그램오동작을일으킬수 13/16 페이지

14 있기때문이다. < 그림 1> 에는네개의프로시저가서브클래싱을한경우의구조를 보여주고있다. 1 번이오리지널메시지핸들러이고, 그것을 2,3,4 번이순차적으로 서브클래싱했다고생각하면된다. 그림 1 서브클래싱스택 위와같은경우에 2 번프로시저가서브클래싱을끝내려고한다고생각을해보자. 아무런처리없이빠진경우는두번째그림과같이된다. 3 번이 2 번을참조하곤있지만그곳은더이상합법적인공간이아닌것이다. 따라서 GPF 가발생한다. 일반적인서브클래싱해제루틴처럼자신이가지고있는주소로복원시킨경우는세번째그림처럼된다. 이경우는자신보다나중에후킹한 3,4 번프로시저의추가기능이동작을하지않는다는문제가발생한다. 이러한문제를우아하게해결한방식이최종그림과같은형태다. 이방식은자신이빠지지않고메모리에자신의메시지핸들러를남겨두는것이다. 그리곤자신은단지메시지를포워딩시키는기능만해준다. 이경우에단점으론메모리낭비를들수있다. 불필요하게포워딩을위한메모리를차지하고있는셈이기때문이다. 그렇다면네번째그림과같이구현하기위해서는어떻게해야할까? 여러가지방법이있지만가장손쉬운방법은서브클래싱프로시저를훅프로시저가있는 DLL 이아닌별도의 DLL 에두는방법이다. 이렇게한후에훅 DLL 에서서브클래싱을할때에해당서브클래싱 DLL 을로드해서해당프로시저를사용하면된다. 프로그램이종료되더라도훅 DLL 만시스템이제거하기때문에서브클래싱 DLL 은계속메모리에상주한상태가된다. 이러한방법외에도프로그램종료를지연시키는방법을사용할수도있다. 사용자에게현재다른프로그램이사용하고있기때문에종료할수없다는메시지를보내는것이다. 이경우는서브클래싱카운터등을공유변수로두고추적해서메시지를출력하면된다. 하지만이방법도강제종료시에는속수무책이다. 14/16 페이지

15 팝업킬러 팝업은한때브라우저의문제로여겨지던시절이있었다. 하지만요즘필자는팝업이더이상브라우저속에서만벌어지는일이아님을뼈저리게느끼고있다. 필자의삶에가장큰충격을준사실은넥슨의카트라이더에삽입된팝업이다. 얼마전부터넥슨의카트라이더게임을하고나면 < 화면 3> 와같은광고화면이나타난다. 여기에더심각한사실은클로즈버튼또한없다는것이다. 광고가끝나고나면클로즈버튼이생긴다. 실제로 alt+f4 등의단축키를모르는사람들은이러한팝업에속수무책일수밖에없다. 이것이비단넥슨만의문제는아니다. 랜섬웨어의대부분이악성코드도아닌것을치료하라는팝업을계속띄운다. 이러한브라우저밖의팝업을차단하는데 WH_CBT 훅은강력한역할을한다. 화면 3 넥슨광고팝업 위의넥슨광고를차단하는훅프로시저가 < 리스트 5> 에나와있다. 이번에는윈도우 생성을차단해야하기때문에 HCBT_CREATEWND 를검사했다. 이경우에팝업생성을 취소하기위해서는간단하게 TRUE 를리턴해주면된다. 리스트 5 넥슨광고팝업을제거하는 CBT 훅프로시저 LRESULT CALLBACK PopupBlockerProc(int code, WPARAM w, LPARAM l) if(code < 0) return CallNextHookEx(NULL, code, w, l); if(code == HCBT_CREATEWND) HWND hwnd = (HWND) w; TCHAR classname[max_path] = 0,; // 생성될윈도우의클래스명을구한다. GetClassName(hwnd, classname, sizeof(classname)); 15/16 페이지

16 // 넥슨팝업이면생성을취소시킨다. if(_tcsicmp(classname, "NexonADBallon") == 0) return TRUE; return 0; 도전과제 이번달은여러분에게풍성한도전과제를내줄수있을것같다. 더러는유용한것도있기때문에한번씩꼭만들어보도록하자. 명심해야할사실은눈으로읽은사실은여러분의지식이아니라는점이다. 필자가몇년간코딩을하면서느낀점은실제로자신이입력하고문제를해결했을때진정으로자신의지식이된다는점이다. 1. 제공되는샘플은서브클래싱종료문제를해결하지않은버전이다. 이것을위에서제시된우아한방법으로종료되도록수정해본다. 훅프로시저를설치하고, 인터넷익스플로러를실행한다음훅프로그램을종료해서문제가없으면된다. 2. 위의문제를종료를지연시키도록만들어본다. 사용자가종료하려고하면다른프로그램에서사용하고있다고알려주는것이다. 3. URL 하이재킹을좀더쓸모있게만들어본다. 여러개의 URL 을검사해서사용자가매칭시킨곳으로이동시키도록만들어본다. 4. 팝업킬러를좀더유용하게만들어본다. 이전에 Spy++ 제작에서배운윈도우탐색방식을사용해서사용자가팝업을실시간으로추가할수있고, 추가된팝업을모두제거하는형태로프로그램을제작해본다. 참고자료 참고자료 1. Jeffrey Richter. <<Programming Applications for Microsoft Windows (4/E)>> Microsoft Press 참고자료 2. 김상형, <<Windows API 정복 >> 가남사참고자료 3. 김성우, << 해킹 / 파괴의광학 >> 와이미디어참고자료 4. WH_CBT 훅을사용해서메시지박스위치를변경하는방법 16/16 페이지

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - 09-CE-5-윈도우 핸들 순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정

More information

개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API

개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API 개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로...2 2. 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API 함수소개 SetWindowsHookEx 함수 5 UnhookWindowsHookEx 함수 5

More information

Microsoft Word - hook8.doc

Microsoft Word - hook8.doc 개발자를위한윈도우후킹테크닉 WH_DEBUG 훅을이용한훅탐지방법 지금까지우리는다양한종류의훅을사용해서다른프로그램으로전달되는메시지를가로채는방법을법을배웠다. 이번시간에는 WH_DEBUG 훅을사용해서훅프로시저를탐지하는방법에대해서다룬다. 목차 목차...1 필자소개...1 연재가이드...1 연재순서... 오류! 책갈피가정의되어있지않습니다. 필자메모...2 Intro...2

More information

04장 메시지 처리 유형

04장 메시지 처리 유형 4 장 메시지처리유형 김성영교수 금오공과대학교 컴퓨터공학부 메시지처리유형 윈도우에서발생하는이벤트에대응하는윈도우메시지를처리 2 장및 3 장의실습예제 자식윈도우에서발생한이벤트를부모윈도우에서처리 WM_COMMAND 메시지처리 실습 4.2 자식윈도우에서발생한사건유형을구분하여처리 Notification code 처리 실습 4.7 Notification code 의한계를극복하여처리

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft Word - hook3.doc

Microsoft Word - hook3.doc 개발자를위한윈도우후킹테크닉 메시지훅이용한 Spy++ 흉내내기 우리는지난강좌에서후킹을하는기초적인방법과사용되는 API 들을비롯해서후킹함수가호출되는컨텍스트에대해서배웠다. 이번강좌에서는 WH_GETMESSAGE 훅을통해서 Spy++ 과유사한프로그램을제작할것이다. 이과정에서 Windows 애플리케이션이메시지를처리하는과정과윈도우를열거하는방법에대해서알아보도록하자. 목차

More information

Microsoft Word - hook5.doc

Microsoft Word - hook5.doc 개발자를위한윈도우후킹테크닉 Spy++ 클론 imspy 제작하기 지난시간까지우리는 WH_GETMESSAGE, WH_CALLWNDPROC, WH_CALLWNDPROCRET 을 사용하는이론적인방법과동기화방법에대해서살펴보았다. 이번시간에는세가지훅을 사용해서 Spy++ 과같이메시지처리과정을보여주는프로그램을작성할것이다. 목차 목차...1 필자소개...1 연재가이드...1

More information

1장 윈도우 프로그래밍 들어가기

1장 윈도우 프로그래밍 들어가기 1 장 윈도우프로그래밍들어가기 김성영교수 금오공과대학교 컴퓨터공학부 예제 다음프로그램은언제종료할까? #include #define QUIT -1 int Func(void) int i; cout > i; return i; void main(void) int Sum = 0, i; cout

More information

Microsoft Word - hook4.doc

Microsoft Word - hook4.doc 개발자를위한윈도우후킹테크닉 SendMessage 후킹하기 지난시간에 WH_GETMESSAGE 훅을통해서메시큐에서메시지가처리되는과정을후킹해보았다. 이번시간에는 WH_CALLWNDPROC, WH_CALLWNDRETPROC 훅을통해서 SendMessage 의처리과정을후킹하는방법과다수의훅프로시저를설치한경우에동기화하는방법에대해서설명할것이다. 목차 목차...1 필자소개...1

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

MFC 프로그래밍

MFC 프로그래밍 윈도우프로그래밍 Visual C++ 2010 MFC Programming 1 장. 윈도우프로그래밍기초 윈도우운영체제의특징 그래픽사용자인터페이스 시스템메뉴타이틀바메뉴최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 상태표시줄 스크롤바 윈도우운영체제의특징 메시지구동구조 윈도우운영체제의특징 멀티태스킹과멀티스레딩 멀티태스킹 (Multitasking) 운영체제가여러개의응용프로그램을동시에실행

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft Word - hook1.doc

Microsoft Word - hook1.doc 개발자를위한윈도우후킹테크닉 키보드모니터링프로그램만들기 후킹이란다른프로세스의실행경로를가로채는것을말한다. 윈도우프로그래머들이밥먹듯이하는서브클래싱 ( 윈도우메시지핸들러를가로채서컨트롤의기능을확장하는방법 ) 도후킹의한종류라할수있다. 이번강좌는 Windows Hook 을하는함수들을소개하고, 그것들을이용해서키로거를만들어본다. 목차 목차...1 필자소개...1 연재가이드...2

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D> 01 : 윈도우프로그래밍기초 학습목표 윈도우운영체제와윈도우응용프로그램의특징을이해한다. SDK 응용프로그램작성과정, 기본구조, 동작원리를이해한다. MFC 응용프로그램작성과정, 기본구조, 동작원리를이해한다. 비주얼 C++ 개발환경사용법을익힌다. 윈도우운영체제특징 (1/3) 그래픽사용자인터페이스 1 윈도우운영체제특징 (2/3) 메시지구동구조 이벤트발생... 대기

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

Microsoft PowerPoint - 04windows.ppt

Microsoft PowerPoint - 04windows.ppt Game Programming I Windows 프로그래밍 (1) March 27, 2006 목표 윈도우프로그래밍에서이용되는이벤트구동프로그래밍모델의이해 Direct3D 를이용하는윈도우어플리케이션의작성을위한최소한의코드이해 윈도우 (Win32) 어플리케이션 Direct3D API ( 어플리케이션프로그래밍인터페이스 ) 를이용하기위해필요 Win32 API 를이용해작성

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

IS119_Message.Hooking_이성재.hwp

IS119_Message.Hooking_이성재.hwp Message Hooking 이성재 einsstar@is119.jnu.ac.kr Content 1. 목적 1 2. 윈도우 NT 환경에서의메시지처리 2 2.1. 메시지큐를이용한메시지처리 3 2.2. 윈도우프로시저에직접메시지전달 3 3. 메시지후킹이란 3 3.1. 메시지후킹의개념정의 3 3.2. 메시지후킹의유포방법 3 4. 후킹프로시저제작 3 4.1. 사전지식

More information

Microsoft PowerPoint - 09-CE-14-리스트콤보박스

Microsoft PowerPoint - 09-CE-14-리스트콤보박스 순천향대학교컴퓨터학부이상정 1 학습내용 리스트박스컨트롤 다이얼로그와리스트박스 콤보박스컨트롤 순천향대학교컴퓨터학부이상정 2 리스트박스컨트롤 순천향대학교컴퓨터학부이상정 3 리스트박스컨트롤 사용자가선택할수있는항목들을여러개나열해두고선택할수있는컨트롤 윈도우클래스의이름은 "listbox" 생성예 hlist=createwindow(l"listbox",null,ws_child

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Win32 API Windows Programming 1 http://idb.korea.ac.kr DB & Mining LAB. Korea Univ. 최종업데이트 : 2012. 08. 14 1 컴퓨터시스템의주요구성요소 2 2 컴퓨터하드웨어구성 Fetch : 메인메모리에저장되어있는명령어를 CPU 로 Decode : 컨트롤유닛에의해분석 Execution : ALU

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

5장 MFC기반 다지기

5장 MFC기반 다지기 5 장 MFC 기반다지기 김성영교수 금오공과대학교 컴퓨터공학부 들어가기 (1) pp.132 ~ 138 비주얼스튜디오에서 MFC 어플리케이션작성 참조 시스템메뉴 메뉴 최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 (Client Area) 스크롤바 상태표시줄 2 들어가기 (2) 3 들어가기 (3) 4 들어가기 (4) 솔루션탐색기확인 WinMain() 함수가없다?

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

슬라이드 1

슬라이드 1 한국산업기술대학교 제 4 강프레임리스너 (Frame Listener) 이대현교수 학습안내 학습목표 프레임리스너를이용하여게임루프를구현하는방법을이해한다. 오우거엔짂의키입력처리방식을이해한다. 학습내용 프레임리스너의개념프레임리스너를이용한게임캐릭터의이동캐릭터의이동속도조절 OIS 입력시스템을이용한키보드입력의처리 기본게임루프 Initialization Game Logic

More information

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770> 2010 학년도동계 계절수업시험문제지 출제위원 방송대김강현 학과명학번 - 성 명 감독관확인 ( 인 ) 교과목명 교과목코드 윈도우프로그래밍 3 7 출제범위 교재전체 ( 해당강의포함 ) 문항수 50 문항 [50 문항 2 점 =100 점 ] 유의사항 1. OMR 답안지및문제지인적사항표기는반드시컴퓨터용사인펜으로할것 2. 표기한답안은정정이일절불가하니답안표기에각별히유의할것

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

윈도우즈 프로그래밍

윈도우즈 프로그래밍 윈도우프로그래밍및실습 002. 윈도우프로그래밍의기본 DB & MINING LAB. Korea University since 2007. 09. 03 updated 2012. 08. 18 last updated 2015. 08. 25 이종욱 eastwest9@korea.ac.kr 1 Purpose of this chapter What is a Window programming

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

Microsoft Word - hook9.doc

Microsoft Word - hook9.doc 개발자를위한윈도우후킹테크닉 OutputDebugString 의동작원리 우리는지금까지후킹 DLL 을 OutputDebugString 과 DebugView 를이용해서동작내용을확인했다. 하지만 DebugView 가활성화된상태에서후킹 DLL 에서 OutputDebugString 을수행하면시스템이잠시동안멈추는현상이발생한다. 이번시간에는이러한 DebugView 의불편함을해소하기위해서커스텀디버깅뷰를제작하는방법에대해서배운다.

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

System Recovery 사용자 매뉴얼

System Recovery 사용자 매뉴얼 Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.

More information

1

1 2/33 3/33 4/33 5/33 6/33 7/33 8/33 9/33 10/33 11/33 12/33 13/33 14/33 15/33 16/33 17/33 5) 입력을 다 했으면 확인 버튼을 클릭합니다. 6) 시작 페이지가 제대로 설정이 되었는지 살펴볼까요. 익스플로러를 종료하고 다시 실행시켜 보세요. 시작화면에 야후! 코리아 화면이 뜬다면 설정 완료..^^

More information

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우. 소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture1.ppt Overview 윈도우프로그래밍기초 윈도우운영체제와윈도우응용프로그램의특징이해 SDK 응용프로그램작성과정, 기본구조, 동작원리이해 MFC 응용프로그램작성과정, 기본구조, 동작원리이해 HCI Programming 2 (321190) 2007년가을학기 9/13/2007 박경신 2 윈도우운영체제특징 그래픽사용자인터페이스 (Graphical User Interface,

More information

행자부 G4C

행자부 G4C 인증서발급관리모듈 Ver 1.0 개정이력 버전변경일변경사유변경내용작성자승인 1.0 2012-12-22 제정이경희 Copyright 2006. All rights reserved DreamSecurity. 2 목차 1. 인증시스템 ACTIVEX 설치절차... 4 1.1 설치... 4 2. 인증시스템 ACTIVEX 사용... 7 2.1 인증서발급... 7 2.2

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

윈도우 프로그래밍

윈도우 프로그래밍 Windows Programming 2013. 3 출처 : 인터넷에서수집한 PT 자료 1. Overview Getting Started (1) 관련도서 Visual C++/API 프로젝트따라하기, 오진환, 컴스페이스 Programming Windows, Charles Petzold, Microsoft Press Windows application Programming

More information

DLL(Dynamic Linked Library)

DLL(Dynamic Linked Library) 제 11 장동적연결라이브러리 11.1 DLL 의링크 11.2 DLL 의종류 실습 11-1 Implicit 링킹을통한정규 DLL 달력만들기 실습 11-2 Explicit 링킹을통한정규 DLL 달력만들기 실습 11-3 확장 DLL 을통한주민등록번호조회 프로그램만들기 DLL(Dynamic Linked Library) DLL 이란? 동적연결라이브러리 프로그램내부에라이브러리가있는것이아니라따로독립적으로실행가능한파일

More information

윈도우 프로그래밍의 개념

윈도우 프로그래밍의 개념 제 8 장컨트롤과리소스 II 8.1 탭컨트롤 8.2 슬라이더컨트롤실습 8-1 도형의종류와색상출력하기 8.3 스핀컨트롤 8.4 프로그레스바컨트롤 8.5 IP 주소컨트롤 8.6 네트워크주소컨트롤 8.7 날짜 / 시간컨트롤 8.8 애니메이트컨트롤실습 8.2 데이터전송시뮬레이터작성하기 컨트롤및리소스 리스트컨트롤 (List Control) 트리컨트롤 (Tree Control)

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Convenience Timetable Design

Convenience Timetable Design Convenience Timetable Design Team 4 2 Contents 1. Introduction 2. Decomposition description 3. Dependency description 4. Inter face description 5. Detailed design description 3 1. Introduction Purpose

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

윈도우즈 프로그래밍

윈도우즈 프로그래밍 8 장대화상자 VS 2015 008. 윈도우프로그래밍 DB & Mining LAB. Korea University Updated 2010. 10. 23 Updated 2012. 10. 02 Updated 2015. 09. 23 이종욱 eastwest9@korea.ac.kr 1 8-1 대화상자 (1/3) 사용자로부터끊임없이지시를받고사용자의지시에따라작업을하고 작업한결과를사용자에게보고한다.

More information

한국에너지기술연구원 통합정보시스템설치방법설명서 한국에너지기술연구원 지식정보실 - 1 -

한국에너지기술연구원 통합정보시스템설치방법설명서 한국에너지기술연구원 지식정보실 - 1 - 한국에너지기술연구원 통합정보시스템설치방법설명서 한국에너지기술연구원 지식정보실 - 1 - [1 단계 ] 운영체제별시스템설정방법 Windows XP 시스템설정방법 : XP 운영체제는설정할사항이없음 Windows 7 시스템설정방법 1) [ 시작 ]-[ 제어판 ]-[ 관리센터 ] 를클릭한다. - 2 - 2) 사용자계정컨트롤설정변경 을클릭한다. 3) 알리지않음 ( 사용자계정컨트롤끄기

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

게임 기획서 표준양식 연구보고서

게임 기획서 표준양식 연구보고서 ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

VISLAB 박제강 1. 시작하기전에영상관련알고리즘을개발하는과정에서작성한프로그램을테스트하고피드백하는작업은빈번하게발생한다. 이때기존콘솔 (Console) 형태로작성된프로그램의경우테스트작업을유동적으로조절할수없기때문에작업의효율이떨어진다. 반면 GUI(Graphical Use

VISLAB 박제강 1. 시작하기전에영상관련알고리즘을개발하는과정에서작성한프로그램을테스트하고피드백하는작업은빈번하게발생한다. 이때기존콘솔 (Console) 형태로작성된프로그램의경우테스트작업을유동적으로조절할수없기때문에작업의효율이떨어진다. 반면 GUI(Graphical Use VISLAB 박제강 1. 시작하기전에영상관련알고리즘을개발하는과정에서작성한프로그램을테스트하고피드백하는작업은빈번하게발생한다. 이때기존콘솔 (Console) 형태로작성된프로그램의경우테스트작업을유동적으로조절할수없기때문에작업의효율이떨어진다. 반면 GUI(Graphical User Interface) 형태로작성된프로그램은사용자가자신의의도를쉽게반영하고그결과를빠르게눈으로확인할수있다는장점이있다.

More information

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture1.ppt Overview 윈도우프로그래밍기초 윈도우운영체제와윈도우응용프로그램의특징이해 SDK 응용프로그램작성과정, 기본구조, 동작원리이해 MFC 응용프로그램작성과정, 기본구조, 동작원리이해 HCI Programming 2 (321190) 2008년가을학기 9/16/2008 박경신 2 Windows.NET 구조적프로그램에서객체지향프로그램으로 SDK(Software Development

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요 . 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture1 Malware Analysis #1 Agenda 악성코드정적분석 악성코드분석 악성코드정적분석 정적분석 임의의코드또는응용프로그램을실행하지않고분석 ASCII 문자열 (ex. URL) API 리스트 Packing VT 기타등등 정적분석 : 파일식별 악성으로의심되는파일의형태식별 file

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont 12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT

More information

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환 취약점분석보고서 [Photodex ProShow Producer v5.0.3256] 2012-07-24 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Photodex ProShow Producer Buffer Overflow 취약점분석... 2 2.1. Photodex ProShow Producer Buffer

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT KEY EVENT & STATE 구현 2007. 1. 25 PLATFORM TEAM 정용학 차례 Key Event HS TASK UI TASK LONG KEY STATE 구현 소스코드및실행화면 질의응답및토의 2 KEY EVENT - HS TASK hs_task keypad_scan_keypad hs_init keypad_pass_key_code keypad_init

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

슬라이드 1

슬라이드 1 6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,

More information