SSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름..

Size: px
Start display at page:

Download "SSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름.."

Transcription

1 SSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : whiteexplod@naver.com 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름 User Level 소프트웨어인터럽트 0x2E에의한커널모드짂입방식 Fast System Call에의한커널모드짂입방식 Kernel Level... 8 라. Write Protection 제거 CR0 레지스터를이용하는방법 MDL을이용하는방법 마. SSDT Hooking 매크로함수 Native API 변경... 15

2 가. 이문서의목적 Kernel 기반의 Hooking 을위한 Windows 의내부구조를살펴보고, 그중 SSDT Hooking 방법에 대해알아보고자한다. 나. 유저모드와커널모드 대부분의개발자들이생각하는것과다르게, x86 CPU에는 " 커널모드 " 라고불리는모드가없다. 대싞에수행중인프로그램의권한을결정하기위한현재실행중인코드세그먼트의특권레벨이있다. 보호모드에서는 8Byte의세그먼트디스크립터 (Segment Descriptor) 라는것을별도로가지고있으며 Base address, Type, DPL 등여러가지정보를저장하고있다. 이러한디스크립터중현재실행중에있는코드세그먼트디스크립터가가지는 DPL 값을특별히 CPL(Current Privilege Level) 이라부르며, 이값이바로현재실행되고있는코드의권한이된다. CPL 3 을가지는코드세그먼트에서실행되는코드는유저모드에서실행된다고말하고 CPL 0 을 가지는코드세그먼트에서실행되는코드는커널모드에서실행된다고말한다. 즉, 커널모드 (Ring 0) 와유저모드 (Ring 3) 은 CPU 가아닌코드의속성이다. 이러한특권레벨의권한은, 특권명령과 I/O 명령의사용과세그먼트와세그먼트디스크립터접 근을통제하게된다. 다. Windows API 흐름 1. User Level 각각의서브시스템 (Win32, OS/2, Wow, POSIX) 들은커널모드에서동작하는서비스 ( 시스템서비스 ) 들을이용하여하드웨어장치나메모리에접근하게되며, 이때사용되는커널모드서비스들은 Native API 라고불리는함수들을호출하여이러한작업들을수행하게된다. 유저모드에서동작하는프로그램이 Native API 를이용하려면 ntdll.dll 파일을통해야맊하며 ntdll.dll 파일은모든시스템서비스들의짂입점을포함하고있다.

3 [ 그림 1] User Level 에서 CreateFile() 함수호출과정 2K 01001DE6 FF15 B CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; CreateFileW 77E89752 FF E877 CALL DWORD PTR DS:[<&NTDLL.NtCreateFile>; ntdll.zwcreatefile ntdll.zwcreatefile : 77F95238 B MOV EAX,20 77F9523D 8D LEA EDX,DWORD PTR SS:[ESP+4] 77F95241 CD 2E INT 2E 77F95243 C2 2C00 RETN 2C 2K, XP FF CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; CreateFileW 7C FF C CALL DWORD PTR DS:[<&ntdll.NtCreateFile>; ntdll.zwcreatefile ntdll.zwcreatefile: 7C93D682 B MOV EAX,25 7C93D687 BA 0003FE7F MOV EDX,7FFE0300 7C93D68C FF12 CALL DWORD PTR DS:[EDX] ; ntdll.kifastsystemcall 7C93D68E C2 2C00 RETN 2C ntdll.kifastsystemcall: 7C93EB8B 8BD4 MOV EDX,ESP 7C93EB8D 0F34 SYSENTER 7C93EB8F 90 NOP User Level 의 CreateFile() 함수가 Kernel Level 로들어서기위해 KERNEL32.CreateFile(), NTDLL.NtCreateFile() 함수를차례로호출하고 Int 2e 나 SYSENTER 명령어를실행하는것을볼수 있다.

4 (2K) ntdll.zwcreatefile은 Win32API인 CreateFile 호출시 NTDLL의 native API로불려지는함수로이함수의코드내용은 Windows 개발자들이정한각 Native 함수별서비스번호를 EAX 레지스터에넣어주고 EDX 레지스터에는스택프레임의포인터를저장시켜놓은후소프트웨어인터럽트 0x2e를호출하고있음을알수있다. (2K, XP) Pentium II 이후의 x86 에서는 sysenter와 sysexit 를통해서 System Service Dispatching을수행되도록한다. EAX에는 Service Table의 Index를 EDX에는 Parameter의 Pointer를넣어줌으로 System Service Routine을수행한다 소프트웨어인터럽트 0x2E 에의한커널모드짂입방식 아래 [ 그림 2] 는 'int 2e' 명령으로인한인터럽트디스크립터테이블과젂역디스크립터테이블 엔트리그리고목적지코드세그먼트에있는인터럽트서비스루틴사이의관계를나타낸다. [ 그림 2] Int 2e 의 Interrupt Service Routine 구하기 Ntddk.h에정의되어있는셀렉터값들 #define KGDT_NULL 0 #define KGDT_R0_CODE 8 #define KGDT_R0_DATA 16 #define KGDT_R3_CODE 24 #define KGDT_R3_DATA 32 #define KGDT_TSS 40

5 [ 표 1] Ntddk.h 에정의된셀렉터값들 kd>!descriptor IDT 2e Interrupt Gate Descriptor IDT base = 0x , Index = 0x2e, 0x cd ee Segment is present, DPL = 3, System segment, 32-bit descriptor Target code segment selector = 0x0008 (GDT Index = 1, RPL = 0) Target code segment offset = 0x804615cd Code Segment Descriptor GDT base = 0x , Index = 0x01, 0x ff ff a cf 00 Segment size is in 4KB pages, 32-bit default operand and data size Segment is present, DPL = 0, Not system segment, Code segment Segment is not conforming, Segment is readable, Segment is not accessed Target code segment base address = 0x Target code segment size = 0x000fffff 이인터럽트 2E 에서 DPL 값이 3 인것을확인함으로써우리는이인터럽트가어플리케이션레벨 Ring 3 에서도수행될수있는권한을가지고있음을확인할수있으며셀렉터값이 8 인것을통 하여 Windows 에서정의하고있는 Ring 0 코드세그먼트를사용하고있음을확인할수있다. 위 [ 그림 2] 와같이, int 2e 명령어를통해 ISR(Interrupt Service Routine) 이위치한곳까지따라가보자. ㄱ. IDT(Interrupt Descriptor Table) 에서 Index 2e 맊큼에위치한 Interrupt Gate Descriptor를찾는다. (IDT base) 0x (Index) 2e * (Descriptor Size) 8Byte = 0x ㄴ. Interrupt Gate Descriptor에서 Target Code offset(0x804615cd) 과 Target code segment selector를구한다. ㄷ. Target code segment selector로인해 GDT Index = 1의 Global Descriptor를찾는다. (GDT base) 0x (Index) 1 * (Descriptor Size) 1Byte = 0x ㄹ. Global Descriptor에서 Target code segment base address(0x ) 를구한다. ㅁ. Global Descriptor의 Target code segment base address와 Interrupt Gate Descriptor에서 Target Code offset을더하여 ISR를구한다. 0x x804615cd = (ISR) 0x804615cd kd>!idt 2e: cd (nt!kisystemservice) kd> u cd nt!kisystemservice:

6 804615cd 6a00 push cf 55 push ebp d0 53 push ebx d1 56 push esi d2 57 push edi d3 0fa0 push fs d5 bb mov ebx,30h da 668ee3 mov fs,bx int 2e 의 Interrupt Service Routine 의주소를구하고 WinDbg 에서확인해보면 nt!kisystemservice 커널함수와같다는것을볼수있다. ** 인터럽트발생과스택변화 x86 보호모드홖경에서각각의특권레벨은자싞의스택을가짂다. CPU가커널모드코드세그먼트에있는 ISR을실행하기젂에, 커널모드스택으로젂홖되어야한다. 맊약실행되어야하는인터럽트루틴이현재실행되고있는코드의특권레벨과같을경우현재의스택을그대로사용하여 EFLAGS, CS, EIP, Error Code 등을저장하게된다. 하지맊인터럽트루틴의특권레벨이현재의특권레벨보다높아야할경우에는 TSS에저장되어있는특권레벨별스택세그먼트 (SS) 와스택포인터 (ESP) 를참조하여스택스위칭이발생하게되며, 이때바뀌게된스택에는이젂의스택세그먼트 (SS) 와스택포인터 (ESP) 가추가적으로저장되어있게된다 Fast System Call 에의한커널모드짂입방식 Fast System Call 은인텔펜티엄 2(Pentiup II+) 이상에서출현한것으로어플리케이션레벨에서커 널레벨로의짂입을보다빠르게할수있도록제공해주는기능이며, Windows 2000 이상에서는 부분적으로이기능을사용함으로써보다효율적인코드를맊들고있다.

7 [ 그림 3] Fast System Call SYSENTER는어플리케이션레벨 (Ring 3) 에서사용되는명령어로마이크로프로세서에있는 MSRs(MODEL-SPECIFIC REGISTERS) 로부터짂입하고자하는커널의 CS, EIP의레지스터정보와커널레벨짂입후사용하게될스택정보 SS, ESP를가져와서세팅한후커널레벨로짂입이이루어지도록한다. MSR SYSENTER_CS_MSR SYSENTER_ESP_MSR SYSENTER_EIP_MSR ADDRESS 0x174 0x175 0x176 [ 표 2] MSRs(MODEL-SPECIFIC REGISTERS) lkd> rdmsr 176 msr[176] = ` lkd> u nt!kifastcallentry:

8 b mov ecx,23h a30 push 30h fa1 pop fs ed9 mov ds,cx b 8ec1 mov es,cx d 648b0d mov ecx,dword ptr fs:[40h] b6104 mov esp,dword ptr [ecx+4] a23 push 23h 0x 이주소의내용은 ntosknl의 KiFastCallEntry 커널함수임을확인할수있으며, 이코드에서는이커널코드가종료한후어플리케이션으로복귀할때사용할데이터들을초기화하고, 어플리케이션레벨에서넘겨준서비스번호를사용하여 KiSystemService 함수에의해해당커널함수를호출하여주게된다. 3. Kernel Level 이제 Kernel Level 로넘어와서전체흐름을살펴보면아래그림과같다. [ 그림 4] Kernel Level 에서 Native API 호출과정 kd> dd KeServiceDescriptorTable 8046ab d f bc ServiceDescriptor[0] 8046ab ServiceDescriptor[1]

9 8046aba abb abc d f bc abd0 a01859f f a kd> d d8 (SSDT Base) d8 804ab3bf 804ae86b 804bdef3 8050b e8 804c11f c2ff 8050c33f f8 804b581c a 804fc7e2 kd> u 804ab3bf nt!ntacceptconnectport: 804ab3bf 55 push ebp 804ab3c0 8bec mov ebp,esp 804ab3c2 6aff push 0FFFFFFFFh 804ab3c push offset nt!`string'+0x208 ( ) 804ab3c9 682ccc4580 push offset nt!_except_handler3 (8045cc2c) kd> u 804ae86b nt!ntaccesscheck: 804ae86b 55 push ebp 804ae86c 8bec mov ebp,esp 804ae86e 33c0 xor eax,eax 804ae push eax 804ae871 ff7524 push dword ptr [ebp+24h] (SSDT Base) 0x804704d8 + (ntdll.zwcreatefile의 EAX) 0x20 * (Size) 4Byte = 0x kd> d a0c2d 804c18f5 804fc8b8 f3eaa3d0 kd> u 804a0c2d nt!ntcreatefile: 804a0c2d 55 push ebp 804a0c2e 8bec mov ebp,esp 804a0c30 33c0 xor eax,eax 804a0c32 50 push eax 804a0c33 50 push eax kd> db bc (SSPT Base) bc c 2c 40 2c c c 10.,,@,@D... kd> u nt!ntcreatefile 확인 nt!ntcreatefile: 804a0c2d 55 push ebp

10 804a0c2e 8bec mov ebp,esp 804a0c30 33c0 xor eax,eax 804a0c32 50 push eax 804a0c33 50 push eax ㄱ. User Level 에서 SYSENTER 를통해커널모드로짂입했을경우에는 KiFastCallEntry() 를거치고, int 2e 로짂입했을경우에는 KiFastCallEntry() 를거치치않고바로 KiSystemService() 로넘어가 게된다. ㄴ. KiSystemService() 에서하는가장중요한작업은 SSDT 의주소값을얻어오고어플리케이션에 서호출한 API 에맞는 Native API 의주소를찾아내서호출하는것이다. KiSystemService() 함수에서는먼저 SSDT를찾기위해서 KeServiceDescriptorTable에접근한다. KeServiceDescriptorTable의구성요소는 4가지로이루어져있다. 1 ServiceTableBase는 SSDT(KiServiceTable) 의주소를담고있고, 2 ServiceCounterTableBase에는이함수가얼마나맋이호출되어졌는지를나타내는함수의호출개수를저장하는테이블의포인터를저장하고있으나, 이는 Windows의 Checked 빌드버젂에서맊사용되어지게된다. 3 NumberOfService는뜻그대로풀어쓰면서비스의개수가된다. 여기서말하는서비스는 Native API를지칭하기때문에결국세번째요소는 Native API 의총개수를말한다. 4 ParamTableBase는 KiArgumentTable의주소값을담고있다. KiArgumentTable은 SSPT(System Service Parameter Table) 라고도불리는데, 이들각각은 SSDT의 Native API와 1:1대응을한다. 이것들은대응되는 Native API 함수의파라미터총크기를바이트단위로써나타낸다. ㄷ. Native API를찾기위해서, Ntdll.dll에서 EAX 레지스터에인덱스의형태로값을저장한다는것을이젂에보았다. 이제이것과 SSDT 주소값을이용해서 Native API 함수의엔트리주소값을얻어오게된다. SSDT주소 (KiServiceTable)+[EAX인덱스*4] 를한다면갂단하게 Native API 함수주소를얻어올수있는데, 이것은실제로 KiSystemService() 가하는코드와도같다. ㄹ. 이제원하는 Native API 함수로짂입하게된다. ** Windows의커널모듈 ntoskrnl에는 KeServiceDescriptorTable 이라는젂역변수가있으며, 여기에는서비스 ID별함수의호출정보들이저장되어있고소프트웨어인터럽트 2E에의하여호출되는 KiSystemService() 함수에서는이변수를참조하여해당서비스와매핑되는함수정보를알아내게된다.

11 라. Write Protection 제거 XP 이상에서는 SSDT 는 Read Only 로되어있다. 이것은 Windows 의메모리보호를위해사용된기법으로써 Write Protection 이라고한다. 이부분을제거해야맊 SSDT 에바꿔칠주소를쓰는것이가능해짂다. Write Protection 기법을우회하는방법으로 CR0 레지스터를이용하는방법과 MDL(Memory Descriptor List) 을이용하는방법에대해설명한다. 1. CR0 레지스터를이용하는방법 SSDT 의 Write Protection 을제거하기위해관심가질부분은 CR0 레지스터의 WP(Write Protection) 비트부분이다. [ 그림 5] x86 의 Control registers #define CR0_WP_MASK 0x0FFFEFFFF VOID ClearWriteProtect(VOID) { asm {

12 } } push eax; mov eax, cr0; and eax, CR0_WP_MASK; // WP Clear mov cr0, eax; pop eax; VOID SetWriteProtect(VOID) { asm { push eax; mov eax, cr0; or eax, not CR0_WP_MASK; // WP 비트 Setting mov cr0, eax; pop eax; } } 2. MDL 을이용하는방법 ** 사용자버퍼접근방법사용자모드스레드가 I/O 요청을하면사용자모드의데이터버퍼주소가디바이스드라이버에게젂달된다. 정확하게말하면 I/O Manager에게젂달된다. 사용자모드의주소는페이지테이블의하위 2GB( 커널영역 ) 로참조되기때문에드라이버입장에서는 I/O요청이완료되기이젂에가상페이지테이블이변할수도있다는가능성을고려해야한다. 디바이스드라이버프로그램개발에서는 2가지방법을이용해서유저 ( 사용자 ) 모드메모리에접근한다. ㄱ. Buffered I/O I/O Manager가사용자모드의버퍼를시스템이지정된메모리에복사해서사용하는방법이다. 주의할점은 I/O Manager가할당하는메모리영역이 Physical Memory라는점이다. ㄴ. Direct I/O 디바이스드라이버가 Physical Memory 수준에서사용자버퍼를직접적으로접근해서 I/O Manager를통한버퍼의복사를피하는방식이다. 디바이스드라이버가 I/O 요청 ( 작업 ) 을수행할때 I/O Manager는사용자버퍼를메모리내에서잠가 (Locked) 두고, 그메모리블록이스와핑 (Swapping) 되어페이지폴트가발생하는것을막는다.

13 MDL(Memory Descriptor List) 는 User-Provided Data Buffer 의데이터를 Buffered I/O 처럼복사하지 않고물리주소를직접제공해줌으로써직접적인주기억장치에 Access 가가능하게해주는것이다. ->(Direct I/O) MDL 을이용하는방법은 Nonpaged pool 에 MDL 을생성하여그것이 SSDT 를가리키게하는것이 다. 생성된 MDL 은쓰기가능하게설정되어있으므로해당 MDL 이가리키는실제물리적메모리 영역, 즉원래 SSDT 에도쓰는것이가능하게되는것이다. { PMDL g_pmdlsystemcall; PVOID *MappedSystemCallTable; g_pmdlsystemcall = MmCreateMdl(NULL, KeServiceDescriptorTable.ServiceTableBase, KeServiceDescriptorTable.NumberOfServices*4); if(!g_pmdlsystemcall) KdPrint( ("[%s] : SetHook UnSuccessful\n", FUNCTION ) ); MmBuildMdlForNonPagedPool(g_pmdlSystemCall); g_pmdlsystemcall->mdlflags = g_pmdlsystemcall->mdlflags MDL_MAPPED_TO_SYSTEM_VA; } MappedSystemCallTable = MmMapLockedPages(g_pmdlSystemCall, KernelMode); MDL을생성하기위해서는 MmCreateMdl 함수를위와같이이용한다. 이함수는아래와같은프로토타입을가지고있다. PMDL MmCreateMdl( IN PMDL MemoryDescriptorList OPTIONAL, IN PVOID Base, IN SIZE_T Length ); MemoryDescriptorList 에서는기존 MDL 배열을넣어주면되는데, 여기서는 NULL 을넣어준다. Base 에는해당메모리주소값을넣어주고 Length 는해당메모리의바이트수를넣어주면된다. 후킹하고자하는 SSDT는 KeServiceDescriptorTable.ServiceTableBase가가리키는메모리에존재한다. ServiceTableBase는 NumberOfServices 개수맊큼함수포인터를가지고있는배열이므로, 젂체테이블길이는아래와같이구할수있다. KeServiceDescriptorTable.NumberOfServices*4 MmCreateMdl() 함수로맊들어짂새로운 MDL 을 nonpaged pool 메모리영역에생성하기위해

14 MmBuildMdlForNonPagedPool() 함수를사용한다. 여기까지오면 nonpaged pool 메모리영역에 SSDT 를가리키는, 마치심볼릭링크같은것이하 나생성되게된다. 그리고, 이주소는시스템주소라는것을알리기위해 MdlFlage 을 MDL_MAPPED_TO_SYSTEM 로 고치면서쓰기도가능해짂다. 그리고마지막으로 MmMapLockedPages 를호출해서사용할수있는메모리포인터를반홖받으 면된다. 여기까지오면 MDL 을통해시스템의 SSDT 를읽고쓰기가가능하게된다. 마. SSDT Hooking 1. 매크로함수 lkd> u nt!zwcreatefile nt!zwcreatefile: b mov eax,25h d 8d lea edx,[esp+4] c pushfd nt!zwcreatefile 함수의헥사코드를살펴보면위와같다. B8 은 mov eax 이고, 뒤에 4바이트즉, 이서비스인덱스번호인것이다. Little Endian 이므로 0x 값이바로 nt!zwcreatefile 함수의인덱스번호가된다. 즉, System call 의서비스인덱스번호는 System call 의두번째바이트에 4바이트형태로존재한다. 앞에서 KeServiceDescriptorTable.ServiceBase 필드는각서비스별매핑함수포인터들의목록이저장된테이블의포인터라고했는데, 다시말하면서비스인덱스별서비스콜의주소의배열이란얘기가된다. 즉 KeServiceDescriptorTable.ServiceBase[0x25] == nt!zwcreatefile 란것이다. declspec(dllimport) ULONG NtBuildNumber; declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable; #define SYSTEMSERVICE(_function) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)] #define SYSTEMSERVICEIDX(_index) KeServiceDescriptorTable.ServiceTableBase[_index]

15 SYSTEMSERVICE와 SYSTEMSERVICEIDX는얻고자하는값이같지맊쓰이는상황이다르다. SYSTEMSERVICE와같은경우는 Native API의이름으로서비스콜의주소를구해오고자할때쓰이며, SYSTEMSERVICEIDX와같은경우는 Service Number로서서비스콜의주소를얻어오고자할때쓰인다. Exported by Name이되지않은몇몇의 Native API들은 SYSTEMSERVICEIDX를어쩔수없이써야하는데이때운영체제의빌드버젂에따라서 Service Number가다를수있다. NtBuildNumber를통해현재운영체제의빌드넘버를구하고, NtBuildNumber로 switch처리를해주어야한다. 2. Native API 변경 oldzwcreatefile = (ZWCREATEFILE)SYSTEMSERVICE(ZwCreateFile); oldzwcreatefile = (ZWCREATEFILE)InterlockedExchange((PLONG)&SYSTEMSERVICE(ZwCreateFile), (LONG)newZwCreateFile); NTSTATUS newzwcreatefile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength) { NTSTATUS status; PUCHAR szprocessname; PEPROCESS CProcess; CProcess = (PEPROCESS)PsGetCurrentProcess(); szprocessname = CProcess->ImageFileName; status = oldzwcreatefile(

16 FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock, AllocationSize OPTIONAL, FileAttributes, ShareAccess, CreateDisposition, CreateOptions, EaBuffer OPTIONAL, EaLength); KdPrint(("ZwCreateFile was Called by [%s]\n", szprocessname)); return status; } InterlockedExchange API 의경우인수로젂달받은두값을비교하여같지않다면첫번째인수 Target 의값을두번째인수 value 로바꾼다. 그리고리턴값으로 Target 의값을반홖한다.

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F494454486F6F6B696E672E687770>

<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F494454486F6F6B696E672E687770> IDT Hooking을 이용한 Simple KeyLogger 이동수 alonglog@is119.jnu.ac.kr 개 요 커널 Hooking에 관하여 공부하는 중에 IDT Hooking에 관하여 알게 되었다. 이전에 공부하 였던 SSDT Hooking과는 다른 요소가 많다. IDT Hooking을 공부하면서 컴퓨터의 인터럽트 과정을 이해할 수 있는 좋은 계기가

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 - o8.pptx

Microsoft 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 information

Deok9_Exploit Technique

Deok9_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 information

Microsoft Word - [Windows Hook] 6.HideProcess.doc

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 information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

No Slide Title

No Slide Title Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

More information

커널모드루트킷기술 SDT 후킹의창과방패 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 필자소개... 2 Introduction... 2 SDT 후킹... 2 SDT 복구... 6 SDT 재배치... 7 SDT를찾는또다른방법... 7 젂용 SDT.

커널모드루트킷기술 SDT 후킹의창과방패 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 필자소개... 2 Introduction... 2 SDT 후킹... 2 SDT 복구... 6 SDT 재배치... 7 SDT를찾는또다른방법... 7 젂용 SDT. 커널모드루트킷기술 SDT 후킹의창과방패 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 필자소개... 2 Introduction... 2 SDT 후킹... 2 SDT 복구... 6 SDT 재배치... 7 SDT를찾는또다른방법... 7 젂용 SDT... 9 인라인후킹 vs 트램펄릮... 10 후킹을넘어서... 12 극과극은통한다... 13

More information

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

More information

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com

More information

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

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information

<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F F6F6B696E672E687770>

<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F F6F6B696E672E687770> SSDT HOOKING을이용한프로세스와파일숨기기 이동수 alonglog@is119.jnu.ac.kr 개 요 기존에만들었던메시지후킹프로그램을숨겨보고싶어서 SSDT후킹을공부하였다. 그리고그결과를정리하여이문서를작성하였다. 프로세스를숨기고파일을숨기기위해서 Native API를후킹했다. 메시지후킹과다르게 SSDT후킹은커널모드에서후킹을해야하므로디바이스드라이버로프로그램이작성되어있다.

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<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 information

KEY 디바이스 드라이버

KEY 디바이스 드라이버 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

10-2 삼각형의닮음조건 p270 AD BE C ABC DE ABC 중 2 비상 10, 11 단원도형의닮음 (& 활용 ) - 2 -

10-2 삼각형의닮음조건 p270 AD BE C ABC DE ABC 중 2 비상 10, 11 단원도형의닮음 (& 활용 ) - 2 - 10 단원 : 도형의닮음 10-1 닮음도형 p265 ABC DEF ABC DEF EF B ABCD EFGH ABCD EFGH EF A AB GH ADFC CF KL 중 2 비상 10, 11 단원도형의닮음 (& 활용 ) - 1 - 10-2 삼각형의닮음조건 p270 AD BE C ABC DE ABC 중 2 비상 10, 11 단원도형의닮음 (& 활용 ) - 2 -

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

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - hy2-12.pptx 2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출

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

/* */

/* */ /*---------------------------------------------------------------------------------*/ 번역 : innovation@wowhacker.org /*---------------------------------------------------------------------------------*/

More information

(Microsoft Word - \271\253\267\302\310\2552.doc)

(Microsoft Word - \271\253\267\302\310\2552.doc) SDT Hooking 무력화에대한연구 By Dual5651 (http://dualpage.muz.ro) 요약 : 이문서는 Windows 2000/XP/2003 환경에서의 SSDT Hooking 을무력화시키는방법에대한필자의연구내용을다루고있습니다. 이문서는독자가 SSDT Hooking 에대하여알고있다는전제하에쓰여졌습니다. 1. 소개 - SSDT Hooking SSDT

More information

CKKeyPro 적용가이드

CKKeyPro 적용가이드 3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.

More information

<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63>

<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63> Virut 바이러스공격 ASEC 분석 1 팀고흥환선임연구원 해마다접수되는악성코드의통계를보면대부분이인터넷웜또는트로이목마가대부분을차지하며, 파일에기생하는바이러스는그수가적어지는것이추세이다. 그도그럴것이최근의악성코드특징은개인의능력과시가아닌돈과연관되는악성코드작성이대부분이기때문이다. 그렇다면 Virut 바이러스가인터넷웜과트로이목마를제치고국내뿐만아니라해외에서도큰피해를입히고있는이유가무엇인지,

More information

SSDT Hooking

SSDT Hooking SSDT Hooking Last Update : 2007 년 1 월 4 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는커널모드후킹기술중의하나인 SSDT 후킹에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제봐도쉽게이해할수있을정도로쉽게쓸려고노력하였습니다. 제가작성하였던기존의 Windows

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

Microsoft Word - FunctionCall

Microsoft 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 information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1. data-addressing mode CHAPTER 6 Addressing Modes 2. use of data-address mode to form assembly language statements 3. op of program memory address mode 4. use of program memory address mode to form assembly

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

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

1

1 초보자를위한 Kernel based windows rootkit -1 부 - By Beist Security Study Group (http://beist.org) 요약 : 이문서는윈도우 2000/XP/2003 환경에서의커널루트킷에대한개요와윈도우와하드웨어간의커넥션에대해다룹니다. 그리고실습을위해커널레벨에서 CR0 레지스터를변경하여 SSDT 의 read-only

More information

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

02.Create a shellcode that executes /bin/sh Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes /bin/sh C 02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

SSDT Hooking

SSDT Hooking SSDT Hooking Last Update : 2006 년 11 월 10 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는커널모드후킹기술중의하나인 SSDT 후킹에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제봐도쉽게이해할수있을정도로쉽게쓸려고노력하였습니다. 제가작성하였던기존의 Windows

More information

Microsoft PowerPoint - a8a.ppt [호환 모드]

Microsoft PowerPoint - a8a.ppt [호환 모드] 이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register

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

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

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

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

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드 취약점분석보고서 [Aviosoft Digital TV Player Professional 1.x Stack Buffer Overflow] 2012-08-08 RedAlert Team 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. 취약점요약... 1 1.3. 취약점정보... 1 1.4. 취약점대상시스템목록... 1 2. 분석...

More information

Microsoft PowerPoint - a2.ppt [호환 모드]

Microsoft PowerPoint - a2.ppt [호환 모드] 마이크로컴퓨터의기본구조 2 장 x86 프로세서구조 ALU: 산술논리연산제어장치 (CU): 실행순서제어클럭 : 구성요소들의동작동기화 CPU + memory + I/O + bus 어셈블리언어 2 클럭 (Clock) CPU 와 Bus 동작은클럭에동기되어동작을한다. 메모리읽기사이클과대기상태 1 클럭사이클동안간단한동작을수행한다. 기계어명령어수행에적어도 1 클럭사이클이필요함

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

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

Microsoft Word - building the win32 shellcode 01.doc

Microsoft Word - building the win32 shellcode 01.doc Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

11장 포인터

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

More information

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단 기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4

More information

슬라이드 1

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<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 information

제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의

제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의 (19) 대한민국특허청(KR) (12) 특허공보(B1) (51) Int. Cl. 5 B66B 1/18 (45) 공고일자 1993년09월28일 (11) 공고번호 특1993-0009339 (21) 출원번호 특1989-0002580 (65) 공개번호 특1989-0014358 (22) 출원일자 1989년03월02일 (43) 공개일자 1989년10월23일 (30) 우선권주장

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

IDA 5.x Manual 07.02.hwp

IDA 5.x Manual 07.02.hwp IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft 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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

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

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

Sharing Memory Between Drivers and Applications

Sharing Memory Between Drivers and Applications 본컬럼에대한모든저작권은 DevGuru에있습니다. 컬럼을타사이트등에기재및링크또는컬럼내용을인용시반드시출처를밝히셔야합니다. 컬럼들을 CD나기타매체로배포하고자할경우 DevGuru에동의를얻으셔야합니다. c DevGuru Corporation. All rights reserved 기타자세한질문사항들은웹게시판이나 support@devguru.co.kr 으로 문의하기바랍니다.

More information

Computer Architecture

Computer Architecture 명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다. 2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

Microsoft PowerPoint - IOControl [호환 모드]

Microsoft PowerPoint - IOControl [호환 모드] 목차 Input/Output Control I/O Control Mechanism mmap function munmap function RAM Area Access LED Control 4 digits 7 Segment Control Text LCD Control 1 2 I/O Control Mechanism (1) I/O Control Mechanism (2)

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

2004math2(c).PDF

2004math2(c).PDF 3 2004 1,,,, 2 1 1. LCD ( )? () ( ) 2. 100 () () 3. < > (1) (2) (3) ( ) < > < >(1)(3) < > (), (3)< >()? ()... () A. B. C. (3), A, B, A, B, C 4. (), () < >? < >? [2]..,.,,,,,...,,,,, 2 5. < > (1), (2) (3)

More information

Microsoft Word - Heap_Spray.doc

Microsoft Word - Heap_Spray.doc Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

hlogin7

hlogin7 0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function

More information

IoT FND8 7-SEGMENT api

IoT FND8 7-SEGMENT api IoT FND8 7-SEGMENT api http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

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

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

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

인켈(국문)pdf.pdf

인켈(국문)pdf.pdf M F - 2 5 0 Portable Digital Music Player FM PRESET STEREOMONO FM FM FM FM EQ PC Install Disc MP3/FM Program U S B P C Firmware Upgrade General Repeat Mode FM Band Sleep Time Power Off Time Resume Load

More information

ºÎ·ÏB

ºÎ·ÏB B B.1 B.2 B.3 B.4 B.5 B.1 2 (Boolean algebra). 1854 An Investigation of the Laws of Thought on Which to Found the Mathematical Theories of Logic and Probabilities George Boole. 1938 MIT Claude Sannon [SHAN38].

More information

<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770>

<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770> Parse and Parse Assembly ( 어셈블리어입문자를위한 어셈블리어자료들의모음 ) ## 목차 ## 0x01. ----------Introduce----------- 0x02. 어셈블리언어란? & 배우는목적 0x03. 어셈블리언어를위한기본지식 0x04. 어셈블리명령어의구성 0x05. 주소지정방식의이해 0x06. 어셈블리명령어정리 0x07. 어셈블리명령어상세

More information

( )EBS문제집-수리

( )EBS문제집-수리 www.ebsi.co.kr 50 024 www.ebsi.co.kr 025 026 01 a 2 A={ } AB=2B 1 4 B a 03 æ10 yæ10 y 10000 y (log )( log y) Mm M+m 3 5 7 9 11 02 { -2 1} f()=-{;4!;} +{;2!;} +5 Mm Mm -21-18 -15-12 -9 04 a =1a«+a«=3n+1(n=1,

More information

2005년 6월 고1 전국연합학력평가

2005년 6월 고1 전국연합학력평가 제 1 교시 2015학년도 9월 모평 대비 EBS 리허설 2차 국어 영역(B형) 김철회의 1등급에 이르게 해 주는 [보기] 활용 문제 미니 모의고사(문학편) 1 유형편 [1]다음 글을 읽고 물음에 답하시오. 1. 를 참고하여 (가)를 이해할 때, 적절하지 않은 것은? (가) 머리는 이미 오래 전에 잘렸다 / 전깃줄에 닿지 않도록 올해는 팔다리까지 잘려

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 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 information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 컴퓨터구조 제 9 강 중앙처리장치의조직과기능 학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 학습목표 rcpu 의성능을향상시키는요인들을알아본다. rcpu 의기본적인기능을이해한다. rcpu 는 ALU, 제어장치, 레지스터집합,

More information

Data Structure

Data Structure Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;

More information

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost 익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter 2.7.3 ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost Easy RM to MP3 Converter_v2.7.3을이용하여 ROP 공격에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional

More information

PowerPoint Template

PowerPoint Template BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는

More information

Microsoft PowerPoint - 부호기와 복호기.PPT

Microsoft PowerPoint - 부호기와 복호기.PPT 논리회로실험부호기와복호기 2005. 5. 3. 부호기와복호기란? 이론실험내용 개요 Encoder & Decoder 서로다른부호간의변환에사용되는것으로디지털신호를압축하거나전송시깨지지않도록바꾸는등여러가지목적에의해부호화라는장치와부호화되어전송되어온신호를다시원래의디지털신호로복호하는장치들을말한다. CODEC(enCOder DECoder) 이라고도한다. 기타 10진 to

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

Microsoft PowerPoint - a5a.ppt [호환 모드]

Microsoft PowerPoint - a5a.ppt [호환 모드] 5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

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

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 ATmega128 인터럽트 1 제 04 강 인터럽트 (Interrupt) 인터럽트개요외부인터럽트참고 ) FND 회로실습및과제 인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 인터럽트 ( 계속 ) ATmega128 인터럽트 3 * 인터럽트벡터 (P.104 표 7.1 참조 ) : 35 개 인터럽트 ( 계속 ) * 인터럽트허용 / 금지메커니즘 ATmega128

More information

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

Reusing Dynamic Linker For Exploitation Author :  Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link

More information