SSDT Hooking
|
|
- 지오 견
- 5 years ago
- Views:
Transcription
1 SSDT Hooking Last Update : 2006 년 11 월 10 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는커널모드후킹기술중의하나인 SSDT 후킹에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제봐도쉽게이해할수있을정도로쉽게쓸려고노력하였습니다. 제가작성하였던기존의 Windows Hook 시리즈가유저모드에서의후킹을다루었던반면본 SSDT는커널모드에서의후킹을사용하므로디바이스드라이버 (WDM) 를다루는부분이포함되어있습니다. 윈도우디바이스드라이버의경우많은부분을상세히설명하지는못했으나코드작성에필요한부분을중점으로설명하였습니다. 다양한분야의방대한자료들중에서필요한것만골라요약하다보니두서없이써내려간부분도많이있습니다. 읽으시는분들의양해를부탁드립니다. 이번에도역시기존에나와있는여러문서들을짜집기하는형태로작성되었으며기술하지못한원문저자들에게매우죄송할따름입니다. 본문서는읽으시는분들이어느정도 Windows API를알고있다는가정하에쓰여졌습니다. 본문서에서자세히다루지못한내용은참고자료를살펴보시기바랍니다. 제시된코드들은 Windows XP Professional Service Pack 2, Windows Server 2003 SP1 DDK 1 에서테 스트되었습니다. 문서의내용중틀린곳이나수정할곳이있으면연락해주시기바랍니다
2 목차 WINDOWS SYSTEM의구조...3 NATIVE API...4 SYSTEM SERVICE DESCRIPTOR TABLE DEVICE DRIVER 기초및활용...15 SSDT HOOK...33 참고자료
3 Windows System 의구조 먼저 Windows System 에대해알아봅니다. 이문서를읽으시는많은분들이이미해당내용을잘알 고계실테지만만약을위해간략하게설명해봅니다. Windows는유저모드 (User Mode) 와커널모드 (Kernel Mode) 로구분되어프로세스가실행됩니다. 커널모드에서동작하는프로세스만이컴퓨터에장착된모든메모리와하드웨어에대한직접적인접근이가능하며디바이스드라이버가가장대표적인예라고할수있습니다. 일반적인윈도우프로그램의경우유저모드프로세스가작동하는것이므로직접하드웨어장치나메모리에접근할수는없습니다. 하드웨어장치나메모리에접근하기위해유저모드프로그램은시스템서비스 (API라고이해하시면될듯합니다.) 를호출하게되고운영체제는 trap을발생시켜커널모드로의스위칭을위한스레드를호출하게됩니다. 이후이스레드에서하드웨어장치또는메모리에접근하게됩니다. 이를 context switch( 공룡책에는문맥교환이라고번역되어있습니다.) 라고합니다. 정확한시점은알수없지만 (-_-;) 어느시점이후부터최근에제작되는 OS는대부분마이크로커널의형태를가집니다.( 좀더엄밀하게말해서수정된마이크로커널의형태를가집니다.) 운영체제에서프로세스스케쥴링이나메모리관리등과같은가장핵심적이고필수적인부분만커널에구현이되어있고기타기능은서브시스템에서관리하는형태를띄게됩니다. 아래그림은 Windows Internal에서발췌한간단한형태의 Windows 구조입니다. [Simplified Windows architecture] 3
4 Native API 위에서도잠시설명했지만유저모드프로세스는하드웨어장치나메모리에접근하기위해커널모드로스위칭을해야합니다. 일반적으로사용하는 Win32 API는이러한기능을자동으로수행하는데사실 Win32 API는운영체제에서제공하는서브시스템중의하나입니다. 위의그림에서살펴볼수있듯이 Win32, OS/2, Wow, POSIX 등은모두서브시스템환경의일부이며 이는운영체제가다른기종에서작성된프로그램들의호환을위해제공하는것들입니다. 각각의서브 4
5 시스템들은커널모드에서동작하는서비스 ( 시스템서비스라고합니다.) 들을이용하여하드웨어장치나 메모리에접근하게되며이때사용되는커널모드서비스들은 Native API 라고불리는함수들을호출하 여이러한작업들을수행하게됩니다. 조금더구체적으로알아봅시다. Microsoft는보안을이유로유저모드에서동작하는코드가직접커널모드에서동작하는코드를 call 하는것을허용하지않습니다. MFC 개발자들이디렉토리구조를알기위해서자주사용하는 FindFirstFile(), FindNextFile() 함수가있습니다. FindFirstFile() 로디렉토리를찾은후디렉토리내모든구조를 FindNextFile() 이찾게됩니다. 프로그래머는단순히위의두 API를호출함으로써임의의디렉토리구조를알수있지만실제운영체제내부에서는더많은작업들이수행되게됩니다. 즉, 유저모드코드 FindNextFile() 은 NtQueryDirectoryFile() 이라는 Native API를호출하고 NtQueryDirectoryFile() 은동일한이름의커널모드코드의 Wrapper 역할을함으로써디렉토리구조를얻을려는목적을이루게됩니다. Visual Studio를설치하면기본적으로설치되는 Dependency Walker을이용해 ntdll.dll을열어보면동일한이름을가진 (Nt, Zw로구분되는 ) 함수가존재함을볼수있습니다. NtQueryDirectoryFile() API 5
6 ZwQueryDirerctoryFile() API Native API는운영체제에서사용하기위해만들어진것이며대부분이문서화되어있지않습니다. 하지만수많은해커들의노력에의해많은수의 Native API가 Undocument API 라는이름으로문서화되기에이르렀습니다. Native API들은보통 Nt 또는 Zt 로시작하는이름을가집니다. 유저모드에서동작하는프로그램이 Native API를이용하려면 ntdll.dll 파일을통해야만하며 ntdll.dll 파일은모든시스템서비스들의진입점을포함하고있습니다. MSDN에따르면 Zw로시작하는함수의경우해당함수를호출한프로세스에대한접근권한체크를하지않습니다. 좀더자세한설명은아래의 URL을참고하시기바랍니다. 이과정을그림으로나타내면아래와같습니다. 6
7 위의그림과같이 ntdll.dll은커널모드로진입하기위해인터럽트를사용합니다. INT 2E는 XP 이전버전의운영체제에서사용되던방법이며성능상의이유로 XP부터는 SYSENTER을사용합니다. INT 2E는소프트웨어인터럽트, SYSENTER는하드웨어인터럽트라고생각하시면될듯합니다. 이내용은다음절에서다루도록하겠습니다. 그럼실제함수는어떻게동작하도록되어있는지살펴봅시다. 위에서잠깐언급했었던 NtReadFile을예로들어보도록하겠습니다. 이작업은드라이버스튜디오또는 WinDbg가준비되어있다면가능합니다. 본문서에서는드라이버스튜디오를이용하였습니다. 여기서부터는 Devguru의 Attack Native API 의내용을참고하였음을미리밝힙니다. 먼저유저모드에서의함수동작을알기위해 Softice를실행시키기전 NtReadFile 함수가들어있는 ntdll.dll을로드해야합니다.( 앞에서도이야기했지만 ntdll.dll 파일에유저모드에서커널모드로의진입점이존재합니다 ). 이함수는디폴트로로드되지않습니다. 아래그림은 Driver Studio에포함된 Symbol Loader 프로그램을이용해 ntdll.dll 을로드하는화면을캡쳐한것입니다. 7
8 File LoadExports 를클릭하여 ntdll.dll 을로드합니다. 로드에성공하면위의그림에서빨간색부분처럼 ntdll 부분이생성됩니다. 8
9 이제 Softice 를실행시킵니다. Softice 가성공적으로실행된후 Ctrl + D 를누르면 SoftIce 화면으로 진입하게됩니다. Softice 로진입한화면 위의화면에서빨간색으로표시된부분이명령창입니다. Vmware 를통한이미지캡쳐라실제명령어 를수행한결과화면은캡쳐할수없어서텍스트형태로결과를보이도록하겠습니다. 9
10 먼저명령어창에 u ntdll!ntreadfile을입력한결과입니다. : u ntdll!ntreadfile ntdll!ntreadfile mov eax, b7 mov edx, ntdll!kifastsystemcall call edx ret 0024 : u ntdll!kifastsystemcall ntdll!kifastsystemcall mov edx, esp sysenter eax 레지스터에 NtReadFile 의주소인 0xb7 값을넣고 KiFastSystemCall 을호출합니다. KiFastSystemCall 에서는 edx 에 esp 값을넣은후 SysEnter 을호출하게됩니다. 다음으로 ZwReadFile을살펴보겠습니다. 명령창에 u ntdll!zwreadfile을입력하면 NtReadFile 값이나오는것을확인할수있습니다. 즉, Wrapper인 ntdll을통한 ( 유저모드에서의 ) NtReadFile, ZwReadFile은결국 NtReadFile 함수를호출하게됩니다. 유저모드에서는커널모드함수인 ZwReadFile을호출하더라도결국 NtReadFile을호출하게된다는말입니다. 커널모드 (Ntoskrnl.lib) 에서의 NtReadFile, ZwReadFile 은모두정상적으로해당함수를실행합니다. 명령창에서직접 u ntoskrnl!ntreadfile, u ntoskrnl!zwreadfile 을실행해보시기바랍니다. 10
11 System Service Descriptor Table Windows는수많은테이블들의집합이라고할수있습니다. 앞에서살펴보았듯이인터럽트가발생하면해당인터럽트의종류에따른결과를반환하게됩니다. 인터럽트가발생했을때어떤시스템서비스가호출되어야하는지에대한판단을하기위해윈도우는테이블을참조하게됩니다.( 정확히얘기하면 CPU는해당시스템서비스들이위치하고있는메모리상의주소를알아야할필요가있습니다. 하지만모든주소를내부적으로저장할수없기때문에 CPU는테이블이라는자료구조를사용하는것이며윈도우, 즉운영체제는이를이용하는것입니다. 좀더자세하고정확한내용은 Windows Internals를참고하시기바랍니다.) 이런테이블들 (CPU가참조하는 ) 에는여러종류의테이블이있으며아래와같습니다. GDT : Global Descriptor Table LDT : Local Descriptor Table IDT : Interrupt Descriptor Table 이런테이블들을통칭하여 System Service Descriptor Table이라고부릅니다. 운영체제또한자신만의테이블을만들어참조하는방법을사용하는데운영체제에서구현된중요한 테이블중에아래의테이블이있습니다. SSDT : System Service Dispatch Table 바로이문서의목표인 SSDT 테이블입니다. 이테이블은시스템에서이용가능한모든시스템서비스들의주소를가지고있으며인터럽트발생시운영체제는이테이블을참고하여적절한결과값을돌려주게됩니다. 이테이블을간단히조작 / 변경함으로써시스템의모든서비스를다룰수있기때문에커널루트킷, 안티바이러스프로그램양쪽모두에사용됩니다. 커널루트킷의경우에는프로세스 / 파일 / 디렉토리은닉등을위해사용됩니다. SSDT 를이용한후킹은 GDT, IDT 등과복합형태의후킹코드로서이용되기도합니다. 여기서앞절에서잠시나왔던 INT 2E와 SYSENTER을알아봅시다. 커널모드의 System Call을위해 Intel 기반하에서 Windows는 INT 2E 또는 SYSENTER을이용합니다. Windows 2000과이전버전의 Windows는유저모드에서커널모드로진입하기위해소프트웨어인터럽트인 INT 2E를이용했습니다. 인터럽트가발생하면 0x2E 값은 Interrupt Descriptor Table(IDT) 에서 Processor가참조하는 offset 값이됩니다.( 일반적으로 EAX 레지스터에들어가는값들은대부분 Offset으로쓰입니다.) 이 Offset이가리키는테이블의값은 System Service Dispatcher( 일반적으로 KiSystemService라고합니다.) 의주소입니다. CPU는 Instruction Pointer Register(IP Register) 에이값을 Load하고 System Service Dispatcher가실행되게됩니다. System Service Dispatcher는 System 11
12 Service Dispatch Table(SSDT) 에기록된 System Service를실행하게되며 ( 실행할 System Service의구분은 EAX 레지스터를참조하며 EDX 레지스터에서시스템서비스에전달된매개변수의목록-메모리주소-을참조합니다. Windows NT의경우 EDX 레지스터가아니라 EBX 레지스터를사용합니다.) 유저모드에서호출된 API가재호출되게됩니다. 즉, 커널모드에서 API가수행되게됩니다. Windows XP에서는 INT 2E 대신 SYSENTER이라고하는 Instruction을사용하게됩니다. INTEL은 SYSENTER Instruction을 CPU Instruction Set에포함시킴으로써성능상의향상을꾀했습니다. 이 Instruction은펜티엄 2 이상의 CPU에서지원하기시작하였으며 Windows 2000에서는 INT 2E와 SYSENTER을같이사용했으나 XP부터는 SYSENTER만을사용하게됩니다. 윈도우는이 Instruction을지원하기위해부팅할때명령과연결된레지스터에서커널의 System Service Dispatcher 루틴의주소를저장합니다. ntdll.dll이 SYSENTER Instruction을발생시키면 Processor는 IA32_SYSENTER_EIP 라는특수 Register 에저장된값, 즉 System Service Dispatcher의주소를체크하여 IP Register에 Load 하고실행시킵니다. INT 2E와마찬가지로실행할 System Service의구분은 EAX 레지스터에저장된값을참조하며전달되는매개변수의정보는 EDX 레지스터를참조합니다. 유저모드로되돌아가기위해서는일반적으로 SYSEXIT Instruction을사용합니다. AMD 의경우 SYSCALL 이라는 SYSENTER 과비슷한 Instruction 을사용하는데이는생략하도록하겠습 니다. 더자세한정보는 Windows Internals 와참고자료 web)5 를살펴보시기바랍니다. 위에서설명한과정을도식하면아래와같습니다. 12
13 -FindFirstFile() And FindNextFile(), Inside Windows Rootkits 에서발췌 - 본문서에서다루고자하는 SSDT Hooking 의목적은바로아래그림으로써표현될수있습니다. 13
14 - SSDT Hooking, Inside Windows Rootkits 에서발췌 - 위의그림에서볼수있듯이 Rootkit을중간에삽입시키는것이본문서의목적이라고할수있겠습니다. 자그럼어떻게 Rootkit을삽입시키는가, 아니그전에어떻게 SSDT를후킹하여우리가만든 Rootkit 으로향하게하는가, 그것이해결해야할가장중요한문제이며그답은디바이스드라이버에있습니다. 14
15 Device Driver 기초및활용 자디바이스드라이버시간입니다. 기존의 SDK 프로그래밍에익숙한사용자라면약간어색할듯하고프로그래밍에자신이없는분이라면매우어려울듯합니다. 몇년전만해도윈도우드라이버프로그래밍은윈도우프로그래밍의꽃이다라고생각되었었습니다.( 저만의견해인가요? -_-;). 자료라고는그저 MSDN 밖에없던시절, 극악무도또는진짜독한사람들만이하는분야라고취급되었었습니다. 그만큼어렵다는이야기입니다. -_-; 그러던것이시간이흘러한글로된윈도우디바이스드라이버책도나올만큼대중화 (?) 되었습니다만여전히그난해함은있습니다. 이번절은정말정말필요한부분만을모아놓았으니심화학습을원하시는분들은드라이버관련전문 서적을읽으시고정말당장써먹을수있는게필요해 ~ 하시는분들은 RootKits 1 를읽으시길바랍니다. 자이제시작해보겠습니다. 먼저 RING에대한설명으로시작해야할것같습니다. 앞절에서유저모드와커널모드에대한설명이있었습니다. 이것은운영체제에의한분류 (?) 법이라고할수있습니다. INTEL CPU에서는 ( 이하 x86) 이를 Ring이라고부르며우리가잘알고있는유저모드는 Ring 3, 커널모드는 Ring 0를나타내게됩니다. x86 에서지원하는 Ring 모델의구조는아래그림과같습니다. 1 Rootkits: Subverting the Windows Kernel 15
16 Protection Rings 위의그림에서볼수있듯이 x86은총 4개의 Ring을이용하여 Access Control을지원합니다. 실제이 Ring의구분은숫자 0~3으로구분되며물리적으로 Ring 모양과는전혀상관이없습니다. 위의그림에서볼수있듯이네개의 Ring 중에서 Ring 0가가장큰권한을, Ring 3이가장낮은권한을가지게됩니다. 4개의 Ring 중 Windows는 Ring 0 와 Ring 3의두개만을사용하며 Ring 0를커널모드, Ring 3을유저모드라고부릅니다. 즉 Windows의모든커널코드들은 Ring 0의권한을가지고실행되는것입니다. Ring 0와 Ring 3에서실행되는프로그램들의접근제한규칙은아래와같습니다. 특권수준이낮은코드세그먼트가특권수준이높은데이터세그먼트로액세스하는것은불가능 특권수준이낮은코드세그먼트에서특권수준이높은코드세그먼트로의제어이행은특별한방법을사용해서만이가능 특권수준이높은코드세그먼트에서특권수준이낮은코드세그먼트로의제어이행은불가능 - Windows 구조와원리그리고 Codes, 정덕영저- 앞에서도얘기했지만실제 Ring 을구분하는것은 0~3 까지의숫자입니다. 현재프로그램을실행하는특권레벨을결정하는것은코드세그먼트의특권레벨입니다. X86 보호모드에서실행되는프로그램의각코드세그먼트는세그먼트디스크립터라고불리는 8바이트의데이터구조체에의해기술됩니다. 16
17 세그먼트디스크립터는아래와같은구조를가지고있습니다. - 출처 : University of Nebraska-Lincoin Computer Science & Engineering CSCE 351- 위의그림중에서 DPL(Descriptor Privilege Level) 부분이바로특권레벨을나타내는부분입니다. 운영체제는해당필드를참고하여커널모드, 유저모드를구분하게됩니다. DPL 중현재실행되고있는코드의 DPL 값을 CPL(Current Privilege Level) 이라고부릅니다. 세그먼트디스크립터는메인메모리에저장되며이디스크럽터들을디스크럽터테이블이관리하게됩니다. 메인메모리에는두개의중요한테이블이있는데그것이바로앞절에서살펴본 GDT 와 LDT d입니다. 즉 GDT와 LDT에세그먼트디스크럽터에대한정보가있습니다. GDT, LDT 의두개의테이블이있기때문에어떤테이블에서찾아야할것인지를알필요가있습니다. 이를위해세그먼트셀렉터 (Segment Selector) 라고하는것이존재합니다만이에대한설명은넘어가도록하겠습니다. 실제 GDT는어떤값을가지고있는지 WinDBG에서확인을해보도록합시다. Dump를위해 ProtMode 라는 WinDBG 확장 dll 파일을이용했습니다. 해당소스및파일은참고자료 web)5 에서받을수있습니다. ProtMode.dll 파일을 C: Program Files Debugging Tools for Windows winxp 에복사합니다.(Debugging Tools for Windows 가설치되어있어야합니다.) WinDBG에서먼저 ntsdexts.dll 파일을 load 한후 ProtMode.dll을 load 합니다. 그리고!ProtMode.Descriptor GDT 1 를입력하면 GDT 를확인할수있습니다. 17
18 -Dump GDT - 위의화면은 GDT 를 WinDBG 에서확인한모습입니다. 커널모드에서작동하는프로그램의경우에는 DPL 부분이 0, 유저모드에서작동하는프로그램의경우에는 DPL 부분이 3 으로표시됩니다. 저의경 우는 VMWARE 를이용한커널디버깅모드로동작중이기때문에 DPL 이 0 으로되어있습니다. Ring에의한메모리접근제한과더불어 x86에서제공하는다른하나의보안장치가있습니다. 몇몇명령어들의경우특권을가지고있는것으로간주되어오직 Ring 0에서만실행됩니다. 이명령들은일반적으로 CPU의행동을수정하거나직접하드웨어에접근하기위해사용됩니다. 그명령어들중일부는아래와같습니다. cli : 현재 CPU에서실행중인인터럽트를중지시킵니다. sti : 현재 CPU에서인터럽트를실행시킵니다. in : 하드웨어포트로부터데이터를읽어들입니다. out : 하드웨어포트로데이터를씁니다. - RootKits - 위와같은명령어들이있다정도만알아두시면될듯합니다. 디바이스드라이버를설명하기위해서필수적인 Ring Model에대한설명이여기까지입니다. 디바이스드라이버란위에서설명한유저모드 커널모드스위칭을하지않고직접적으로하드웨어에접근하는소프트웨어라고말할수있습니다. 즉커널모드에서동작하며하드웨어에직접접근할수있는프로그램입니다. 윈도우는이런디바이스드라이버를설계하기쉽도록하나의모델을제시하고있는데이것이 WDM(Windows Driver Model) 이라고합니다. 다만모든운영체제가 WDM 방식을지원하는것은아니 18
19 며모든드라이버가 WDM 방식을사용해서개발할수있는것도아닙니다. WDM 의역사, 문제, 특징등과같은자세한내용은디바이스드라이버서적을참고하시기바랍니다. 디바이스드라이버프로그램은실행프로그램이아닙니다. 즉확장자가 exe 나 dll 이아니라 sys 입니다. 개발된디바이스드라이버프로그램을사용하기위해서는해당드라이버를 LOAD 시켜줘야만합니다. 리눅스에서의모듈이라고생각하시면훨씬더이해가쉬울듯합니다. 디바이스드라이버의기본골격은아래의 4가지엔트리로구성됩니다. DriverEntry Routine AddDevice Routine IRP Dispatch Routine DriverUnload Routine - 디바이스드라이버구조와원리그리고제작노하우, 이봉석 - 간단히정말간단히필요한것들만설명하겠습니다. 디바이스드라이버전문서적참고를권고합니 다. :) * 디바이스드라이버코드를예시함에있어서커널모드드라이버형태또는 WDM 형태로구현될수있으며이차이점에대해서는상세히기술하지않았습니다. 표현의차이만있을뿐원리는동일합니다. 디바이스드라이버분야는넓고도방대해서일일이설명하려면무지막지한시간이걸리는관계로 ( 본인도잘모른다는게큰이유입니다 -_-;) 대충대충넘어가겠습니다. DriverEntry Routine 일반 C 프로그램의시작점은 main(), 윈도우응용프로그램은 WinMain(), dll 프로그램은 DllMain() 그리고디바이스드라이버의시작점은 DriverEntry입니다. 즉드라이버가로드된후처음으로실행되는곳이바로이부분입니다. 이부분은처음드라이버가로드될때단한번만수행하는부분이므로주로초기화과정에많이사용됩니다. AddDevice Routine 자신이만든새로운디바이스를추가하고자할때사용되는부분입니다. 이부분에서 Device Object 를생성하게됩니다. IRP Dispatch Routine IRP는디바이스와 IO Manager 사이에서명령을전달하는역할을하는구조체이며그실체는하나의버퍼에불과합니다. 유저모드프로그램에서파일을열고쓰는동작같은것이 IRP를통해서이루어지게됩니다. 19
20 DriverUnload Routine 이름그대로드라이버를언로드할때수행되는부분이며이것저것수행한것들을깨끗하게정리하는 부분으로사용됩니다. 먼저만인의연인 Hello World 를작성해보도록하겠습니다. 빌드를위해서는소스파일외에도 Makefile 과 Source 파일이필요하게됩니다. 역시구체적인것은전문서적을참고하시고아래의화면대로입력하시기바랍니다. - Sources - - Makefile - - HelloWorld.c - 위의세개파일을작성한다음 DDK 를설치하면생기는 Windows XP Checked Build Environment 를실행한다음해당파일들이있는디렉토리로이동합니다. 그리고아래화면처럼컴파일을하고나 면 HelloWorld.sys 파일이생성됩니다. 20
21 - build - - build 결과 - 이제작성한프로그램을로드하고메시지를볼수있는프로그램이필요합니다. 드라이버를로드하는 방법은두가지가있는데그방법은역시서적을참고하시길바랍니다. 본문서에서드라이버를로드하는툴은 Rootkit.com 1 의 InstDrv 를, 메시지를보기위해서는 sysinternals 2 의 Debugview 프로그램을사용했습니다
22 - 드라이버 Load - Install -> Start -> Stop -> Remove 버튼을차례로누르면 DebugView 화면에 HelloWorld.c 파일에서 작성한 DbgPrint 함수가출력하는메시지를확인할수있습니다. HelloWorld.c 파일을보시면알겠지만위에서구현된것은 DriverEntry 에진입했을때와 Unload 시에 대한것뿐입니다. 이제여기에조금더살을붙여보도록하겠습니다. 22
23 - Source - Source 파일은 TARGETNAME 과 SOURCES 부분만변경되었습니다. - Minimal.h - Minimal.cpp 는조금더많은부분이추가되었습니다. 하나씩보겠습니다. - Minimal.cpp #1 - CreateDevice 함수가하나더추가된것을볼수있습니다. DriverEntry 부분은 CreateDevice 를호출 하는부분이추가되었습니다. 아래는 CreateDevice 함수입니다. 23
24 - Minimal.cpp #2- 이부분은 WDM에서는 AddDevice 함수가처리합니다. 디바이스드라이버는, 즉커널내부에서는모두유니코드를사용합니다. 생성할디바이스의이름을유니코드로변환하는부분이 CreateDevice함수의초반부분입니다. 중간쯤에가면 IoCreateDevice 함수를이용해서디바이스를생성하게됩니다. 이 API의자세한설명은전문서적을참고하시기바랍니다. 디바이스생성에성공하면해당디바이스를유저모드어플리케이션에서이용하기위해전역변수를만들어줘야합니다. 이를위해 Symbolic Link를만들게되며이를 IoCreateSymbolicLink API에서담당하게됩니다. 만약 Symbolic Link 생성에실패하게되면 IoDeleteDevice API를이용해생성한디바이스를삭제합니다. 이부분은왜이렇게해야하는지에대한명확한답변을해드리기어려우나아마도일종의안전장치로써사용되는것이아닌가짐작됩니다. Symbolic Link를생성하는방법에있어서 WDM 을이용하게되면 DriverExtension->AddDevice에서처리를하게됩니다만해당내용은생략하도록하겠습니다. CreateDevice 함수가완료되면디바이스드라이버객체가생성되고어플리케이션에서이를이용할수 24
25 있는 Symbolic Link 까지생성되게됩니다. - Minimal.cpp #3 - 위의화면은 DriverUnload 부분입니다. 드라이버를 Unload 할때 Symbolic Link 를삭제한후디바이스 를삭제합니다. 작성한디바이스드라이버를설치하면위와같은화면을볼수있습니다. 자여기까지오면이제우리는 Windows System 에커널모드에서작동하는디바이스를생성할수있 게된것입니다. 다음예제는디바이스익스텐션 (Device Extension) 구조체가추가된것입니다. 디바이스익스텐션은 nonpaged 풀에존재하며디바이스의상태정보등을기록하는데쓰입니다. 즉, 디바이스전용이므로 디바이스익스텐션의구조체는헤더파일에정의되어있어야합니다. 아래는디바이스익스텐션구조체가추가된헤더파일입니다. 25
26 - NewMinimal.h - 위의디바이스익스텐션구조체변수중 PDEVICE_OBJECT 부분은반드시있어야하는부분입니다. Linked List 에서 Next 포인터의역할을한다고생각하시면됩니다. 나머지는드라이버개발자가필요 한전용변수들을선언하면됩니다. - NewMinimal.cpp #1- NewMinimal.cpp 의초반부입니다. CreateDevice 함수에전달되는변수가하나늘었습니다. 바로 uldevicenumber 입니다. 하나의드라이버는하나이상의디바이스를다룰수있습니다. 그러므로 uldevicenumber 변수는드라이버에서다룰디바이스를차례로참조할수있는매개체로써의역할을하게됩니다. 26
27 - NewMinimal.cpp #2- CreateDevice 에서는우선 PDEVICE_EXTENSION형 pdevext 변수가생긴것이눈에들어옵니다. 중간쯤에디바이스익스텐션구조체를초기화합니다. 디바이스의정보중 Device Name, Symbolic Link Name 등을저장하고있습니다. 추가로 status 의값에따른조건문하나를넣어놨습니다. 동일한이름의 Symbolic Link가존재할경우메시지를뿌립니다. NTSTATUS형이반환하는값은여러가지가정의되어있는데자세한것은 C: WINDDK inc ddk wxp ntstatus.h 파일을참고하시기바랍니다. 27
28 - NewMinimal.cpp #3- DriverUnload 부분은형태가조금틀려졌습니다. pnextobj 가마지막노드에도달할때까지, 즉생성 된모든디바이스에대하여차례로 Symbolic Link 와 Device 를삭제합니다.(Linked List 라고생각하시 면됩니다.) Symbolic Link Name 은디바이스익스텐션에저장되어있는값을사용하고있습니다. DbgView 화면입니다. 이번에는마지막으로디스패치루틴을넣어보겠습니다. 앞에서이야기했던디바이스드라이버의기본 골격은이디스패치루틴이들어감으로써완성되게됩니다. 28
29 - LastMinimal.h - 헤더파일입니다. 앞에서지저분한소스를좀고칠겸이쪽으로몇개뺐습니다. 그림에서볼수있듯이디바이스익스텐션구조체를간단하게수정했고 DispatchDummy 라는함수가 추가되었습니다. 29
30 - LastMinimal.cpp #1- DriverEntry 부분입니다. 기존소스에서따로분리해놓았던 CreateDevice를합쳐놓았습니다. 디바이스익스텐션초기화가간략하게된것을중간쯤에서확인할수있습니다. 마지막부분에 Dispatch 초기화부분이새로이추가된것이보입니다. MajorFunction 테이블의모든디스패치루틴에대해 DispatchDummy 함수를지정하고있습니다. MajorFunction 테이블은특정 I/O 요청에대한디스패치루틴의함수포인터들을저장하고있으며이런 I/O 요청은 IRP_MJ_XXX 형태의심볼로서정의되어있습니다. 실제로는상수값을가지고있는심볼입니다. Ntddk.h 또는 WDM.h 파일을살펴보시면상세히기술되어있습니다. 30
31 - ntddk.h - IRP 함수코드값중몇가지만나열해보면아래와같습니다. IRP_MJ_CREATE : 핸들을요청합니다. CreateFile에대응됩니다. IRP_MJ_CLENUP : 핸들을닫을때지연된 IRP를취소시킵니다. CloseHandle에대응됩니다. IRP_MJ_CLOSE : 핸들을닫습니다. CloseHandle에대응됩니다. IRP_MJ_READ : 디바이스로부터데이터를받습니다. ReadFile에대응됩니다. IRP_MJ_WRITE : 디바이스로데이터를보냅니다. WriteFile에대응됩니다. IRP_MJ_SHUTDOWN : 시스템이셧다운될때사용됩니다. InitateSystemShutdown에대응됩니다. - 원리와예제로배워보는 Windows 2000 디바이스드라이버 - 31
32 - LastMinimal.cpp #2- 위의그림에서주석에도달려있지만실제 DispatchDummy 함수는아무일도하지않는함수입니다. 해당함수가호출되면 status를 STATUS_SUCCESS로대입하고 IoCompleteRequest API를호출한뒤 status를 return 합니다. IoCommpleteRequest API는이름에서도알수있듯이해당요청이완료되었음을알리는역할을합니다. 마지막으로 DriverUnload 부분은 Symbolic Link 이름을지정하는부분만추가되었습니다. 이것으로써디바이스드라이버의기본골격은다다루어보았습니다. 디바이스드라이버항목의마지 막예제로써디바이스하나를생성하여읽고쓰는작업을하는드라이버를소개할까했으나실제우 리가할 SSDT Hooking 시에디스패치루틴은사용되지않으므로패 ~ 쓰하도록하겠습니다. 32
33 SSDT Hook 멀고먼길을돌아드디어 SSDT Hook으로다시진입하게되었습니다. 자이제실제코드를작성하기전에관련내용들을알아보도록하겠습니다. System Service Dispatcher, 즉 KiSystemService는 SSDT(System Service Dispatch Table) 을참고하여적절한 System Service를실행하게됩니다. 하지만이 SSDT, 즉 KiServiceTable은커널에의해익스포트되지않은구조체이므로원칙적으로는내부구조를알수없습니다. 하지만 KeServiceDescriptorTable이라는 ntoskrnl.exe에의해익스포트된구조체 (Service Descriptor Table) 내에 KiServiceTable에대한정보가들어있습니다. KeServiceDescriptorTable 구조체는아래와같습니다. typedef struct ServiceDescriptorTable { SDE ServiceDescriptor[4]; } SDT; SDT 구조체는아래와같습니다. typedef struct ServiceDescriptorEntry { PDWORD KiServiceTable; PDWORD CounterTableBase; DWORD ServiceLimit; PBYTE ArgumentTable; } SDE; KiServiceTable 에는서비스테이블의시작주소가들어있습니다. 이주소로부터 4바이트단위로각 System Service들의주소가들어가있습니다. 세번째필드 ServiceLimit는 SDT에등록되어있는 System Service의개수가들어있습니다. 마지막필드인 ArgumentTable에는각 System Service마다전달되는파라미터가몇바이트인지기록되어있습니다. 이주소로부터 1바이트단위로전달되는파라미터의바이트수가기록되어있습니다. 아래는 KeServiceDescriptorTable 을 WinDBG 에서 Dump 한화면입니다. 위그림에서각줄은 SDE 구조체배열의구성요소들입니다. 그리고빨간색으로표시된부분이바로 KiServiceTable 의주소입니다. WinDBG 로해당주소의메모리를덤프하면아래와같은화면이나옵니다 33
34 위의빨간색으로표시한부분처럼각부분은 KiServiceTable 에저장된 System Service 들의주소를나 타냅니다. 첫번째주소를살펴보면 NtAcceptConnectPort 라는 API 임을확인할수있습니다. 동일한방법을 이용하여 ServiceLimit 개의 System Service 를확인할수있습니다. 34
35 참고자료 Documents) 1. Rootkits: Subverting the Windows Kernel, Greg Hoglund 1. Inside Windows Rootkits 2. Windows Driver Model2, Microsoft Press 3. Attack Native API, Devguru 4. Rootkit을이용하는악성코드, 사이버시큐리티 2005년 11월호 5. ROOTKITS, Greg Hoglund, James Butler 6. Defeating Kernel Native API Hookers by Direct Service Dispatch Table Restoration, Chew Keong TAN 7. 원리와예제로배우는 Windows 2000 디바이스드라이버, 인포북 8. Windows Internals, Microsoft Press 9. 64비트윈도우커널분석 AMD64, Micro Software 2005년 10월호 Web) 1. Hooking Windows NT System Services 2. Windows Global API Hooking 3. Window 쪼물딱거리기 4. How Do Windows NT System Calls REALLY Work? 5. System Call Optimization with the SYSENTER Instruction 35
Microsoft Word - [Windows Hook] 6.HideProcess.doc
Hide Process Last Update : 2007 년 6 월 11 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는 SSDT Hook을이용한프로세스를감추는기술에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제보아도쉽게이해할수있도록쓸려고노력하였습니다. 기존에나와있는여러훌륭한문서들을토대로짜집기의형태로작성되었으며기술하지못한원문저자들에게매우죄송할따름입니다.
More informationSSDT Hooking
SSDT Hooking Last Update : 2007 년 1 월 4 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는커널모드후킹기술중의하나인 SSDT 후킹에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제봐도쉽게이해할수있을정도로쉽게쓸려고노력하였습니다. 제가작성하였던기존의 Windows
More informationMicrosoft 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 informationInstall 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임베디드시스템설계강의자료 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 informationMicrosoft 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 informationMicrosoft 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<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F F6F6B696E672E687770>
SSDT HOOKING을이용한프로세스와파일숨기기 이동수 alonglog@is119.jnu.ac.kr 개 요 기존에만들었던메시지후킹프로그램을숨겨보고싶어서 SSDT후킹을공부하였다. 그리고그결과를정리하여이문서를작성하였다. 프로세스를숨기고파일을숨기기위해서 Native API를후킹했다. 메시지후킹과다르게 SSDT후킹은커널모드에서후킹을해야하므로디바이스드라이버로프로그램이작성되어있다.
More information임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지
More information1
초보자를위한 Kernel based windows rootkit -1 부 - By Beist Security Study Group (http://beist.org) 요약 : 이문서는윈도우 2000/XP/2003 환경에서의커널루트킷에대한개요와윈도우와하드웨어간의커넥션에대해다룹니다. 그리고실습을위해커널레벨에서 CR0 레지스터를변경하여 SSDT 의 read-only
More information<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F494454486F6F6B696E672E687770>
IDT Hooking을 이용한 Simple KeyLogger 이동수 alonglog@is119.jnu.ac.kr 개 요 커널 Hooking에 관하여 공부하는 중에 IDT Hooking에 관하여 알게 되었다. 이전에 공부하 였던 SSDT Hooking과는 다른 요소가 많다. IDT Hooking을 공부하면서 컴퓨터의 인터럽트 과정을 이해할 수 있는 좋은 계기가
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationISP 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 informationMicrosoft 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<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 informationChapter #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슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft Word - 3부A windows 환경 IVF + visual studio.doc
Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration
More information지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR
Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationWindows 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 informationA 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 informationMicrosoft 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 informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More information슬라이드 1
마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***
More information목차 윈도우드라이버 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커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서
커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드
More informationPCServerMgmt7
Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network
More informationMicrosoft PowerPoint - o8.pptx
메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)
More informationMicrosoft 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<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationSharing Memory Between Drivers and Applications
본컬럼에대한모든저작권은 DevGuru에있습니다. 컬럼을타사이트등에기재및링크또는컬럼내용을인용시반드시출처를밝히셔야합니다. 컬럼들을 CD나기타매체로배포하고자할경우 DevGuru에동의를얻으셔야합니다. c DevGuru Corporation. All rights reserved 기타자세한질문사항들은웹게시판이나 support@devguru.co.kr 으로 문의하기바랍니다.
More informationAPI 매뉴얼
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 informationWindows Server 2012
Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More information<41736D6C6F D20B9AEBCADBEE7BDC42E687770>
IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationMicrosoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]
리눅스 설치 Vmware를 이용한 Fedora Core 8 설치 소프트웨어실습 1 Contents 가상 머신 실습 환경 구축 Fedora Core 8 설치 가상 머신 가상 머신 가상 머신의 개념 VMware의 설치 VMware : 가상 머신 생성 VMware의 특징 실습 환경 구축 실습 환경 구축 Fedora Core 8 설치 가상 머신의 개념 가상 머신 (Virtual
More informationJDBC 소개및설치 Database Laboratory
JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }
More informationSBR-100S User Manual
( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S
More informationvRealize Automation용 VMware Remote Console - VMware
vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation
More informationRHEV 2.2 인증서 만료 확인 및 갱신
2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_
More informationPoison 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 informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More informationMicrosoft Word - Armjtag_문서1.doc
ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More informationKEY 디바이스 드라이버
KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More information6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO
Windows 7 설치및 PCIE RAID 설정정보 DK173 초판 11월 2016 A. Windows 7 및 USB 드라이버설치 칩셋사양에따라 Windows 7 설치중에 USB 키보드 / 마우스를사용하려면시스템에서 USB 드라이버를사전로드해야합니다. 이절에서는 USB 드라이버사전로드방법과 Windows 7 설치방법에대해서설명합니다. 방법 1: SATA ODD
More informationCisco FirePOWER 호환성 가이드
Cisco 호환성가이드 Cisco 호환성 이문서에서는 Cisco 소프트웨어와하드웨어의호환성및요건을다룹니다. 추가 릴리스또는제품정보는다음을참조하십시오. 설명서로드맵 : http://www.cisco.com/c/en/us/td/docs/security/firesight/ roadmap/firesight-roadmap.html Cisco ASA 호환성가이드 : http://www.cisco.com/c/en/us/td/docs/security/asa/compatibility/
More information< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10
(https://www.kisarbl.or.kr) < 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 Ⅰ. 개요 실시간스팸차단리스트 (RBL) 는메일서버를운영하는누구나손쉽게효과적으로스팸수신을차단하는데이용할수있도록한국인터넷진흥원 (KISA)
More informationMicrosoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with
More informationMicrosoft 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<C1A4C8B8BFF8C6F2B0A15FB1E2BCFAB9AEBCAD5F444B4F4D5FC0CCB5BFBCF62E687770>
DKOM을이용한은닉기법 이동수 alonglog@is119.jnu.ac.kr 개 요 유저모드에서프로세스나디바이스드라이버등을확인할수없도록만드는기법중하나가커널 Hooking과 DKOM 기법이있다. DKOM 기법은 Hooking과다르게커널개체를직접변경한다. 이는 Hooking보다훨씬강력하고탐지가힘들다. 이문서에서는 DKOM에대해서다룰것이다. DKOM 기법을통해다양한효과를얻을수있다.
More informationSSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름..
SSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : whiteexplod@naver.com 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름... 2 1. User Level... 2 2-1. 소프트웨어인터럽트 0x2E에의한커널모드짂입방식...
More informationMango-IMX6Q mfgtool을 이용한 이미지 Write하기
Mango-IMX6Q mfgtool 을 이용한이미지 Write 하기 http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationLab 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[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationPathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.
PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는
More information비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리
ArcGIS for Desktop 10.4 Single Use 설치가이드 Software: ArcGIS for Desktop 10.4 Platforms: Windows 10, 8.1, 7, Server 2012, Server 2008 ArcGIS for Desktop 10.4 시스템 요구사항 1. 지원 플랫폼 운영체제 최소 OS 버전 최대 OS 버전 Windows
More informationFrama-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 informationMicrosoft 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 informationWinDBG 실무
주식회사하제소프트 (www.hajesoft.co.kr) 강사이봉석 과정소개 윈도우응용프로그램, 윈도우서비스프로그램, 윈도우디바이스드라이버를개발하는개발자들로하여금고급디버깅기술을제공하는 윈도우디버거 (WinDBG) 사용방법을익히게하여, 고급시스템프로그래머를양성하는데있습니다 윈도우디버거 (WinDBG) 를사용하는개발자는실무에서고급시스템프로그래머가갖추어야할중요한디버깅지식을습득함과동시에시간과비용을최대한아끼는프로그래밍습관과우수한결과물을만들어낼수있습니다
More information게시판 스팸 실시간 차단 시스템
오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP
More informationMF5900 Series MF Driver Installation Guide
한국어 MF 드라이버설치설명서 사용자소프트웨어 CD-ROM................................................ 1.................................................................... 1..............................................................................
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
More information윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용
일, 12/27/2009-18:11 bonkora 첨부 파일 1.png [1] 2.png [2] 3.png [3] 4.png [4] 5.png [5] 6.png [6] 7.png [7] 8.png [8] 9.png [9] 10.png [10] 11.png [11] study4etcl.zip [12] 파일 크기 11.91 KB 19.69 KB 21.67 KB
More informationMicrosoft 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학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More information리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.
3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3Rabbitz Book 애플리케이션파일다운로드하여압축파일을풀고복사합니다. 3. 3Rabbitz Book 실행합니다.
More informationOnTuneV3_Manager_Install
OnTuneV3.1 Manager 설치하기 # 사전준비사항 - Manager Version 3.1.6-2010-06-21 TeemStone 1. OnTune Manager를설치할 NT 서버 - Windows 2000, Windows 2003, Windows 2008, Windows XP, Windows Vista, Windows 7 등 Windows 2000이후모든
More informationPowerPoint 프레젠테이션
공개 SW 솔루션설치 & 활용가이드 시스템 SW > 가상화 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리 - 3-1.
More informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More informationSQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자
SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전
More information<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설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
More informationMVVM 패턴의 이해
Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어
More informationDBMS & 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 informationMicrosoft PowerPoint - chap10-함수의활용.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아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상
Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More informationDE1-SoC Board
실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically
More informationAdobe Flash 취약점 분석 (CVE-2012-0754)
기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker
More informationMicrosoft PowerPoint - 권장 사양
Autodesk 제품컴퓨터사양 PRONETSOFT.CO 박경현 1 AutoCAD 시스템사양 시스템요구사양 32 비트 AutoCAD 2009 를위한시스템요구사항 Intel Pentium 4 프로세서 2.2GHz 이상, 또는 Intel 또는 AMD 듀얼 코어프로세서 16GH 1.6GHz 이상 Microsoft Windows Vista, Windows XP Home
More informationMF Driver Installation Guide
Korean MF 드라이버 설치설명서 사용자 소프트웨어 CD-ROM... 드라이버 및 소프트웨어 정보...1 지원되는 운영 체제...1 MF 드라이버 및 MF Toolbox 설치... [쉬운 설치]를 사용한 설치...2 [사용자 정의 설치]를 사용한 설치...10 USB 케이블 연결(USB를 이용해 연결하는 경우만)...20 설치 결과 확인...21 온라인
More informationSIGIL 완벽입문
누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More informationMicrosoft Word doc
2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.
More information..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A
..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * Amazon Web Services, Inc.. ID Microsoft Office 365*
More informationWinDBG 실무
하제소프트 주식회사하제소프트 (www.hajesoft.co.kr) 강사이봉석 하제소프트 과정소개 윈도우응용프로그램, 윈도우서비스프로그램, 윈도우디바이스드라이버를개발하는개발자들로하여금고급디버깅기술을제공하는 윈도우디버거 (WinDBG) 사용방법을익히게하여, 고급시스템프로그래머를양성하는데있습니다 윈도우디버거 (WinDBG) 를사용하는개발자는실무에서고급시스템프로그래머가갖추어야할중요한디버깅지식을습득함과동시에시간과비용을최대한아끼는프로그래밍습관과우수한결과물을만들어낼수있습니다
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationHLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :
HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More information이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론
이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN
More information취약점분석보고서 [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