Introduce
|
|
- 영후 강
- 6 years ago
- Views:
Transcription
1 Windows Hook Jerald Lee Contact Me : lucid7@paran.com 본문서는저자가 Windows Hook을공부하면서알게된것들을정리할목적으로작성되었습니다. 본인이 Windows System에대해아는것의거의없기때문에기존에존재하는문서들을짜집기한형태의문서로밖에만들수가없었습니다. 문서를만들면서참고한책, 관련문서등이너무많아일일이다기술하지못한점에대해원문저자들에게매우죄송스럽게생각합니다. 본문서의대상은운영체제와 Win32 API를어느정도알고있다는가정하에쓰여졌습니다. 본문서에기술된일부기법에대한자세한설명은책을참조하시길바랍니다. 제시된코드들은 Windows XP Service Pack2, Visual Studio.net 2003에서테스트되었습니다. 문서의내용중틀린곳이나수정해야할부분이있으면연락해주시기바랍니다. - 1 / 23 -
2 목차 1. WINDOWS HOOK 개요 WINDOWS HOOK WIDOWS 메모리관리 PE FORMAT RVA(Relative Virtual Address) Section PE Format의구조 PE Format 분석을위한도구들 DLL Introduce Dll Dll의종류 명시적로딩과암시적로딩 익스포트시주의할점 참고문서 / 23 -
3 1. Windows Hook 개요 1.1. Windows Hook 훅 (Hook) 이라는단어는 갈고리, 낚싯바늘 또는 ~ 을낚싯바늘로낚다 라는사전적의미를가지고있다. 그러므로 Windows Hook이라고하면 Windows 라는운영체제안에서무언가를낚아챈다 라는뜻으로이해할수있을것이다. MSDN 은 Hook 을다음과같이정의해놓고있다. A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure. 훅이란메시지핸들링매커니즘을가지고있는시스템에메시지가타켓윈도우프로시저에도착하기전에이들을모니터링하기위한어플리케이션을서브루틴으로써설치할수있는시점이다. ( 의역이라상당히다른뜻일수도있으니각자해석하시기바랍니다. - -;) 이러한 Hook을하기위한방법은여러가지가있는데일반적으로 Win32 API에서제공되는 SetWindowsHookEx(), UnhookWindowsEx() 함수를이용한메시지후킹을많이사용한다.( 전역훅에속하고시스템의성능이저하된다는단점이있지만많이애용되는방법중의하나다.) 국내보안업계에서는 2005년인터넷뱅킹서비스와관련하여비슷한작동을하는초보적인형태의프로그램을이용해 해킹이가능하다. 고객의아이디 / 패스워드를빼낼수있다 등의과장된형태로써보도가되어한때사회적이슈가된적이있었다. (Windows System Programming을해본사람이면누구나다가능한일이다. 언론기사의쓸데없는과잉보도로인해업무량이급증하면서신경이많이날카로워진적이있다. - -) Code Project 의 Three Ways to Inject Your Code into Another Process 문서에서는 Windows Hook을다음과같이세가지의형태로구분해놓았다. Local hooks 자신의프로세스에구성된스레드들의메시지트래픽을감시 Remote hooks 다른프로세스에속해진스레드들의메시지트래픽을감시 Remote hooks 현재시스템에서동작하는모든스레드들의메시지트래픽을감시 - 3 / 23 -
4 Local hooks의경우를제외하고는 Windows Hook을하기위해서는 Hook을수행하는코드가 Dll로작성되어타겟프로세스에로드되는형태라야만가능하다. 이를 Dll Injection이라고하며가장대중적으로이루어지는형태의훅이아닐까한다.(IAT를이용한훅도있으며제프리아저씨의책에서소개된바있다. 그외에도다양한방법의훅이있으며본문서에서다루어볼것이다.) 이 Dll Injection을하는방법역시많은문서에여러가지형태로발표되었으며, 일단 Dll이성공적으로로드되면그이후에할수있는작업들은매우다양한형태가될것이다. 일반적으로 API Hooking, Message Hooking 등의제목으로많은문서가존재하고있으며구글님께물어보면풍부한양의관련문서들을찾을수있다 Widows 메모리관리본격적인 Dll Injection에들어가기전에알아야할많은주제들중먼저 Windows 메모리관리에대해간단하게정리해본다. Windows는메모리관리를위해크게다음과같은관리기법을사용하고있다. 가상메모리 (Virtual Memory) 메모리맵 (Memory-mapped) 힙 (Heap) 이중에서가상메모리에대해서만알아본다. [Win32 의메모리관리구조 ] 프로그램이실행되기위해서는먼저메모리에적재되어야만한다. 즉, 큰프로그램을실행시 - 4 / 23 -
5 키기위해서는그만큼의메모리가더필요하다. 하지만주기억장치의용량에도한계가있기때문에보조기억장치를이용한가상메모리기법이등장하게된다. 즉, 가상메모리란하드디스크와같은스토리지시스템을병합하여시스템에한개이상의 RAM이설치된것처럼운영체제를속이는것이라고할수있으며 32비트컴퓨터의경우최대인식가능한가상의주소공간의크기는 4GB(2 32 ) 이다. 운영체제가하드디스크와같은스토리지시스템을가상메모리로서활용하기위해쓰는기법이 Swapping이며 Unix 및 Windows 모두사용되고있다. Swapping에대한자세한내용은운영체제책 ( 공룡책이라불리는책이가장쉽다 ) 을참고하기바란다. 일반적으로하나의프로그램이실행되기위해서프로그램전체가적재되어야할필요는없으며그대상은아래와같다. 쓰이지않는코드 ( 예외처리와같은 ) 행렬, 리스트, 테이블등과같은자료구조 같은시간에동시에쓰이지않은구조 위와같은것들은실행중인프로그램에서사용되지않을때메모리에적재되어있을필요가없으므로 Swapping을통해하드디스크에저장되어있다가프로그램이요구할때다시메모리로적재하게된다. 이와같은가상메모리를구현하기위해 Windows는 Demand Paging 기법을사용한다. 아래는가상메모리의구조이다.(Windows 2000 기준 ) - 5 / 23 -
6 [Windows 2000 가상메모리구조 ] Null 포인터할당파티션이파티션은프로그래머가널포인터할당을쉽게알아차리도록도와주는파티션이다. 만일프로세스의어떤스레드가이파티션의메모리를읽거나쓰려고한다면 CPU는접근위반을발생시키게된다. 사용자모드파티션프로세스의독립된주소공간이위치하는곳이며프로세스는다른프로세스의이파티션에위치하는데이터를읽거나쓸수없다 계열에서는모든 exe, Dll, 메모리맵파일들이이파티션에로드된다. 64KB 출입금지파티션 2000 계열에만존재하는이파티션은어떤파티션에대한접근도 Access Violation을발생하도록한다. 이는 Microsoft에서 Windows를구현할때커널모드의메모리파티션을쉽게보호하기위해만들어놓은일종의완충지대라고할수있는파티션이다. 커널모드파티션이파티션은운영체제자체의코드가존재하는곳이다. 스레드, 메모리, 파일시스템, 네 - 6 / 23 -
7 트워크, 모든디바이스드라이버등이여기에로드된다 계열에서이파티션은완전히보호되어있다. 페이징이란프로그램중자주사용되지않는부분의작업메모리를주기억장치인메모리로부터보조기억장치인하드디스크로옮기는방식을통해, 활용가능한메모리공간을증가시키기위한기법중의하나이며한번에옮겨지는메모리용량단위를페이지라고한다. 페이지의크기는프로세서의구조에따라틀리지만펜티엄이후 x86 프로세서는 4KB로고정되어있다. 페이지테이블을이용한주소매핑은아래와같다. [ 페이지테이블을이용한주소매핑과정 ] x86 의경우 2 단계페이지테이블을사용하며각페이지의크기는 10 바이트이다. 메모리관리장치는메모리접근요청들을감시하고, 또한각주소를페이지번호와페이지내의오프셋 ( 그림에서는변위로표시되어있음 ) 으로분할한다. 메모리관리장치는페이지표에있는페이지번호를확인하는데, 페이지표에는해당페이지가메모리에서디스크로옮겨졌는지또는메모리에아직존재하는지에관한정보들이표시되어있다. 만약메모리에존재하는페이지에대해접근하려는시도가있는경우라면, 가상의주소가실제주소로번역된후접근 - 7 / 23 -
8 이즉시허용된다. 그러나요청된페이지가이미디스크로옮겨진상태라면, 먼저메모리에현존하는다른페이지를디스크로옮겨서빈공간을만들어야만한다. 그다음디스크의스왑공간상에있던해당페이지가주기억장치인메모리로읽혀들여진다. 이때그페이지가이제는주기억장치내에존재한다는표시와함께메모리상의물리적인주소등페이지표의정보도함께갱신된다. 메모리관리장치는주기억장치로불려들어온이후에내용이수정된페이지가어떤페이지인지에관한정보기록도유지한다. 만약수정이된적이없고디스크로복사할필요가없는페이지는즉시재사용될수있다. 아래의그림을보면페이징테이블을이용한주소의매핑이좀더명확하게이해될것이다. [ 페이지테이블을이용한주소매핑예 ] 어떤새로운프로세스가생성되고주소공간이생성될때모든사용가능한주소공간은해제된상태로존재하며이주소공간을사용하기위해 Win32 API VritualAlloc() 함수로필요한공간을예약 (reserve) 하게된다. 이후확보된영역을사용하기위해실제메모리에매핑하는작업이필요하며이를커밋 (commit) 이라고한다. 이후매핑이끝난커밋된페이지는접근가능한상태가된다. Windows는페이징을이용해모든프로세스마다물리적인주소가겹치지않도록독립적인주소공간을제공하며각프로세스는서로의메모리영역에접근할수없다. 그렇기때문에 DOS나 16비트 Windows에서있었던, 하나의프로그램이 Crash 되었을때다른프로그램도영향을받는일이없어지게되었다.( 블루스크린 ) - 8 / 23 -
9 본문서에서말하고자하는 Dll Injection은이러한독립된프로세스의주소공간으로접근하여해당프로세스를조절하는것이목적이며좁은의미의 Windows Hook이라고할수있을것이다 PE Format IAT Table을이용한 Hook을이해하기위해반드시알아야만하는것이바로이 PE Format이다. 사실 IAT Table 변조는어떻게보면 Reverse Engineering 분야에속하기때문에다루지않으려고했지만 Windows Hook에대해소개된대부분의방법을정리해보자는취지로포함시키게되었다. PE 파일포맷에관한내용은매우방대하고잘정리된양질의문서또한매우많기때문에본문에서는모든것을세세하게설명하지않고필요하다고생각되는것만살펴보도록한다. ( 어디에무엇이있더라 ~ 정도는알아두어야만한다.) PE는 Portable Executable의약자로써이식가능한실행프로그램을뜻하며 Win32 플랫폼하에서공통으로사용할수있음을뜻한다. 또한 PE는 Microsoft Windows에서 EXE, Dll, OCX 등과같은확장자를가진파일에사용되는포맷으로써가장기본적인파일형식이라고할수있다. PE Format은 Unix System V 계열에서사용되는 COFF를변형시킨형태로써발전했으며 PE가 COFF의변형인관계로두파일포맷의구조는매우비슷하다. ( 최초의 Unix System에서는 a.out, System V 초기버전에서는 COFF, Windows NT는 PE, IBM은 IBM 360, Linux와 Solaris는 ELF 파일포맷을사용한다.) 먼저 PE Format 에사용되는용어들을살펴보자. 이름 Image File Object File RVA Virtual 설명 exe, Dll과같은확장자를가지는실행파일. 실행파일자체가가상주소공간에매핑되기때문에 Image( 그림자 ) 라는단어를쓰게되었으며이미지파일이라고하면보통 exe 확장자를가지는실행파일을지칭하기도한다. Object File은 Linker에입력되는파일이다. Linker는 Object File에서 Image File을생성하게되고생성된 Image File은 Loader에의해메모리로적재된다. Relative Virtual Address의약자로서상대적가상주소라고한다. 이미지가메모리에로드되었을때의그시작주소에대한상대적번지를의미하며메모리상에서의 PE의시작주소에대한오프셋으로생각하면된다. 이미지파일의시작주소를빼지않는것을제외하고는위에서살펴본 - 9 / 23 -
10 Address(VA) Section RVA와동일하다. 이주소는가상주소라고불리는데, Windows NT는각프로세스를위해물리적인메모리와는독립적인별개의가상주소공간을만들기때문이다. 가상주소는단지주소를고려하기위한것이며 RVA처럼예측가능하지않다. PE가가상주소공간에로드된뒤의실제내용을담고있는블록들이며일반적으로코드와데이터라고생각할수있다. 그리고프로그램실행에관련된여러정보들이이섹션안에배치된다 RVA(Relative Virtual Address) 위에서살펴본대로 RVA는상대적가상주소를뜻한다. 일반적으로파일상태로 2차메모리인하드디스크에존재하는 PE는가상메모리의어떤위치로로드될지미리알수없지만사실 NT의경우 Default로 0x 번지에이미지의시작부로부터로드되며이런이미지로딩시작번지의정보는 PE 파일내에존재한다. 따라서로드된후의가상번지값을기준으로하고그기준에대한상대적오프셋으로 PE 상에해당번지를기입하는것이며 RVA를계산하는법은아래와같다. [Real Address 계산 ] 실제주소번지 ( 가상주소 ) = 이미지로드시작번지 + RVA Section - 10 / 23 -
11 Section은같은역할을하는데이터를정리한블록이며 PE 파일이메모리에로드된후코드와데이터, 임포트 / 익스포트된 API들, 리소스, 재배치정보등과같이 PE 파일의실제정보는 section이라불리우는블록으로나뉘어지게된다. Windows에서는 Section을발견하면그것을배치할가상주소영역을확보해서 Section 데이터를통째로복사하며해당 Section에대한정보는 Section Table이나 Header에서얻는다 PE Format 의구조 PE 파일포맷의전체구조는아래그림과같다. [PE 파일포맷구조 1] - 11 / 23 -
12 [PE 파일포맷구조 2] PE 파일포맷을구성하는요소들을조금더자세히알아보도록하자. 아래의내용은 WinNT.h 헤더파일에기술되어있다. IMAGE_DOS_HEADER MZ 문자열로시작하는처음부터 40바이트까지의공간과 ( 그림 1에서는 Dos MZ Header, 그림 2에서는 DOS Header) DOS Stub를합친공간이다. 실행파일을바이너리에디터로열어보면처음시작부분이 MZ 문자열로시작하는것을알수있다. [IMAGE_DOS_HEADER] IMAGE_NT_HEADER 실질적인 PE 포맷이시작되는곳이며 PE 0 0 (0x ) 라는 4바이트문자의시그 - 12 / 23 -
13 너쳐를시작으로 IMAGE_FILE_HEADER(20byte), IMAGE_OPTIONAL_HEADER(96byte), Data Directory 배열 (128byte) 로구성되어있다. 그림에서는단순하게 PE HEADER로표현되어있다. 우리가관심을가져야할부분은바로이 Data Directory 배열부분이다. Data Directory 배열은 IMAGE_DATA_DIRECTORY 구조체의배열로구성되어있으며구조는아래와같다. [Data Directory 배열 ] 위의파란색으로표시된부분이보이는가? 이지겹고도어려운 PE Format의설명을들어온목적이바로 12번 Import Address Table 때문이다. IAT에관한사항은뒤에서더자세히살펴보도록한다. IMAGE_FILE_HEADER CPU 타입, 생성시간과같은기본적인정보를담고있다. IMAGE_OPTIONAL_HEADER ImageBase, AddressOfEntryPoint와같은정보를담고있다 / 23 -
14 Section Table 여기는 IMAGE_SECTION_HEADER들의배열로이루어져있으며 IMAGE_SECTION_HEADER에는.text,.data,.idata,.reloc 등의시작주소, 사이즈와같은정보를포함하고있다. Section PE 포맷이가상주소공간에로드된뒤의실제데이터를담고있는영역이며아래의표와같은것을포함하고있다. 종류 이름 설명 코드.text 프로그램을실행하기위한코드를담고있는섹션. CPU 레지스터의명령포인터인 ip는이섹션내에존재하는번지값을담게된다..data 초기화된전역변수가저장된다..rdata 읽기전용데이터섹션으로서문자열표현이나 c++/com 가상함수테이블등이.rdata에배치되는항목중의하나이다. 데이터 초기화되지않은전역변수가저장된다. VC++ 7에서는.textbss.bss 로나타난다. 실제 PE 파일내에서는존재하지만가상주소공간에매핑될때에는보통.data 섹션에병합되기때문에메모리상에서는따로존재하지않는다. 임포트 API.idata 정보익스포트 API 정보 임포트할 Dll과그 API에대한정보를담고있다. IAT가여기에존재한다..didat 지연로딩임포트데이터를위한섹션이다. 익스포트할 API에대한정보를담고있다. 이섹션역시.rdata.edata 나.text 섹션에병합되기때문에메모리상에서는따로존재하지않는다. 리소스.rsrc 다이얼로그, 아이콘과같은리소스관련데이터들이포함된다. 재배치정보.reloc 실행파일에대한기본재배치정보를담고있다. TLS.tls declspec(thread) 지시어와함께선언되는스레드지역저장소를위한섹션이다. C++ 런타임.crt 생략 Short.sdata.srdata 예외정보.pdata 디버깅.debug$S.debug$T - 14 / 23 -
15 .debug$p Directives.drectve PE Format 분석을위한도구들 지금까지살펴본 PE 파일포맷의구조를분석하기위한유용한도구들이많이있으며아래와같다. Dumpbin Visual Studio를설치시같이제공되는툴로서명령프롬프트상에서동작한다. [Dumpbin.exe 실행모습 ] PE Browser Smidgeonsoft( 에서제공하는 Visual 도구 - 15 / 23 -
16 LordPE PE Explorer - 16 / 23 -
17 그외 PE identifier, pe-scan 등이있으며입맛에따라골라쓰면된다 Dll 이번에는 Dll에대해살펴보도록한다. 거듭말하지만본인이 Windows System을잘모르는지라정확하고완전한설명이아니라는것을강조하고싶으며일단아는선에서책과문서를참고하여정리를해보자한다 Introduce Dll Dll은 Dynamic Link Library의약자이며 동적링크라이브러리 라고부른다. 일반적으로소스코드가컴파일된후링크될때라이브러리파일에서특정함수들의기능이구현된부분이실행파일에같이덧붙여지는정적링크라이브러리와는달리 Windows System은프로그램이실행될때 Dll 파일로부터특정함수들의기능이구현된부분을동적으로링크하는동적링크라이브러리를이용한다. 일단읽어온 Dll의함수는프로그램내부함수처럼호출할수있으며 Dll은필요한시점에메모리로읽어오고불필요하면메모리에서없앨수도있다 / 23 -
18 이러한 Dll 을사용시얻을수있는이점은다음과같다. 메모리와하드디스크를절약할수있다정적링크라이브러리를사용하는경우공통되는기능이여러프로그램에중복된형태로존재하게되어실행파일의크기가커지게된다. Dll 사용시여러프로그램이하나의 Dll을공유하는형태로실행되기때문에메모리와하드디스크를절약할수있다. 유지보수가간편하다. 실행파일과독립된형태로존재하기때문에보안버그와같이패치가필요할때 Dll 파일만패치한후배포함으로써간단히이루어진다 Dll 의종류 작성가능한 Dll 의종류에는두가지가있는데아래와같다. 일반 Dll 다른언어로작성된프로그램에서도쓸수있는범용적인 Dll. 단외부에서사용되기위해만들어지는함수는모두 C의형태로만만들어져야하며오버로딩, 클래스와같은기능은다른프로그램에서호출할수없다. 확장 Dll 일반 Dll의단점인오버로딩, 클래스와같은 C++ 의특징을이용할수있도록설계되었지만 C++ 에서만이용할수있다 명시적로딩과암시적로딩일반적으로 Dll은변수와함수들을외부어플리케이션이사용할수있도록제공하는역할만을하게되는데이렇게 Dll이변수나함수를외부로제공하는것을 export라하고 Dll이 export하는변수나함수를가져오는것을 import라고한다. 이 Dll을가져오는방법에따라명시적로딩과암시적로딩으로나뉘게된다. 암시적로딩암시적로딩방법은프로그램시작시해당 Dll을바로로드하는방법이며 MSDN에는아래와같이기술되어있다. DLL에암시적으로링크하려면실행파일에서 DLL 공급자로부터다음과같은항목을가져와야합니다 / 23 -
19 1. 내보내기함수및 / 또는 C++ 클래스의선언이들어있는헤더파일 (.H 파일 ) 2. 링크할가져오기라이브러리 (.LIB 파일 ). 링커는 DLL이빌드될때가져오기라이브러리를만듭니다. 3. 실제 DLL(.DLL 파일 ) DLL을사용하는실행파일에는내보내기함수를호출하는각소스파일마다내보내기함수또는 C++ 클래스가들어있는헤더파일이포함되어야합니다. 코딩관점에서볼때내보내기함수를호출하는것은다른함수호출과비슷합니다. 호출실행파일을빌드하려면가져오기라이브러리와링크해야합니다. 외부메이크파일을사용하는경우에는링크할다른개체파일 (.OBJ) 또는라이브러리가나열된가져오기라이브러리의파일이름을지정합니다. 운영체제에서호출실행파일을로드할때.DLL 파일을찾을수있어야합니다. 명시적로딩 프로그램실행중에 Dll을로드하여익스포트된함수를사용하는방법이며 MSDN에는아래와같이기술되어있다. 명시적링크의경우에는응용프로그램이런타임에함수를호출하여 DLL을명시적으로로드해야합니다. DLL에명시적으로링크하려면응용프로그램은다음과같은작업을수행해야합니다. LoadLibrary 또는이와유사한함수를호출하여 DLL을로드하고모듈핸들을가져와야합니다. GetProcAddress를호출하여응용프로그램이호출하려는각각의내보내기함수에대한함수포인터를가져와야합니다. 응용프로그램에서는포인터를통해 DLL의함수를호출하기때문에컴파일러는외부참조를생성하지않습니다. 따라서가져오기라이브러리와링크할필요도없습니다. DLL을사용할필요가없으면 FreeLibrary를호출해야합니다. 다음코드에서는이러한예를보여줍니다. typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);... HINSTANCE hdll; LPFNDLLFUNC1 lpfndllfunc1; DWORD dwparam1; UINT uparam2, ureturnval; // Handle to DLL // Function pointer - 19 / 23 -
20 hdll = LoadLibrary("MyDLL"); if (hdll!= NULL) { lpfndllfunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, "DLLFunc1"); if (!lpfndllfunc1) { // handle the error FreeLibrary(hDLL); return SOME_ERROR_CODE; } else { // call the function ureturnval = lpfndllfunc1(dwparam1, uparam2); } } 익스포트시주의할점 함수를익스포트하는방법은다음의두가지가있다. 모듈정의파일을준비해 EXPORTS 문을기술한다. EXPORTS _GetFuncNumber 소스코드내의함수정의에 _declspec 키워드로정의한다. extern c _declspec(dllexport) int GetFuncNumber(HWND hwnd) { Do Something } 대부분의개발자들이 _declspec 를이용한방법을사용할것이다. 문제는 extern c 에있다. 몇몇 dll injection 을소개하는책, 문서중에는이 extern c 를없이작성된 Dll 내의함수를 - 20 / 23 -
21 GetProcAddress(handle, 함수이름 ) 와같이호출하는예제가있는데당연히동작하지않는다. extern c 로정의하지않은경우위의예제에서 GetFuncNumber는 c++ 어쩌구저쩌구가된다.(c++ 로작성된코드의이야기이다. 확장자가 c라면이야기는틀려진다.) extern c 로정의했을때의 GetFuncNumber의내부이름은 _GetFuncNumber이되어서정상적으로함수를호출할수있다. export된함수명은 dumpbin.exe 파일의 /exports 옵션으로알수있다. 아래의코드와그결과를비교하면명확히알수있을것이다. #include <windows.h> HINSTANCE hinst; BOOL WINAPI DllMain(HINSTANCE hinstdll, DWORD dwreason, LPVOID lpreserved) { if(dwreason == DLL_PROCESS_ATTACH) { hinst = hinstdll; } return TRUE; } declspec(dllexport) LRESULT CALLBACK NoExternC(INT ncode, WPARAM wp, LPARAM lp) { } extern C declspec(dllexport) LRESULT CALLBACK ExternC(INT ncode, WPARAM wp, LPARAM lp) { } - 21 / 23 -
22 [export 된함수이름 ] Visual Studio 2003 환경에서는위의그림에서도보다시피 _function@number 형식으로나 온다. 왜이런지알수는없지만 Visual Studio 6.0 환경에서는정상적인 _function의형태로익스포트된다 / 23 -
23 참고문서 WebSite 1. Microsoft PE File Pormat API Hooking Revealed ( Documents 1. Windows 시스템실행파일의구조와원리, 이호동저, 한빛미디어 2. Debugging Applications for.net and windows, 존로빈스저, Microsoft Press - 23 / 23 -
Deok9_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 - 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 information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
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 informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationDLL(Dynamic Linked Library)
제 11 장동적연결라이브러리 11.1 DLL 의링크 11.2 DLL 의종류 실습 11-1 Implicit 링킹을통한정규 DLL 달력만들기 실습 11-2 Explicit 링킹을통한정규 DLL 달력만들기 실습 11-3 확장 DLL 을통한주민등록번호조회 프로그램만들기 DLL(Dynamic Linked Library) DLL 이란? 동적연결라이브러리 프로그램내부에라이브러리가있는것이아니라따로독립적으로실행가능한파일
More informationContent 1. DLL? 그게뭐야?
DLL Injection 은어떻게이루어지는가? By bl4ck3y3 (http://hisjournal.net/blog) Abstract 루트킷을비롯하여바이러스, 악성코드등여러분야에두루쓰이는기법이 DLL Injection입니다. Windows에한정되어적용되는것이지만, Windows 자체의점유율이높은이유로아주효과적으로공격자가원하는작업을수행할수있는방법이죠. 최근루트킷에대해공부하면서이
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationAdobe Flash 취약점 분석 (CVE-2012-0754)
기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker
More information제목
Development Technology Seminar 작 성 자 : 고형호 이 메 일 : hyungho.ko@gmail.com 최초작성일 : 2007.01.19 최종작성일 : 2007.02.05 버 전 : 01.05 홈 피 : www.innosigma.com Goal Exception Handling 1. SEH vs. CEH Exception Handling
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 - 09-CE-5-윈도우 핸들
순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정
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 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목 차 1. 개요 2. PE(Portable Executable) 이란? 3. IMAGE_DOS_HEADER 4. IMAGE_NT_HEADER 1) IMAGE_FILE_HEADER 2) IMAGE_OPTIONAL_HEADER 3) IMAGE_DATA_DIRECTORY
작성자 : 한서대학교 H.I.S.L 동아리진선호 sunho104@msn.com 본보고서의전부나일부를인용시반드시 [ 자료 : 한서대학교정보보호동아리 (H.I.S.L)] 를명시하여주시기바랍니다. - 1 - 목 차 1. 개요 2. PE(Portable Executable) 이란? 3. IMAGE_DOS_HEADER 4. IMAGE_NT_HEADER 1) IMAGE_FILE_HEADER
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -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 information1장 윈도우 프로그래밍 들어가기
1 장 윈도우프로그래밍들어가기 김성영교수 금오공과대학교 컴퓨터공학부 예제 다음프로그램은언제종료할까? #include #define QUIT -1 int Func(void) int i; cout > i; return i; void main(void) int Sum = 0, i; cout
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
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 informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
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 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 information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
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 informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More information<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>
2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
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 information<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>
01 : 윈도우프로그래밍기초 학습목표 윈도우운영체제와윈도우응용프로그램의특징을이해한다. SDK 응용프로그램작성과정, 기본구조, 동작원리를이해한다. MFC 응용프로그램작성과정, 기본구조, 동작원리를이해한다. 비주얼 C++ 개발환경사용법을익힌다. 윈도우운영체제특징 (1/3) 그래픽사용자인터페이스 1 윈도우운영체제특징 (2/3) 메시지구동구조 이벤트발생... 대기
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 informationC언어 및 실습 C Language and Practice
C언어 및 실습 C Language and Practice Chap. 2 : 변수의 영역 동국대학교 멀티미디어공학과 Young-Sik Jeong C 언어메모리구조 지역변수들이저장되는곳. 정확히는지역변수와그에따른환경이같이저장된다. 복귀주소와호출함수의환경이저장된다. 동적기억장소를위한공간. 프로그램이실행되는중간에필요에의해서할당받는메모리영역을통칭한다. 크기가정해져있지않고유동적이다.
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 information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
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 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 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
2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>
쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)
More information개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API
개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로...2 2. 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API 함수소개 SetWindowsHookEx 함수 5 UnhookWindowsHookEx 함수 5
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지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR
Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.
More informationIS119_Message.Hooking_이성재.hwp
Message Hooking 이성재 einsstar@is119.jnu.ac.kr Content 1. 목적 1 2. 윈도우 NT 환경에서의메시지처리 2 2.1. 메시지큐를이용한메시지처리 3 2.2. 윈도우프로시저에직접메시지전달 3 3. 메시지후킹이란 3 3.1. 메시지후킹의개념정의 3 3.2. 메시지후킹의유포방법 3 4. 후킹프로시저제작 3 4.1. 사전지식
More information슬라이드 1
핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton
More information1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할
15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p
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 informationMFC 프로그래밍
윈도우프로그래밍 Visual C++ 2010 MFC Programming 1 장. 윈도우프로그래밍기초 윈도우운영체제의특징 그래픽사용자인터페이스 시스템메뉴타이틀바메뉴최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 상태표시줄 스크롤바 윈도우운영체제의특징 메시지구동구조 윈도우운영체제의특징 멀티태스킹과멀티스레딩 멀티태스킹 (Multitasking) 운영체제가여러개의응용프로그램을동시에실행
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 information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More informationMicrosoft Word - [Windows Hook] 6.HideProcess.doc
Hide Process Last Update : 2007 년 6 월 11 일 Written by Jerald Lee Contact Me : lucid78@gmail.com 본문서는 SSDT Hook을이용한프로세스를감추는기술에대해정리한것입니다. 제가알고있는지식이너무짧아가급적이면다음에언제보아도쉽게이해할수있도록쓸려고노력하였습니다. 기존에나와있는여러훌륭한문서들을토대로짜집기의형태로작성되었으며기술하지못한원문저자들에게매우죄송할따름입니다.
More information슬라이드 1
BMP 파일구조 김성영교수 금오공과대학교 컴퓨터공학부 학습목표 BMP 파일의구조및그특징을설명할수있다. 파일헤더및비트맵정보헤더의주요필드를구분하고그역할을설명할수있다. C언어를사용하여 BMP 파일을처리할수있다. 2 BMP 파일구조 File Header (BITMAPFILEHEADER) Bitmap Info. Header (BITMAPINFOHEADER) Headers
More information<C6F7C6AEB6F5B1B3C0E72E687770>
1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More information유니티 변수-함수.key
C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)
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설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More informationPCServerMgmt7
Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network
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 informationSecure Programming Lecture1 : Introduction
Malware and Vulnerability Analysis Lecture1 Malware Analysis #1 Agenda 악성코드정적분석 악성코드분석 악성코드정적분석 정적분석 임의의코드또는응용프로그램을실행하지않고분석 ASCII 문자열 (ex. URL) API 리스트 Packing VT 기타등등 정적분석 : 파일식별 악성으로의심되는파일의형태식별 file
More informationMicrosoft PowerPoint - chap-02.pptx
쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 컴퓨터프로그래밍기초 프로그램작성과정 에디터 (editer) 컴파일러 (compiler) 링커 (linker) 로더 (loader) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe 통합개발환경 (IDE) 컴퓨터프로그래밍기초 2 프로그램작성단계 편집 (edit) 에디터를이용하여원하는작업의내용을기술하여소스코드작성
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 informationScalable Network-based Buffer Overflow Attack Detection
사례연구 : 보안강화를위한다형성도구 (Polymorphic Tool) 개발 임을규 (imeg@hanyang.ac.kr) 핚양대학교정보통신대학 유무선네트워크보안연구실 2008-02-18 1 Contents 용어설명 PE format의구조 실행압축 UPX 소스코드분석 Yoda s Protector Morphine 기존방법의문제점 다형성도구의응용 향후연구방향 참고문헌
More informationPowerPoint 프레젠테이션
1 Tizen 실습예제 : Remote Key Framework 시스템소프트웨어특론 (2014 년 2 학기 ) Sungkyunkwan University Contents 2 Motivation and Concept Requirements Design Implementation Virtual Input Device Driver 제작 Tizen Service 개발절차
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More informationSMB_ICMP_UDP(huichang).PDF
SMB(Server Message Block) UDP(User Datagram Protocol) ICMP(Internet Control Message Protocol) SMB (Server Message Block) SMB? : Microsoft IBM, Intel,. Unix NFS. SMB client/server. Client server request
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 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 - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More informationMicrosoft Word - windows server 2003 수동설치_non pro support_.doc
Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationMicrosoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]
리눅스 설치 Vmware를 이용한 Fedora Core 8 설치 소프트웨어실습 1 Contents 가상 머신 실습 환경 구축 Fedora Core 8 설치 가상 머신 가상 머신 가상 머신의 개념 VMware의 설치 VMware : 가상 머신 생성 VMware의 특징 실습 환경 구축 실습 환경 구축 Fedora Core 8 설치 가상 머신의 개념 가상 머신 (Virtual
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 information윈도우시스템프로그래밍
객체지향프로그래밍응용 Chap 4. 대화상자와컨트롤 (#1) 2013.09.27. 오병우 컴퓨터공학과금오공과대학교 Control 들을가진윈도우 Dialog 개요 사용자의입력을받기위한 Object 의집합 종류 프로그램수행도중사용자의입력이필요할때다이얼로그박스출력 다이얼로그박스는사용자로부터입력받은데이터를메인루틴에넘기고소멸 Modal Dialog Parent window
More informationPowerPoint 프레젠테이션
Win32 API Windows Programming 1 http://idb.korea.ac.kr DB & Mining LAB. Korea Univ. 최종업데이트 : 2012. 08. 14 1 컴퓨터시스템의주요구성요소 2 2 컴퓨터하드웨어구성 Fetch : 메인메모리에저장되어있는명령어를 CPU 로 Decode : 컨트롤유닛에의해분석 Execution : ALU
More informationIP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1
IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로
More informationMicrosoft PowerPoint - 04windows.ppt
Game Programming I Windows 프로그래밍 (1) March 27, 2006 목표 윈도우프로그래밍에서이용되는이벤트구동프로그래밍모델의이해 Direct3D 를이용하는윈도우어플리케이션의작성을위한최소한의코드이해 윈도우 (Win32) 어플리케이션 Direct3D API ( 어플리케이션프로그래밍인터페이스 ) 를이용하기위해필요 Win32 API 를이용해작성
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More information슬라이드 1
Delino EVM 용처음시작하기 - 프로젝트만들기 (85) Delfino EVM 처음시작하기앞서 이예제는타겟보드와개발홖경이반드시갖추어져있어야실습이가능합니다. 타겟보드 : Delfino EVM + TMS0F85 초소형모듈 개발소프트웨어 : Code Composer Studio 4 ( 이자료에서사용된버전은 v4..입니다. ) 하드웨어장비 : TI 정식 JTAG
More information원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를
리스트에대한설명중틀린것은 구조체도리스트의요소가될수있다 리스트의요소간에는순서가있다 리스트는여러가지방법으로구현될수있다 리스트는집합과동일하다 다음은순차적표현과연결된표현을비교한것이다 설명이틀린것은 연결된표현은포인터를가지고있어상대적으로크기가작아진다 연결된표현은삽입이용이하다 순차적표현은연결된표현보다액세스시간이많이걸린다 연결된표현으로작성된리스트를 개로분리하기가쉽다 다음은연결리스트에서있을수있는여러가지경우를설명했는데잘못된항목은
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 information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationSharing Memory Between Drivers and Applications
본컬럼에대한모든저작권은 DevGuru에있습니다. 컬럼을타사이트등에기재및링크또는컬럼내용을인용시반드시출처를밝히셔야합니다. 컬럼들을 CD나기타매체로배포하고자할경우 DevGuru에동의를얻으셔야합니다. c DevGuru Corporation. All rights reserved 기타자세한질문사항들은웹게시판이나 support@devguru.co.kr 으로 문의하기바랍니다.
More informationMicrosoft PowerPoint - chap12-고급기능.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 프레젠테이션
BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
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 informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More informationMicrosoft Word - PE Infection ? How to Inject a dll.doc
Black- out Frenzy [ B] (F) Security Researcher Center B0Frenzy.freehostia.com PE Infection How to Inject a dll www.mihanit.net Thank you to my friends who help me in this research (K053,Heli, L U C I F
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 information슬라이드 1
UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)
More informationDialog Box 실행파일을 Web에 포함시키는 방법
DialogBox Web 1 Dialog Box Web 1 MFC ActiveX ControlWizard workspace 2 insert, ID 3 class 4 CDialogCtrl Class 5 classwizard OnCreate Create 6 ActiveX OCX 7 html 1 MFC ActiveX ControlWizard workspace New
More informationDLL INJECTION AND CODE INJECTION OVERVIEW
Code injection using Dll injection Why do I write this document? 어느날갑자기는아니고진작에익혔으면문서화해놓았어야했는데 3~4 주전에소스만만들어놓고개인사정이있어서보류하다가작성한다. 이문서는개인적으로 Dll injection 과 Code injection 에대해서이해한내용을기록한문서이기에틀린내용이있을지도모르니주의
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)
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 informationPowerPoint 프레젠테이션
Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 27. 파일의분할과헤더파일의디자인 2013.09.11. 오병우 컴퓨터공학과 설계 (design) 중요 27-1 프로그램의모듈화 변경, 확장등의유지보수가용이하도록설계 C 언어에서는 module 구성중요 C++, Java 등의객체지향언어에서는 class, abstraction 중요 Design Patterns 에대해 2 학년여름방학이나겨울방학에공부해보시기바랍니다.
More informationFigure 5.01
Chapter 4: Threads Yoon-Joong Kim Hanbat National University, Computer Engineering Department Chapter 4: Multithreaded Programming Overview Multithreading Models Thread Libraries Threading Issues Operating
More information