PowerPoint 프레젠테이션
|
|
- 선화 박
- 6 years ago
- Views:
Transcription
1 Reverse Engineering Basics
2 IA32 Basics
3 CPU(Central Processing Units) 의구조 ALU Register EAX s EBX ECX EDX ESI EDI ESP EBP Control Unit EIP IR Eflags I/O Unit Data Bus Address Bus
4 IA32 Register What is Register? 작은데이터의임시저장공간 연산처리및번지지정을도와줌 컴퓨터의장치들을제어함
5 IA32 Register General Purpose Register Bit Offset AH AL 0 EAX (Accumulator) AX BH BL EBX (Base Register) BX CH CL ECX (Counter Register) CX DH DL EDX (Data Register) DX
6 IA32 Register General Purpose Register Bit Offset SI DI SP BP ESI (Source Index) EDI (Destination Index) ESP (Stack Pointer) EBP (Base Pointer) Instruction Pointer Bit Offset 31 0 EIP Instruction Pointer (Program Counter)
7 IA32 Register Eflags Register 16 Bit 16 Bit O D I T S Z A P C Overflow Flag 16 Bit Sign Flag Carry Flag Zero Flag
8 IA32 Register Debug Register Bit Offset 31 DR0(Hardware Break Point Address) DR1(Hardware Break Point Address) DR2(Hardware Break Point Address) DR3(Hardware Break Point Address) DR4(Reserved) DR5(Reserved) DR6(Debug Status Register) DR7(Debug Control Register) 0 Hardware Break Point 를통해설정된주소값들이저장됨 사용되지않음 인터럽트가발생한원인에대해서알려줌 4 개의 Hardware Break Point 에대한조건을지정해줌
9 Reversing 을위한필수어셈블리
10 MOV(MOVe data) 데이터복사 Source operand의내용을 Destination operand로데이터를복사 Destination operand의내용은변하지만 Source operand의내용은변하지않음 예제.text: mov [ebp+var_c], 0Ah.text: mov eax, [ebp+var_4].text: a mov ecx, eax
11 MOVZX(MOVe with Zero extention) Move with zero extension Source operand 를 Destination operand 로데이터를복사한후나머지비트를 0(Zero) 로채움 부호가없는정수에만사용됨 Destination operand 는반드시레지스터가되어야함 예제.text: mov ebp, esp.text: sub esp, 4.text: mov [ebp+var_4], 12FFC8h.text: D movzx ebx, word ptr [ebp+var_4]
12 MOVZX(MOVe with Zero extention) 8 Bit Data Source Destination 16 Bit Register
13 MOVSX(MOVe with Sign extention) Move with sign extension Source operand 를 Destination operand 로데이터를복사한후나머지비트값을부호확장함 부호있는정수에만사용됨 예제.text: mov [ebp+var_4], 1200C8h.text: movsx edx, word ptr [ebp+var_4].text: c movsx dx, byte ptr [ebp+var_4].text: mov esp, ebp
14 MOVSX(MOVe with Sign extention) Source Operand 의최상위비트를취하여복사를수행 8 Bit Data Source Destination 16 Bit Register
15 MOVS(MOVe String) MOVS Move data from string to string ESI(SI) 가가리키는주소에있는데이터를 EDI(DI) 가가리키는주소로복사 방향플래그 (DF) 가 1이면 ESI(SI) 와 EDI(DI) 는감소하고 0이면증가함 예제.text: sub esp, 18h.text: mov ecx, 6.text: D lea esi, [ebp+var_18].text: mov edi, esp.text: rep movsd
16 MOVS(MOVe String) Lower Lower 7c816FD7 7c816FD7 ESI 7c ESI 7c FFFFFFFF FFFFFFFF EDI 7FFDE000 EDI 7c Higher Higher
17 ADD ADD Source operand 를동일한크기의 Destination operand 에더함 Source operand 는변하지않으며결과값은 Destination operand 에저장됨
18 SUB SUB Destination operand 에서 Source operand 를뺀다 Carry : Destination operand Source operand
19 MUL MUL 부호없는곱셈 AL, AX, EAX 에 8,16,32 비트연산자를곱하는명령어 연산결과는 AX, DX:AX 혹은 EDX:EAX 에저장 (operand size 에의존 ) EAX Register/m32 EDX EAX
20 IMUL IMUL 부호있는곱셈 곱셈부호를유지하는것이외에는 MUL 과동일함 음수부호유지를위한상위 Bit의 Set은 Overflow로취급되지않음 MOV eax, MOV ebx, -423 IMUL ebx h EAX 0FFFFFE59h EBX EDX:EAX FFFFFFFF 86635D80 음수부호유지를위해변경된값
21 DIV DIV 부호없는정수에대해 8, 16, 32 비트나눗셈을수행함 연산결과가저장될레지스터의크기보다큰경우 Integer Overflow 오류가발생함 DX AX AX( 몫 ) Register/m16 DX( 나머지 ) MOV dx, 0 MOV ax, 8003h MOV cx, 100h DIV cx ax = 0080h dx = 0003h
22 IDIV IDIV 부호있는정수에대한나눗셈을수행함 나눗셈수행전 CBW, CWD, CDQ 를통해부호비트를확장 ( 부호보존 ) idiv!start+0x8: MOV eax, cdq CDQ 0:000> r edx edx=7c93eb94 0:000> p cdq 수행전 MOV IDIV ebx, 256 ebx eax=ffff3cb0 ebx=7ffd3000 ecx=0012ffb0 edx=ffffffff esi=01aaf74a edi=01aaf6f2 ( 중략 ) cdq 수행후 ( 부호비트확장 ) idiv!start+0xe: e f7fb idiv eax,ebx 0:000> p eax=ffffff3c ebx= ecx=0012ffb0 edx=ffffffb0 esi=01aef74a edi=01aef6f2 eip= esp=0012ffc0 ebp=0012ffc0 iopl=0 nv up ei pl
23 INC INC( 증가 ) 단일 operand 에 1 을더함 0:000> p eax= ebx=7ffde000 ecx=0012ffb0 edx=7c93eb94 esi=01c6f746 edi=01c6f6f2 eip= esp=0012ffc0 ebp=0012ffc0 iopl=0 nv up ei pl cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl= add!start+0x8: inc eax 0:000> p eax= ebx=7ffde000 ecx=0012ffb0 edx=7c93eb94 esi=01c6f746 edi=01c6f6f2 eip= esp=0012ffc0 ebp=0012ffc0 iopl=0 nv up ei pl
24 DEC DEC( 감소 ) 단일 operand 에 1 을감소시킴 0:000> p eax= ebx=7ffde000 ecx=0012ffb0 edx=7c93eb94 esi=01c6f746 edi=01c6f6f2 eip= esp=0012ffc0 ebp=0012ffc0 iopl=0 nv up ei pl cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl= add!start+0x9: dec eax 0:000> p eax= ebx=7ffde000 ecx=0012ffb0 edx=7c93eb94 esi=01c6f746 edi=01c6f6f2 eip= a esp=0012ffc0 ebp=0012ffc0 iopl=0 nv up ei pl
25 AND AND 두개의 Operand 에서매칭되는비트사이에부울 AND 연산수행후결과값을 Destination operand 에저장함 선택된비트를 Clear 하고나머지를유지할때사용할수있음 AND Cleared Unchanged
26 OR OR 두개의 Operand 에서매칭되는비트사이에부울 OR 연산수행후결과값을 Destination operand 에저장함 선택된비트를 Set 하고다른것을유지할때사용할수있음 OR Unchanged Set
27 XOR XOR(eXclusive OR) 두개의 Operand 에서매칭되는비트사이에부울배타적 OR 연산수행후그결과를 Destination operand 에저장함 패리티점검에사용되기도함 XOR Odd Parity : PF = 0
28 SHL(SHift Left), SHR(SHift Right) Shift Left 피연산자의비트를왼쪽으로이동시키며곱셈과관련된연산 MOV dl, 10 shl dl, 2 Before After Shift Right 피연산자의비트를오른쪽으로이동시키며나눗셈과관련된연산 MOV dl, 32 shr dl, 1 Before After
29 LEA(Load Effective Address) Load Effective Address 두번째 Operand 의주소를계산하고첫번째 Operand 에저장함 [ ] 연산자를제외하고대체로두번째 Operand 로 Expression 이허용안됨 Data MOV eax, edx+4 허용안됨 Data Data EDX EDX+4 MOV eax, [edx+4] 의미가달라짐 EAX LEA eax, [edx+4] LEA 사용
30 SCAS(SCAn String) SCAS AL/AX/EAX 에저장되어있는값과 ES:EDI 가가리키는곳에저장되어있는값을비교 (byte, word, double word) 예제.text: movzx eax, [ebp+arg_4].text: a mov edi, [ebp+arg_0].text: d scasb.text: e jnz short loc_ text: mov eax, 1.text: jmp short loc_40101c.text: loc_401017: ; CODE XREF: _func+ej.text: mov eax, 0.text: C loc_40101c: ; CODE XREF: _func+15j
31 SCAS(SCAn String) SCASB(SCAn String Byte) EDI 가가리키는곳에서 AL 과일치하는 8 비트값을찾음 EAX c816FD7 7c EDI AL SFP [EBP + 4] [EBP + 8]
32 STOS(STOre String) STOS(Store String) AL/AX/EAX 에저장되어있는값을 EDI 레지스터가가리키는곳에저장 (byte, word, double word) 예제.text: call _func.text: add esp, 4.text: lea edi, [ebp+var_4].text: c stosb.text: d movsx eax, byte ptr [ebp+var_4].text: push eax.text: push offset ac ; "%c\n".text: call _printf
33 STOS(STOre String) STOSB(STOre String Byte) AL 의내용을 EDI 가가리키는 offset 위치의메모리에저장 EAX A0 E4 9C 7D 7c816FD7 7c94077D EDI AL SFP [EBP + 4] [EBP + 8]
34 REP(REPeat) REP MOVS, SCAS, STOS 등여러명령어에접두사형식으로사용되며 ECX 레지스터에저장된값만큼해당명령어를반복실행 예제.text: mov [ebp+var_4], offset mov eax, [ebp+var_4].text: push eax ; char *.text: call _strlen.text: add esp, 4.text: C inc eax.text: d mov ecx, eax.text: f mov esi, [ebp+var_4].text: lea edi, [ebp+var_24].text: rep movsb
35 REP(REPeat) REP MOVSD MOVSD 명령을 ECX 레지스터의값만큼반복수행 h ECX h ECX h ECX ABCDEFGH ESI ABCDEFGH ABCDEFGH IJKLMNOP IJKLMNOP ESI IJKLMNOP QRSTUVW QRSTUVW QRSTUVW ESI EDI ABCDEFGH ABCDEFGH EDI IJKLMNOP EDI...
36 Stack 개요 런타임에생성됨 프로그램실행시사용되는메모리영역중하나 Thread 단위로생성 시작위치는 Random ( 대체로비슷한위치에서시작하나, 동일함이보장되지않는다 ) Stack 의용도 임시데이터백업 지역변수저장 ( 주목적 ) 함수매개변수전달 함수호출관련정보 OS 에서필요할때사용
37 Four Types Of Stack Empty Stack & Full Stack top Item2 Item1 <Empty Stack> top Item2 Item1 <Full Stack> Descending Stack & Ascending Stack 0x0012FF7C Item3 0x0012FF84 Item3 0x0012FF80 Item2 0x0012FF80 Item2 0x0012FF84 Item1 0x0012FF7C Item1 <Descending Stack> <Ascending Stack>
38 Stack Operation TOP 4th item 4th item reg 4th item TOP 3rd item 3rd item TOP 3rd item 2nd item 2nd item 2nd item 1st item 1st item 1st item PUSH 4th items POP reg
39 PUSH Stack 에데이터를저장 먼저 ESP 를감소시키고 16 비트나 32 비트 Source operand 를스택에복사함 (IA32 의경우 ) ESP B ESP A A ESP Data Data Data Data Data Data Data PUSH A Data PUSH B Data Data Data Data Data Data Data
40 PUSH 의용도 PUSH 의용도는크게 3 가지 함수 Argument 전달 지역변수를위한공간할당 단순백업.text: _myfunc proc.text: push ebp.text: ; 여기에사용된 push는백업이목적.text: mov ebp, esp.text: push ecx.text: ; 여기에사용된 push는지역변수할당이목적 ( 중간생략 ).text: b push offset adddd ; "%d %d %d %d\n".text: b ; 여기에사용된 push는아규먼트전달이목적.text: call _printf
41 POP POP ESP 가가리키는곳에저장된내용을 Destination operand 에저장후 ESP 값증가 (IA32 의경우 ) ECX B EDX A ESP B B A ESP A A Data Data ESP Data Data Data Data Data POP ECX Data POP EDX Data Data Data Data
42 EIP 값을변경하는명령어 프로그램의흐름을변경할수있는명령어 JMP CALL RET
43 CALL 과 JMP 의차이 CALL vs JMP EIP 백업 CALL 은 EIP 값을변경하기전에스택에백업을해두지만 JMP 는백업하지않고바로변경함 CALL 을함수호출에사용 조건분기 CALL 은조건분기가능한명령어형태가존재하지않으나 JMP 는조건분기가능한명령어형태가존재 JZ, JNZ, JA, JB, JG, JL etc
44 RET RET 의미상 POP EIP 와동일함 (POP EIP 와같은명령은존재하지않음 ) RET POP EIP RET n 의경우 ADD ESP, n 의동작이추가된것과동일함 RET n POP EIP ADD ESP, n
45 LEAVE LEAVE Stack Frame 을릴리즈하는데사용하는명령어 ESP 와 EBP 를프로시저가호출될때할당된값으로복구 아래의코드와동일 MOV ESP, EBP POP EBP 리눅스용컴파일러인 gcc 에서사용
46 Application Binary Interface
47 Application Binary Interface 컴파일된코드 (binary) 와컴파일된코드, 컴파일된코드와 OS 간의인터페이스를정의 호환성유지가최대목적 OS, Architecture, Language 에따라차이점을보임 Byte Order, Data Type 별크기, Alignment 단위, Calling Convention, Object File Format, Name Decoration 등다양한주제를다룸
48 Endianness Multi Bytes 를저장하는순서를정의하고있음 최대 4Byte 단위로적용함 0x Little Endian Big Endian Lower Higher Lower Higher Address Address
49 49 OllyDBG 환경설정
50 OllyDbg 다운로드
51 OllyDbg 다운로드 51
52 Windows 별설명 V I R T U A L A D D R E S S OPCODE ASSEMBLY COMMENTS INFO WINDOW REGISTERS DUMP WINDOW STACK
53 Plugin
54 Ollydbg.ini 수정
55 Ollydbg 를이용한 plugins 등록
56
57
58 Cpu option 설정
59 Win32API Help File 연결 Google 에서 win32api.hlp 검색후다운로드
60 OllyDbg 사용법 Open Restart Program Close Program Run Program Pause Execution Step Into Step Over Trace Into Trace over Execution till return Go to address Show Log Window Show Modules Window Show Memory Window Show Threads Debug할프로그램을염 debug 재시작 debug 종료 Debug 시작 Debug 일시정지한줄씩실행함수도한줄로인식하여한줄씩실행함수안으로들어가면서실행함수도한줄로인식하며실행 Return을만날때까지실행원하는주소로이동 OllyDbg를사용하여 debug한 log를보여줌현재사용하고있는모듈들을보여줌메모리를보여줌사용하고있는 thread를보여줌
61 OllyDbg 사용법 Show Window Show handle Show CPU Show Patchs Show Call Stacks Show BreakPoint Show References Show Trace Show source Debugging Option Appearance Option Help Window에관한정보를보여줌 Handle에과한정보를보여줌메인창으로여러정보를보여줌변화된내용을보여줌 Main Stack에관한정보를보여줌 BreakPoint에관한정보를보여줌 Reference에관한정보를보여줌 Trace실행시실행된결과를보여줌 Source에관한정보를보여줌 Debugging Option 설정 Appearance Option 설정도움말
62 Complied Code Pattern (Variable)
63 기본자료형 정수형 문자형 포인터
64 기본자료형 배열 64
65 기본자료형 구조체 65
66 Quiz 1. 다음내용에맞게문제를푸시오 1. 변수의개수 2. 변수별데이터 3. 변수의크기 2. 출력결과변경 으로변경 2-2. C 로변경 2-3. success 출력 66
67 Complied Code Pattern (Control Statements)
68 Control statements Quiz Success 창이뜨게변경하시오 68
69 Control statements Quiz Success 창이뜨게변경하시오 코드변경없이데이터를입력하여 Success 창을띄우시오 69
70 Control statements Quiz Sum 이 15 일경우출력하도록변경하시오 Sum 이 21 일경우출력결과를 i = x 형식으로 i 의값을출력하시오 70
71 Control statements Quiz Message 창이출력되지않도록변경하시오 반복문안에 MessageBox 가출력되도록변경하시오 71
72 Quiz 1. 소스수정없이 Success 창을띄우시오 (Quiz ~ 7) 2. 다음조건에맞게출력결과를변형하시오실행결과 n = 33670, m = 으로나타나게수정하시오 (Quiz 03 08) 72
73 BreakPoint 활용
74 생성원리에따른분류 Software 디버거가직접설정 디버거가지원하는만큼설정가능 Hardware 31 DR0(Hardware Break Point Address) DR1(Hardware Break Point Address) DR2(Hardware Break Point Address) DR3(Hardware Break Point Address) DR4(Reserved) DR5(Reserved) DR6(Debug Status Register) 0 Hardware Break Point 를통해설정된주소값들이저장됨 사용되지않음 인터럽트가발생한원인에대해서알려줌 4 개의 Hardware Break Point 에대한조건을지정해줌
75 사용용도에다른분류 Instruction BreakPoint( 소프트웨어 ) 실행되는기계어코드위치에체크하여설정한지점이실행되기바로직전에멈춤 소프트웨어브레이크포인트 Memory BreakPoint 특정메모리읽기 / 접근명령어코드실행후멈춤
76 Conditional Breakpoint void main(){ int i, sum=0; for(i=0;i<=100;i++){ sum += i; } } 76
77 Conditional Breakpoint 조건에맞는 Breakpoint
78 Conditional Breakpoint 조건에맞는 Breakpoint Log 생성
79 Conditional breakpoint Log
80 Understanding Stack
81 Stack Frame Stack Frame 이란? 함수가사용하는 Stack 영역 실행중인함수는자신만의 Stack 영역을사용 함수실행시 Stack frame 을오픈하고함수종료시 Stack frame 을클로즈함 main() {... func1();... } func1() {... func2(); } func2() 의 stack frame func1() 의 stack frame main() 의 stack frame Call stack (call stack 은연속된 stack frame 으로구성됨 )
82 Frame Pointer Frame Pointer 함수의 stack frame 시작위치를가리키는레지스터 IA32에서는보통 EBP를이러한용도로사용함 Stack frame을오픈할때설정되며 stack frame이클로즈될때까지변하지않음 Frame Pointer 의필요성 Stack 내의데이터는컴파일타임에그주소를알수없음 함수실행경로에따라 call stack 의모양이변함 오늘날대부분의 OS 들은 random stack 을사용 (Stack Buffer Overflow 로인한대안이었음 ) Stack 내의데이터들은기준점 +offset 형태로컴파일되어야함 ESP 는그위치가고정되어있지않아컴파일러에게부담이큼 고정된기준점이필요함
83 Function Prolog & Epilog Function Prolog Stack Frame을사용하는경우함수는항상 Frame Pointer를셋업하는코드로시작 PUSH EBP ; caller의 stack frame pointer를백업 MOV EBP, ESP ; stack frame pointer 를셋업 SUB ESP, n ; 지역변수를위한공간확보 Function Epilog Stack Frame 을사용하는경우함수의끝부분에는 Frame Pointer 를원래대로복원하는코드가위치함 MOV ESP, EBP ; 지역변수공간릴리즈 POP EBP ; frame pointer 복원
84 함수프롤로그예제.text: E _main proc near.text: e.text: e push ebp.text: f mov ebp, esp.text: sub esp, n ( 생략 ).text: call _myfunc text: _myfunc proc near EBP myfunc() s Stack frame SFP main() s Stack frame ESP main 함수의 Stack Frame 시작점백업.text: push ebp.text: mov ebp, esp EBP SFP
85 함수에필로그예제.text: _myfunc proc near.text: text: push ebp.text: mov ebp, esp.text: push ecx ( 중간생략 ) EBP myfunc SFP ESP ESP.text: call _printf.text: add esp, 14h.text: mov esp, ebp.text: a pop ebp.text: b retn.text: b _myfunc endp EBP main SFP main 함수의 Stack Frame 시작점복원
86 지역변수할당및해제 SUB ESP, n MOV ESP, EBP ESP ESP 할당된지역변수공간 n 해제된지역변수공간 n ESP SFP EBP ESP SFP EBP Return Return Argument Argument [ 그림 ] 지역변수공간할당 [ 그림 ] 지역변수공간해제
87 Frame Pointer Omission Stack Frame Pointer 를사용하지않고 ESP 를이용하여 Stack 영역에위치한데이터를참조 Stack Frame 내의데이터를 ESP+offset 형태로컴파일 함수프롤로그와에필로그생략 프로그램성능향상에도움 EBP 레지스터를다른용도로활용할수있음 프로그램성능향상에도움 대부분의컴파일러에서최적화옵션으로제공 VC++ (/O2, /FPO), GCC(--fomit-frame-pointer) 디버깅하기는어려움
88 스택영역에위치한데이터참조 Stack Frame 을사용하는경우 지역변수는항상 EBP N 의형태 Argument 는 EBP + N 의형태 첫번째 argument 는항상 EBP+8 에위치 Stack Frame 을사용하지않는경우 지역변수나 Argument 모두대체로 ESP + N 의형태로나타나며스택의상황에따라그값도수시로변경되어직접적인구분이어려움
89 지역변수와매개변수구분 Function s Local Variable Section SFP EBP- N EBP ESP Function s Local Variable Section Return Return ESP+ N Argument EBP+4+N Argument [ 그림 ] Stack Frame 을사용할때 [ 그림 ] Stack Frame 을사용하지않을때
90 Call Stack 식별 Stack Frame Pointer 를이용하는경우 EBP 가가리키는곳이현재실행중인함수의 stack frame 시작점 함수의 stack frame 시작점에는항상 caller 의 stack frame 시작주소가저장되어있음 Stack Frame 시작위치바로아래에는항상 return address 가저장되어있음 Stack Frame Pointer 를이용하지않는경우 Stack 내에서 return address 가저장된곳을먼저식별 Return address 윗부분은 callee 의 stack frame 영역이며아래부분은 caller 의 stack frame 영역 정확한분석을위해서는해당코드를참조하는것이필요하며, 코드가없는경우분석이매우어려움
91 Call Stack 조사 : ollydbg
92 Complied Code Pattern (Function)
93 Function(Caller & Callee)
94 Callee & Caller Saved Registers 여러함수에서공용으로사용하는레지스터의백업주체를정의하고있음 EAX ECX EDX Caller Saved Register Callee 가마음대로사용할수있는레지스터 함수호출후복귀했을때위의레지스터값이변하지않아야한다면함수호출전에 caller 는이들레지스터를백업해야함 EBX ESI EDI Callee Saved Register Caller 가마음대로사용할수있는레지스터 Callee 는이들레지스터를사용하기전에반드시백업한후사용해야하며이전함수로복귀하기전에값을복구해주어야함
95 Callee Saved Register Example.text: _func proc near ; CODE XREF: _main+3p.text: push ebp.text: mov ebp, esp.text: push ebx ; callee saved register이므로 backup.text: push esi.text: push edi.text: mov esi, 1.text: B mov edi, 2.text: lea ebx, [esi+edi].text: pop edi ; backup된 register를원래대로복구.text: pop esi.text: pop ebx.text: pop ebp.text: text: _func retn endp
96 Call Function - parameter 96
97 Quiz 1. 04_02_02Quiz의실행결과를변조하시오 1. 첫번째 Argument가출력되게하시오 2. 복귀주소가출력되게하시오 2. 04_02_03Quiz 의실행결과를변조하시오 1. 1 개의 MessageBox 가뜨게끔호출된함수내부코드를변조하시오 97
98 Call Function - pointer 98
99 Quiz 1. 코드수정없이 Success 창이뜨게끔 Argument 를입력하시오 (04_03_02 ~ 05) 99
100 Call Function - structure 100
101 Call Function - structure 101
102 Quiz 1. 코드수정없이 Message 창에문자열이출력되게 Argument 를입력하시오 (04_05_02Quiz) 2. 구조체멤버의내용을변경하여 ITBANK 가출력되게변경하시오 (04_05_03Quiz) 102
103 Call Function - return 103
104 함수호출규약 Function Calling Convention 함수호출에관한규약 ( 약속 ) 아래의사항에관련된내용을규정하고있음 Argument 전달방법 Stack or Register Argument 전달순서 Leftmost to Rightmost / Rightmost to Leftmost Argument 전달에사용된 Stack 영역해제 Caller or Callee
105 함수호출규약비교 호출규약 매개변수전달방향 매개변수전달방법 Stack Unwinding Name Decoration stdcall R -> L Stack Callee _func@argument 크기 cdecl R -> L Stack Caller _func fastcall R -> L ECX,EDX Stack 크기 fastcall 은컴파일러마다차이점이존재함
106 Stack Unwinding Stack Unwinding Overview 함수호출전과후의 stack 의모양은동일해야함 지역변수공간, Saved Frame Pointer Callee 의 stack frame 에위치하며 Callee 가정리 Parameter 전달에사용된 stack 영역 Callee가사용하나, Caller의 stack frame 영역에존재 누가정리할것인가? Caller? Callee? Caller 가 Callee 로부터 return 한후정리 cdecl 가변인자지원 Callee 가 Caller 로 return 할때정리 stdcall, fastcall 코드가깔끔해짐
107 The C Calling Convention cdecl Argument 전달에 stack 을이용 Argument 전달순서는 rightmost to leftmost Stack unwinding 은 caller 가담당 ( ADD ESP, N 형태의커맨드이용 ) Name Decoration func -> _func
108 The C Calling Convention myfunc1 main() { myfunc1(1, 2, 3);... SFP Return main Argument 는 R->L 순서로전달하며 Stack 을이용함.text: push 3.text: push 2.text: push 1.text: call _myfunc1.text: b add esp, 0Ch Argument 를전달할때사용한 Stack 공간을 Caller(main) 가정리함 Stack
109 Standard Calling Convention stdcall WINAPI, CALLBACK 등 Argument 전달에 stack 을사용 Argument 전달순서는 rightmost to leftmost Stack unwinding 은 Callee 가담당 ( 일반적으로 RET N 커맨드이용 ) Name Decoration func -> _func@argument 사이즈
110 Standard Calling Convention myfunc1 SFP Return main Argument 는 R->L 순서로전달하며 Stack 을이용함 Argument 를전달할때사용한 Stack 공간을 Callee(myfunc1) 가정리함.text: mov esp, ebp.text: b pop ebp.text: c retn 0Ch text: push 3.text: push 2.text: push 1.text: call _myfunc1@12 Stack
111 Return 값전달 Floating Point 가아닌경우 4 바이트데이터는 EAX 를통해전달 8 바이트데이터는 EDX:EAX 를통해전달 Floating Point 인경우 FPU stack 을통해전달 구조체인경우 Stack 을이용함 지역변수선언시 Return 값을저장할수있는공간을예약해둠
112 Calling Convention 실습 112
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 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 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 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 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 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 - a8a.ppt [호환 모드]
이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register
More informationMicrosoft 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 informationMicrosoft PowerPoint - hy2-12.pptx
2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출
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 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 informationMicrosoft 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 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 - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft 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 informationMicrosoft 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금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
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 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 information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More informationMicrosoft PowerPoint - a2.ppt [호환 모드]
마이크로컴퓨터의기본구조 2 장 x86 프로세서구조 ALU: 산술논리연산제어장치 (CU): 실행순서제어클럭 : 구성요소들의동작동기화 CPU + memory + I/O + bus 어셈블리언어 2 클럭 (Clock) CPU 와 Bus 동작은클럭에동기되어동작을한다. 메모리읽기사이클과대기상태 1 클럭사이클동안간단한동작을수행한다. 기계어명령어수행에적어도 1 클럭사이클이필요함
More informationchap 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(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M
(1) 주소지정방식 Address Mode 메모리접근 분기주소 2. 8051 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data Memory 외부 Data Memory (2) 명령어세트 - 8051 명령어는 5 가지로분류,
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 information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationhwp
BE 8 BE 6 BE 4 BE 2 BE 0 y 17 y 16 y 15 y 14 y 13 y 12 y 11 y 10 y 9 y 8 y 7 y 6 y 5 y 4 y 3 y 2 y 1 y 0 0 BE 7 BE 5 BE 3 BE 1 BE 16 BE 14 BE 12 BE 10 y 32 y 31 y 30 y 29 y 28 y 27 y 26 y 25 y 24 y 23
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationMicrosoft PowerPoint - a5a.ppt [호환 모드]
5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음
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 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 - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More information0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit
Defcon CTF 17 th Nickster Report StolenByte(Son Choong-Ho) http://stolenbyte.egloos.com thscndgh_4@hotmail.com WOWHACKER 2009. 08. 09 0x00 Contents 0x01 ------------- About Nickster 0x02 -------------
More informationMicrosoft Word - 1. ARM Assembly 실습_xp2.doc
ARM asm 의구조 ARM Assembly 실습 1. 기본골격 AREA armex,code, READONLY ;Mark first instruction to execute start MOV r0, #10 MOV r1,#3 ADD r0, r0, r1 ; r0 = r0 + r1 stop NOP NOP B stop ; Mark end of file 위의 asm의구조를이해하고실행해보세요.
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationuntitled
9 hamks@dongguk.ac.kr : Source code Assembly language code x = a + b; ld a, %r1 ld b, %r2 add %r1, %r2, %r3 st %r3, x (Assembler) (bit pattern) (machine code) CPU security (code generator).. (Instruction
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 informationThe_IDA_Pro_Book
The IDA Pro Book Hacking Group OVERTIME force (forceteam01@gmail.com) GETTING STARTED WITH IDA IDA New : Go : IDA Previous : IDA File File -> Open Processor type : Loading Segment and Loading Offset x86
More information<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770>
Parse and Parse Assembly ( 어셈블리어입문자를위한 어셈블리어자료들의모음 ) ## 목차 ## 0x01. ----------Introduce----------- 0x02. 어셈블리언어란? & 배우는목적 0x03. 어셈블리언어를위한기본지식 0x04. 어셈블리명령어의구성 0x05. 주소지정방식의이해 0x06. 어셈블리명령어정리 0x07. 어셈블리명령어상세
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 informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information9
9 hamks@dongguk.ac.kr : Source code Assembly language code x = a + b; ld a, %r1 ld b, %r2 add %r1, %r2, %r3 st %r3, x (Assembler) (bit pattern) (machine code) CPU security (code generator).. (Instruction
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 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 informationC# 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 informationMicrosoft 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[ 마이크로프로세서 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 informationData Structure
Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;
More informationhlogin7
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슬라이드 1
마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***
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 information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
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 informationvi 사용법
유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();
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온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1
강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1 - 2. 중앙처리장치 (Central Processing Unit) 주기억장치에기억된명령을꺼내서해독하고, 시스템전체에지시신호를내는장치명령코드가명령을수행할수있게필요한제어기능을제공제어장치의구성
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 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 informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
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 informationChapter 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 informationMicrosoft PowerPoint - hw8.ppt [호환 모드]
8.1 데이터경로와제어장치 Chapter 8 데이터경로와제어장치 많은순차회로의설계는다음의두부분으로구성 datapath: data의이동및연산을위한장치 control unit에상태신호제공 control ol unit: datapath th 에서적절한순서로 data 이동및연산을수행할수있도록제어신호제공. 먼저, datapath를설계 다음에, control unit
More informationMicrosoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers
C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.
More informationCKKeyPro 적용가이드
3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.
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 information2. 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학습목차 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 informationSRC 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 information02(243-249) CSTV11-22.hwp
함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 243 함수호출규약에 기반한 새로운 소프트웨어 워터마킹 기법 (A Novel Software Watermarking Scheme Based on Calling Convention) 전 철 정진만 김봉재 (Cheol Jeon) (Jinman Jung) (Bongjae Kim) 장준혁 조유근 홍지만 (Joonhyouk
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 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<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 informationMicrosoft PowerPoint - a4.ppt [호환 모드]
이장의내용 4 장데이터전송, 주소지정, 산술연산 데이터전송명령어 덧셈과뺄셈 데이터관련연산자와디렉티브 간접주소지정 JMP와 LOOP 명령어 컴퓨터정보통신 컴퓨터정보통신 어셈블리언어 2 4.1 데이터전송명령어 Instruction Operand 표기 (Intel) 피연산자 (operand) 의유형 즉시값 (Immediate) 상수정수 ( 식 )(8 (8, 16,
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 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 informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationMicrosoft PowerPoint - hy2-12.pptx
CPU의구조와기능 CPU 의명령어수행과정 명령어인출 (Instruction Fetch) : 기억장치로부터명령어를읽어온다 명령어해독 (Instruction Decode) : 수행해야할동작을결정하기위하여명령어를해독한다 모든명령어들에대하여공통적으로수행 데이터인출 (Data Fetch) : 명령어실행을위하여데이터가필요한경우에는기억장치혹은 I/O 장치로부터그데이터를읽어온다
More informationMicrosoft PowerPoint - a4.ppt [호환 모드]
4 장데이터전송, 주소지정, 산술연산 연세대학교컴퓨터정보통신 이장의내용 데이터전송명령어 덧셈과뺄셈 데이터관련연산자와디렉티브 간접주소지정 JMP와 LOOP 명령어 연세대학교컴퓨터정보통신어셈블리언어 2 4.1 데이터전송명령어 피연산자 (operand) 의유형 예 즉시값 (Immediate) 상수정수 ( 식 ) (8, 16, 32 bits) 값이 instruction
More information6주차.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 informationT100MD+
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 informationadfasdfasfdasfasfadf
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 informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationComputer Architecture
명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다. 2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More informationMicrosoft Word - DefCon2007 CTF Prequals - Potent Pwnable 400 풀이.docx
DefCon CTF 2007 Prequals - Potent Pwnables 400 풀이 작성자 : graylynx (graylynx at gmail.com) 작성일 : 2007년 7월 5일 ( 마지막수정일 : 2007년 7월 5일 ) http://powerhacker.net 안녕하세요, 이번에는 DefCon2007 CTF Prequals - Potent Pwnables
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 informationChapter ...
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 informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More informationMicrosoft PowerPoint - 15-MARS
MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터
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 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 information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More informationPowerPoint 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 informationPRO1_09E [읽기 전용]
Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :
More information1
1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2
More informationuntitled
Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard
More information목차 목차 1 장. Bugs : Where They Come From and how You Solve Them? 2 장. Getting Started Debugging 3 장. Debugging During Coding 4 장. How Do Debuggers Work?
Debugging Applications By John Robbins Part II 최상호 http://blog.naver.com/tonkex 목차 목차 1 장. Bugs : Where They Come From and how You Solve Them? 2 장. Getting Started Debugging 3 장. Debugging During Coding
More information