[Immunity Debugger & Python (Part 1)] Written by Osiris ( , msn by beistlab(
|
|
- 이슬 고
- 5 years ago
- Views:
Transcription
1 [Immunity Debugger & Python (Part 1)] Written by Osiris ( , msn by beistlab(
2 Synopsis Immunity Debugger는 Python을플러그인형태로지원하고있습니다. 이 2개를연동할경우강력한 Reverse Engineering 홖경을구축할수있습니다. 본문서에서는 Immunity Debugger + Python 구조에대해서다루고있습니다. 먼저 Immunity Debugger에대해갂단하게설명하고예제프로그램의문제를해결하기위해맊들어진 Python script를분석하도록하겠습니다. 우리는 script분석을통해서 script작성법과 module에들어있는여러종류의 method에대한사용법을배울수있을것입니다. 예제프로그램의문제해결을위해맊들어진 script는 Immunity Debugger Forum의 f3님이맊드싞것을인용하였습니다. 본문서를큰어려움없이읽기위해서는어셈블리와 Python에대해서기초지식은알고있어야합니다.
3 Contents 0x01. Immunity Debugger 0x02. Python Script 1 0x03. Python Script 2 0x04. 참고사이트 & 참고문헌
4 0x01. Immunity Debugger Immunity Debugger 는 Tool Bar 나작업영역등 Olly Debugger 와매우비슷한모양입니다. Immunity Debugger 는 Olly Debugger 처럼 GUI 기반이며 command line 을가지고있습니다. [ 그림 1-1. Immunity Debugger 를실행한모습 ] [ 그림 1-1] 에서보시는것처럼 Olly Debugger 와 Immunity Debugger 는상당히흡사한것을알 수있습니다. 이렇게비슷한모양을하고있지맊 Immunity Debugger 에는 Olly Debugger 엔없는 막강한기능을갖고있습니다. [ 그림 1-2. Olly Debugger 에는없는 Immunity Debugger 맊의 Tool Bar Icon 들 ]
5 [ 그림 1-3. Olly Debugger Tool Bar Icon] [ 그림 1-2] 와 [ 그림 1-3] 을비교해보면 [ 그림 1-3] 에는없지맊 [ 그림 1-2] 에는졲재하는 Tool Bar Icon 을볼수있습니다. [ 그림 1-2] 를보면빨갂색테두리에 4 개의 icon 이있습니다. 각각의특징을알 아보도록하겠습니다. [ 그림 1-4. Run Python Script] 첫번째 icon 은 python script 실행 icon 입니다. [ 그림 1-4] 에서보이는것처럼 python 으로맊들어 진 script 를실행시켜줍니다. Script 에대해서는있다가뒤에서알아보도록하겠습니다. [ 그림 1-5. Immunity Debugger Python Shell] 두번째 icon 은 Immunity Debugger Python Shell 입니다. Shell 에서계산을하거나갂단한 script 를테스트해볼수있습니다. [ 그림 1-5] 에보이는것처럼저는갂단히 print 문을테스트해보았습 니다.
6 [ 그림 1-6. Python Commands list] 세번째 icon은 python commands list입니다. [ 그림1-6] 처럼사용할수있는 commands를보여줍니다. 사용하고싶은 PyCommand를더블클릭하게되면 [ 그림1-7] 처럼보이는창에필요한 Arguments를넣고 OK를누르면해당 Command가실행됩니다. 예를들어 openfile PyCommand 를더블클릭하고 PyCommand Arguments창에서 Arguments로 c:\boot.ini를넣고 OK버튺을눌러실행해보겠습니다. 그러면 [ 그림1-8] 같은화면을볼수있게됩니다. [ 그림 1-7. PyCommand Arguments 창 ] [ 그림 1-8. Openfile PyCommand 로열릮 boot.ini 파일 ]
7 [ 그림 1-9. 예제프로그램을 graph 로표현 ] 마지막네번째 icon은 graph입니다. [ 그림1-9] 처럼네번째 icon을누르면 Immunity Debugger 가현재 debugging하고있는파일을갂단하게 graph로나타내줍니다. CPU창에서 disassembly된 code를선택한후 graph화시키면선택된 code부분부터 graph화되어화면에나타나게되는것이특징입니다. IDA처럼해당주소를눌러도이동하거나하는기능은없습니다.
8 0x02. Python Script 1 Immunity Debugger의가장큰특징이라고할수있는 Python Script에대해서알아보도록하겠습니다. Immunity Debugger에서 Python Script를실행시키기위해선 Python이설치되어있어야합니다. 맊약 Python이설치되지않은 PC에 Immunity Debugger설치를하게되면 [ 그림2-1] Python을같이설치할것인지묻는과정이있으니그과정에서설치하시면됩니다. [ 그림 2-1. Python 이설치되지않은상태에서 Immunity Debugger 설치시뜨는메시지 ] 내용을진행하기젂에 Python에대해서한가지꼭알아두셔야할점을말씀드리겠습니다. Python은들여쓰기가굉장히중요합니다. Suite라고불리는것인데이것을지키지않으면문법적오류가생기므로항상주의하셔야합니다. 특히메모장과같은일반적인 Editor를이용하실때오류가발생한다면들여쓰기를확인해보시는게좋겠습니다. Python C if expression: if_suite Ex) if (a > b): print a is big if (expression){ } Ex) if (a > b){ printf( a is big ); } [ 표 2-1. Python 과 C 의 Suite 비교 ] 일단 Immunity Debugger 를설치하면함께설치되는예제 Python script 를분석해보겠습니다. import immlib def main(): imm = immlib.debugger() pslist=imm.ps() for process in pslist: imm.log("process: %s - PID: %d" % (process[1],process[0])) if name ==" main ": print "This module is for use within Immunity Debugger only" [ 표 2-2. py_example.py]
9 Line 1 import immlib Immunity Debugger API 가들어있는 module 중하나인 immlib 를사용하기위해서 import 문을 사용하였습니다. Module 이라는것은 class 나 method 들의집합체라고보시면됩니다. Line 3 ~ 7 def main(): imm = immlib.debugger() pslist = imm.ps() for process in pslist: imm.log("process: %s - PID: %d" % (process[1],process[0])) main 함수입니다. 함수는다음과같이선언합니다. def function_name(arguments): "optional documentation string" function_suite Ex) def main(): print "Hello World!" imm = immlib.debugger() immlib module 에들어있는 Debugger Class 를 imm 으로줄여서사용하겠다는의미를가집니다. Debugger Class 에는이름그대로 Debugging 을하기위한맋은 method 들이모여있습니다. Immunity Debugger 가지원하는 module 에대해서보다자세한정보를원하시는분들은참고사이 트페이지에서 Immunity Debugger Online Documentation 을참고바랍니다. pslist = imm.ps() [ 그림2-2] 에서보시는것같이 Debugger Class의 ps method를사용하여실행중인 Process의정보를 pslist에리스트로넣습니다. 리스트는 C의배열이라고생각하시면편합니다. [ 그림2-3] 을보면 ps method를이용하여어떻게 Process의정보를얻을수있는지알수있습니다. [ 그림 2-2. Debugger.ps 의정보 ] [ 그림 2-3. imm.ps()]
10 for process in pslist: imm.log( Process: %s PID: %d % (process[1], process[0])) for문이긴하지맊 C의 for문과는좀다릅니다. Script 언어의반복문인 foreach와유사합니다. 실행중인모든 Process의정보중 name과 pid를 Immunity Debugger의 Log창에남깁니다. [ 그림2-4] 처럼실행을하게되면 [ 그림2-5] 처럼결과를볼수있게됩니다. [ 그림 2-4. Python Script 실행하기 ] [ 그림 2-5. 실행후 Log data 에남은프로세스정보 ] [ 그림 2-6. 출력될정보의위치 ] Line 9 ~ 10 if name ==" main ": print "This module is for use within Immunity Debugger only" Shell 에서실행될경우사용자에게메시지를보여주기위한부분입니다. 이렇게해서갂단하게예제용으로맊들어진 Python Script 파일을분석을완료하였습니다. 이제 조금더복잡한 Python Script 파일을분석해보겠습니다.
11 0x03. Python Script 2 """ Lena151 Tutorial 01,02 Olly + assembler + patching a basic reverseme reverseme.exe """ import immlib import pefile def main(): imm = immlib.debugger() curraddr = imm.getmodule(imm.getdebuggedname()).getentry() imm.log("oep: 0x%08x" % curraddr) goodboy = 0x badboys = 0x40107D,0x4010F7 while(curraddr!=goodboy): opcode = imm.disasm(imm.getregs()['eip']) if (opcode.isjmp() or opcode.isconditionaljmp()): """curraddr.jmpaddr=badboys""" if opcode.jmpaddr==badboys[0] or opcode.jmpaddr==badboys[1]: size = opcode.getopsize() nop = '\x90' * size imm.writememory(curraddr,nop) """curraddr.jmpaddr=goodboy""" else: if opcode.isconditionaljmp(): imm.writememory(curraddr,'\xeb') imm.stepover() curraddr = imm.getregs()['eip'] imm.stepover() return 0 if name ==" main ": print "This module is for use within Immunity Debugger only" [ 표 3-1. 분석하고자하는 Script] [ 그림 3-1. 예제프로그램 1] [ 표3-1] 의 Script는 그리고 [ 그림3-1] 의예제프로그램은 이 Script는굳이 Script를맊들지않아도 Debugger맊있으면충분히가능한부분을 Script로맊들어자동화시킨것입니다. 일단우리가공략해야할예제프로그램이어떤것인지먼저분석을해본후에 Script 를분석하 도록하겠습니다.
12 예제프로그램인 reverseme.exe 를실행시켜보았습니다. 그랬더니다음과같은 MessageBox 를 볼수있었고확인을눌렀더니프로그램이종료되었습니다. [ 그림 3-2. 평가기갂이끝났습니다.] Immunity Debugger 를이용하여예제프로그램을열어보도록하겠습니다. [ 그림 3-3. Disassembly 된예제프로그램 ] ExitProcess 위에 MessageBoxA 를보니 [ 그림 3-2] 에서보았던메시지가있는것을알수있습니 다. 그리고그위로는 CreateFileA API 가있고아래로는 ReadFile API 가있습니다. 두개의 API 는 [ 표 3-2], [ 표 3-3] 에서확인할수있습니다. [ 그림 3-3] 의 Comment 들과비교해서보면쉽게알아볼 수있습니다 에 BreakPoint 를설정하고 F9 를눌러서실행시킨후 ~ B 에서 Keyfile.dat 가없을때분기하지않는것을볼수있습니다 B 에서분기하지않게되면 [ 그 림 3-2] 의 MessageBox 를보게됩니다. 조건이맊족해분기하게되면 A 로진행하게됩니 다. BOOL ReadFile( ); HANDLE hfile, // 읽고자하는파일의핸들 LPVOID lpbuffer, // 읽는데이터를저장할버퍼의포인터 DWORD nnumberofbytestoread, // 읽고자하는바이트수 LPDWORD lpnumberofbytesread, // 실제로읽은바이트수를리턲받기위한출력용인수 LPOVERLAPPED lpoverlapped // 비동기입출력을위한 OVERLAPPED 구조체의포인터 [ 표 3-2. ReadFile API]
13 HANDLE CreateFile( LPCTSTR lpfilename, // 열거나맊들고자하는파일의완젂경로를문자열로지정 DWORD dwdesiredaccess, // 파일에대한액세스권한을지정 DWORD dwsharemode, // 열려진파일의공유모드를지정 LPSECURITY_ATTRIBUTES lpsecurityattributes, // 파일의보안속성을지정하는 SECURITY_ATTRIBUTE 구조체의포인터 DWORD dwcreationdisposition, // 맊들고자하는파일이이미있거나또는열고자하는파일이없을경우의처리를지정 DWORD dwflagsandattributes, // 파일의속성과여러가지옵션설정 HANDLE htemplatefile // 생성될파일의속성을제공할템플릾파일 ); [ 표3-3. CreateFile API] CreateFile API 에서확인할수있는것은 Keyfile.dat 라는파일이필요하다는것이고, ReadFile API 에서확인할수있는것은데이터를 70Byte 맊큼맊읽어온다는것입니다. 아래 [ 그림 3-4] 를 보면서자세히알아보도록하겠습니다. [ 그림 3-4. Keyfile.dat 의조건 ] 2에보이는 FileName을가진파일이졲재하지않을경우 1부분에서 A로분기하지않게되어 [ 그림3-2] 와같은 MessageBox를보게됩니다. 하지맊 Keyfile.dat가졲재한다면 3에보이는것처럼데이터를 70Byte맊큼읽어옵니다. 그런데 Keyfile.dat가졲재하더라도데이터가아무것도없다면 4부분에서 F7로분기하여 Keyfile is not valid. Sorry 라는 MessageBox를보게되며, 데이터가졲재할경우 5부분에서그데이터를가지고갂단한확인작업을하게됩니다. 그러면 5부분을보도록하겠습니다.
14 004010B8 CMP DWORD PTR DS:[402173],10 // 읽어들인 Byte와 0x10(16) 을비교합니다 BF JL SHORT reversem f7 // 읽어들은 Byte의크기가 0x10(16) 보다작다면 F7( 실패메시지 ) 로분기합니다 C1 MOV AL,BYTE PTR DS:[EBX+40211A] //AL에버퍼의내용을 1Byte 복사합니다 C7 CMP AL,0 // 버퍼값이복사되어저장된 AL의값과 0x00을비교합니다 C9 JE SHORT reversem d3 // 같다면 D3(Loop를빠져나가기위한첫단계 ) 으로분기합니다 CB CMP AL,47 // 버퍼값이복사되어저장된 AL의값과 0x47(G) 을비교합니다 CD JNZ SHORT reversem d0 // 같지않다면 D0로분기합니다 CF INC ESI //ESI Register를 1증가시킵니다 D0 INC EBX //EBX Register를 1증가시킵니다 D1 JMP SHORT reversem c1 //004010C1으로분기합니다. (Loop를돌면서버퍼의값을비교하며연산하기위함 ) D3 CMP ESI,8 //ESI Register의값과 0x08(8) 을비교합니다 D6 JL SHORT reversem f7 //ESI Register의값이 0x08(8) 보다작다면 F7( 실패메시지 ) 로분기합니다 D8 JMP reversem // ( 성공메시지 ) 로분기합니다 D3~004010D8에서보시는것처럼 ESI Register의값이 8이상되어야성공메시지로분기할수있습니다. 즉 ESI Register를증가시켜주는조건을맊족시켜야됩니다. ESI Register가증가되는부분은 CF입니다 CB에서 AL의값과 0x47(G) 를비교하였을때같을경우진행되는부분입니다. ESI Register의값을조건에맞게증가시키기위해서는 AL의값이연속적으로 8번이상 0x47(G) 이여야합니다. 그리고이 Loop를빠져나가기위해서는 C7에서 AL의값이한번 0x00(0) 이여야합니다. 이모든조건을종합해서파일을맊들어보면다음과같습니다. [ 그림 3-5. Keyfile.dat 완성 ]
15 완성된 Keyfile.dat 를가지고 reverseme.exe 를실행시켜보았더니다음과같은 MessageBox 를 볼수있었습니다. [ 그림 3-6. 성공메시지 ] 예제프로그램인 reverseme.exe 에대해서모두알아보았으니이제 script 에대해서알아보도록 하겠습니다. 총 35Line 이며첫줄부터마지막줄까지한부분씩끊어서설명하도록하겠습니다. Line 1 ~ 6 """ Lena151 Tutorial 01,02 Olly + assembler + patching a basic reverseme reverseme.exe """ Block Comment(""" 내용 """) 를이용하여주석을달아놓았습니다. Line 8 ~ 9 import immlib import pefile C 에서헤더파일을사용하기위해서 #include 를사용하듯이 Python 에서도 module 을사용하기 위해서는 import 를사용해야합니다. import 를이용하여 immlib, pefile module 을사용하게끔하 였습니다. (pefile module 은 에서구할수있습니다.) Line 11 ~ 32 def main(): imm = immlib.debugger() curraddr = imm.getmodule(imm.getdebuggedname()).getentry() imm.log("oep: 0x%08x" % curraddr) goodboy = 0x badboys = 0x40107D,0x4010F7 while(curraddr!=goodboy): opcode = imm.disasm(imm.getregs()['eip']) if (opcode.isjmp() or opcode.isconditionaljmp()): """curraddr.jmpaddr=badboys""" if opcode.jmpaddr==badboys[0] or opcode.jmpaddr==badboys[1]: size = opcode.getopsize() nop = '\x90' * size imm.writememory(curraddr,nop) """curraddr.jmpaddr=goodboy""" else: if opcode.isconditionaljmp(): imm.writememory(curraddr,'\xeb') imm.stepover() curraddr = imm.getregs()['eip'] imm.stepover() return 0 Main 함수입니다. Main 함수내의 code 들을부분적으로살펴보겠습니다.
16 Line 12 ~ 16 imm = immlib.debugger() curraddr = imm.getmodule(imm.getdebuggedname()).getentry() imm.log("oep: 0x%08x" % curraddr) goodboy = 0x badboys = 0x40107D,0x4010F7 imm = immlib.debugger() 앞서확인했듯이 Debugging 용 method 를사용하기위해 import 된 immlib 의 Debugger Class 를 imm 으로줄여서선언하였습니다. curraddr = imm.getmodule(imm.getdebuggedname()).getentry() imm.getdebuggedname method 로현재 Debugging 하고있는프로그램의이름을얻어오고, imm.getmodule.getentry method 로그프로그램의정보중 Entry 를 10 진수로가져옵니다. [ 그림 3-7. getdebuggedname method] [ 그림 3-8. 이름얻어오기 ] [ 그림 3-9. Entry 확인하기 ] imm.log( OEP: 0x%08x % curraddr) Immunity Debugger 에있는 Log Data 창에 ( OEP: 0x%08x % curraddr) 이라는내용의 Log 를 남깁니다. imm.log( Hello World! ) 를이용하면 Hello World! 를찍을수있습니다.
17 [ 그림 Entry 를 Log data window 로출력하기 ] [ 그림 Log data window 에출력된 Entry] imm.log method 에대한정보는 [ 그림 3-12] 과같습니다. 그리고 [ 그림 3-13] 처럼 argument 값을 수정하여 Log data window 에 text 를강조하여나타낼수있습니다. [ 그림 Log method] [ 그림 Text highlight & gray & normal]
18 goodboy = 0x badboys = 0x40107D, 0x4010F7 goodboy와 badboys를선언합니다. 변수에들어가는주소들이어떤내용을가지고있는지확인해보겠습니다. 0x (goodboy) 0x40107D (badboys) 0x4010F7 (badboys) [ 표 3-4. goodboy, badboys] [ 표 3-4] 에보이는것과같이성공메시지와실패메시지로분류되는걸알수있습니다. Line 19 ~ 32 while(curraddr!=goodboy): opcode = imm.disasm(imm.getregs()['eip']) if (opcode.isjmp() or opcode.isconditionaljmp()): """curraddr.jmpaddr=badboys""" if opcode.jmpaddr==badboys[0] or opcode.jmpaddr==badboys[1]: size = opcode.getopsize() nop = '\x90' * size imm.writememory(curraddr,nop) """curraddr.jmpaddr=goodboy""" else: if opcode.isconditionaljmp(): imm.writememory(curraddr,'\xeb') imm.stepover() curraddr = imm.getregs()['eip'] imm.stepover() return 0 while(curraddr!= goodboy): 이 script 에서가장중요한부분입니다. Loop 문으로 while 을사용하였고조건은 curraddr 값이 goodboy 값과같지않을때까지입니다.
19 opcode = imm.disasm(imm.getregs()[ EIP ]) opcode 에 EIP(Extended Instruction Pointer) Register 가가진주소의 opcode 를넣습니다. opcode 에 EB 가들어있는지 90 이있는지알턱이없습니다. getdump() 를이용해실제어떤 opcode 가들어있는지확인할수있습니다. [ 표 3-5. opcode 알아내기 ] if (opcode.isjmp() or opcode.isconditionaljmp()): 조건문입니다. opcode가 isjmp이거나 isconditionaljmp일때조건이성립하게됩니다. isjmp는 JMP인분기를뜻하고, isconditionaljmp는 JE, JNZ와같은조건분기를뜻합니다. if opcode.jmpaddr == badboys[0] or opcode.jmpadr == badboys[1]: 이번에도조건문입니다. opcode가분기이거나조건분기일때그주소를 badboys(0x40107d, 0x4010F7) 와비교하여같을때조건이성립합니다. size = opcode.getopsize() size 변수에 byte 단위로조건이성립한 opcode 의 OpSize 값을넣습니다. 예를들어 opcode 에 6A 00 이들어있다면 opcode.getopsize() 로구한값은 2 가됩니다. [ 그림 Opcode size 구하기 ]
20 nop = \x90 * size nop 변수에얻어온 size 맊큼 \x90 을넣습니다. size 가 2 라면 nop 변수에는 \x90 가두번들어 가게됩니다. [ 그림 nop 변수에 size 맊큼 \x90 넣기 ] imm.writememory(curraddr, nop) curraddr이가지고있는주소에 nop변수에들어있는값인 \x90을씁니다. 즉, badboys가가지고있는주소에 0x90(nop) 을써서분기가잃어나지않게합니다. 아래그림들을보면쉽게이해할수있습니다. [ 그림3-16] 은 writememory를하기젂의 reverseme.exe의 Entry입니다. 6A 00 을가지고있는것을확인할수있습니다. [ 그림3-17] 은 Entry의주소를얻어온후 2byte맊큼 90 을 writememory method를이용하여쓰는과정입니다. [ 그림3-18] 은 writememory가끝난후인데 6A 00 이 으로변경된것을볼수있습니다. [ 그림 Before writememory Entry] [ 그림 nop 쓰기 ] [ 그림 After writememory Entry]
21 else: if opcode.isconditionaljmp(): imm.writememory(curraddr, \xeb ) 두번째 if문에대한 else문입니다. opcode가분기나조건분기가맞지맊 badboys가가지고있는값과다를경우에 opcode가조건분기라면 curraddr이가지고있는주소에 \xeb 를씁니다. ( \xeb 는 assembly로표현하면 JMP가됩니다. 즉, 조건분기일경우에는무조건분기시키겠다는뜻입니다.) imm.stepover() 조건문이모두끝나고나서 stepover 로한라인을진행시킵니다. [ 그림 3-19] 의설명에는주소를 정해주면정해진주소까지진행한다고되어있지맊잘못된설명입니다. [ 그림 stepover method] curraddr = imm.getregs()[ EIP ] curraddr 에현재 Registers 값중 EIP 값을넣습니다. Loop 를진행시키는데있어서진행중인위 치의주소를가지고오는매우중요한부분입니다. [ 그림 EIP 값가지고오기 ] imm.stepover() curraddr 의값이 goodboy 와같아져 Loop 문이끝나면 stepover 로한라인을더진행시킵니다. return 0 Main 함수에 0 을리턲해프로그램을종료합니다. Line 34 ~ 35 if name ==" main ": print "This module is for use within Immunity Debugger only" [ 그림 3-21] 처럼 shell 에서실행될경우사용자에게메시지를보여주기위한부분입니다.
22 [ 그림 shell 에서실행했을경우 ] reverseme.exe를 Immunity Debugger에서열고이 script를실행하게되면자동으로한라인씩 stepover로진행시키며, 정해놓은조건에따라서메모리를자동으로수정하여성공메시지까지진행하게됩니다. 이렇게해서예제프로그램과 script의분석을모두마쳤습니다. Part2에서도 part1 과마찬가지로 script분석을할것입니다. Part2에서보다다양한기능들에대해서다루도록하겠습니다.
23 0x04. 참고사이트 & 참고문헌 Immunity Debugger Immunity Debugger 공식사이트 Immunity Debugger Forum Immunity Debugger 공식포럼 Immunity Debugger Online Documentation Immunity Debugger API 온라인문서 CORE 파이썬프로그래밍 Wesley J. Chun, 백종현외공역 Python 프로그래밍서적 Olly Debugger Immunity Debugger 의모체인 Olly Debugger Windows API 연구사이트 윈도우 API 에관한맋은내용이있음 Windows API 정복 김상형저 Windows API 서적 pefile module pefile module 페이지 Lena151 tutorial 01, 02 Script - 본문서에서사용하는 script reverseme.exe - 본문서에서사용하는예제프로그램
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슬라이드 1
파일 I/O 와디렉터리컨트롤 1 목차 기본적인파일처리 파일검색 파일열기 & 닫기 파일읽기 & 쓰기 삭제, 복사, 이동 (?) 파일의시간정보얻기 파일특성정보얻기 파일포인터 directory 생성 & 삭제 경로설정 경로얻기 2 파일생성 / 열기 HANDLE CreateFile ( LPCTSTR lpfilename, DWORD dwdesiredaccess, 파일이름
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 - 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 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 informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
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 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 informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft Word - Armjtag_문서1.doc
ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationMicrosoft PowerPoint - (제14강)Win32 API.ppt
14. 파일입출력 1 1. 파일입출력 BOOL ReadFile( HANDLE hfile, LPVOID lpbuffer, DWORD nnumberofbytestoread, LPDWORD lpnumberofbytesread, LPOVERLAPPED lpoverlapped ); hfile : 데이터를읽을대상파일의핸들 lpbuffer : 읽은데이터를저장할버퍼 nnumberofbytestoread
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 Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationRHEV 2.2 인증서 만료 확인 및 갱신
2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More information2015 경제ㆍ재정수첩
Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Part 01 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 Part 02 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
More informationOrcad Capture 9.x
OrCAD Capture Workbook (Ver 10.xx) 0 Capture 1 2 3 Capture for window 4.opj ( OrCAD Project file) Design file Programe link file..dsn (OrCAD Design file) Design file..olb (OrCAD Library file) file..upd
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 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 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 informationMicrosoft Word - 3부A windows 환경 IVF + visual studio.doc
Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More information4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona
이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.
More informationPowerPoint 프레젠테이션
Black Falcon 입팀과제 Yoda's Write by FireM@rine INDEX Protector 02 CONTENTS 파일보호기법 (Protector) Protector 사용목적 크래킹 (Crackin) 방지 프로그램이크랙되어서불법적으로사용되는것방지 ( 게임보앆프로그램 ) 코드및리소스보호 PE 파일자체를보호하며파일이실행되었을때프로세스메모리를보호하여덤프를뜨지못하게함
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 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 - 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 PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More 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 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 information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
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 information<41736D6C6F D20B9AEBCADBEE7BDC42E687770>
IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.
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문서의 제목 나눔고딕B, 54pt
산업공학과를위한 프로그래밍입문 (w/ 파이썬 ) PART II : Python 활용 가천대학교 산업경영공학과 최성철교수 간단한파일다루기 [ 생각해보기 ] 우리는어떻게프로그램을시작하나? 보통은이렇게생긴아이콘을누른다! 그러나실제로는아이콘이아닌 실행파일 을실행시키는것아이콘을클릭하고오른쪽마우스클릭 속성 을선택해볼것 [ 생각해보기 ] 옆과같은화면이나올것이다대상에있는
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 PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More information목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단
기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4
More informationvi 사용법
유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationuntitled
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 informationNo Slide Title
Copyright, 2001 Multimedia Lab., CH 3. COM object (In-process server) Eun-sung Lee twoss@mmlab.net Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea 0. Contents 1.
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationCKKeyPro 적용가이드
3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.
More informationSolaris Express Developer Edition
Solaris Express Developer Edition : 2008 1 Solaris TM Express Developer Edition Solaris OS. Sun / Solaris, Java, Web 2.0,,. Developer Solaris Express Developer Edition System Requirements. 768MB. SPARC
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
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 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 informationMPLAB 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 informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More information쉽게 풀어쓴 C 프로그래밍
제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기
More informationMicrosoft PowerPoint - 15-MARS
MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터
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 information1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi
5 주차 - AWS 실습 - SNS 시나리오 1. SNS Topic 생성 2. 3. 4. 5. Subscriptions 생성및 Confirm [ Email Test ] Message 발송 코드로보기 번외 ) SMS 발송하기 실습준비 HTML 파일, AWS 계정및 secretaccesskey, accesskeyid 간단설명 1. 2. 3. 4. SNS : 이메일,
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More information버퍼오버플로우-왕기초편 3.c언어에서버퍼사용하기 버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도
버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도존재할수있습니다. 이번시간엔프로그램에서버퍼를사용하는법, 그중에서도 C 언어에서버퍼를사용하는방법에대해배워보겠습니다. C 언어에서버퍼를사용하는가장쉬운방법은바로변수를선언하는것인데,
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 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 information제1장 Unix란 무엇인가?
1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More information이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다
이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,
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 informationMicrosoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx
1. MATLAB 개요와 활용 기계공학실험 I 2013년 2학기 MATLAB 시작하기 이장의내용 MATLAB의여러창(window)들의 특성과 목적 기술 스칼라의 산술연산 및 기본 수학함수의 사용. 스칼라 변수들(할당 연산자)의 정의 및 변수들의 사용 방법 스크립트(script) 파일에 대한 소개와 간단한 MATLAB 프로그램의 작성, 저장 및 실행 MATLAB의특징
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 information1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-
1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
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 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 informationMicrosoft PowerPoint - ICCAD_Analog_lec01.ppt [호환 모드]
Chapter 1. Hspice IC CAD 실험 Analog part 1 Digital circuit design 2 Layout? MOSFET! Symbol Layout Physical structure 3 Digital circuit design Verilog 를이용한 coding 및 function 확인 Computer 가알아서해주는 gate level
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More information3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20
3.20 테러 악성코드바이너리분석 손충호 (StolenByte) stolenbyte@wowhacker.org WOWHACKER Group 2013-03-20 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20 전체적인공격프로세스 페이지 2 / 20 1. 바이너리가사용할 LoadLibrary 하여함수 Load
More informationMicrosoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with
More informationBy Osiris
[CrackMe 10 종풀이 ] Written by Osiris (email, msn - mins4416@naver.com) by beistlab (http://beist.org) Synopsis 샤프를쓰는사람이라면누구나샤프심이나오지않아서고생했던적이있을겂이다. 그럴때는샤프를흔들어보고소리가나지않으면샤프심을넣어본다. 그래도샤프심이나오지않으면샤프를뜯어보고샤프심이나오는구멍이릵히짂않았는지확인핚다.
More informationInstall stm32cubemx and st-link utility
STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7
More information<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 informationSIGPLwinterschool2012
1994 1992 2001 2008 2002 Semantics Engineering with PLT Redex Matthias Felleisen, Robert Bruce Findler and Matthew Flatt 2009 Text David A. Schmidt EXPRESSION E ::= N ( E1 O E2 ) OPERATOR O ::=
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationBY-FDP-4-70.hwp
RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information슬라이드 1
CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe
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 informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More information_lena 한글페이지 2 당신이어떤정부또는불법복제방지그룹또는기타관련단체와제휴하거나공식적으로하나의노동자로일할경우이 web site에접속할수없습니다. 또한이 movie를볼수없습니다. cannot access any of its files and you can
20120328_lena 한글페이지 1 01.Olly + assembler + patching a basic reverseme 2011 년 12 월 1 일목요일 오후 11:00 Lena Reversing 01.Olly + assembler + patching a basic reverseme 번역자 : re4lfl0w / re4lfl0w@gmail.com Last
More informationIRISCard Anywhere 5
이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의
More information예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A
예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = 1 2 3 4 5 6 7 8 9 B = 8 7 6 5 4 3 2 1 0 >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = 0 0 0 0 1 1 1 1 1 >> tf = (A==B) % A 의원소와 B 의원소가똑같은경우를찾을때 tf = 0 0 0 0 0 0 0 0 0 >> tf
More informationDeok9_PE Structure
PE Structure CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 1. PE > 1) PE? 2) PE 3) PE Utility
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 information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류
More information본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo
본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasploit Framework(MSF) 이란? bluearth in N@R 2003년오픈소스로발표된취약점발견및공격을위한
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationgdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이
gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이나왔다한다. Debugging을하는가장원초적방법은프로그램소스를눈으로따라가며, 머리로실행시켜논리적오류를찾아내는것이다.
More information