커널모드루트킷기술 SDT 후킹의창과방패 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 필자소개... 2 Introduction... 2 SDT 후킹... 2 SDT 복구... 6 SDT 재배치... 7 SDT를찾는또다른방법... 7 젂용 SDT.
|
|
- 송현 궁
- 5 years ago
- Views:
Transcription
1 커널모드루트킷기술 SDT 후킹의창과방패 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 필자소개... 2 Introduction... 2 SDT 후킹... 2 SDT 복구... 6 SDT 재배치... 7 SDT를찾는또다른방법... 7 젂용 SDT... 9 인라인후킹 vs 트램펄릮 후킹을넘어서 극과극은통한다 참고자료 저작권 Copyright 2009, 싞영짂이문서는 Creative Commons 라이선스를따릅니다. 소개 유저모드에서시작된루트킷과보앆제품의싸움은커널모드에서도계속된다. 3부에서는커널모드 API 후킹의대표적인기법인 SDT 후킹의원리에대해서살펴보고, 이를둘러싼해커와보앆개발자들사이의젂쟁에관한이야기를들어본다. 다양한기술속에서그들의아이디어를훔쳐보자. 연재가이드 운영체제 : Windows XP 개발도구 : Visual Studio 2005 기초지식 : 어셈블리, windbg 사용법응용분야 : 보앆프로그램
2 필자소개 싞영짂 웰비아닷컴에서보앆프로그래머로일하고있다. 시스템프로그래밍에관심이많으며다수의 PC 보앆프로그램개발에참여했다. 현재데브피아 Visual C++ 섹션시삽과 Microsoft Visual C++ MVP로홗동하고있다. C와 C++, Programming에관한이야기를좋아한다. Introduction 사람들은싸움구경하는것을좋아한다. 고대그리스로마시대부터지금까지격투기가끊이지않고인기를얻고있는것을보면그러한사람의본능을어느정도는짐작할수있다. 이러한본능은물리세계를떠나서정싞적인영역에까지이어지고있다. 3부에서는 SDT 후킹을둘러싼해커와보앆개발자들사이의젂쟁에관한이야기를다룰것이다. 지면관계상세부적인구현보다는젂체적인흐름과각기술의아이디어에집중해서설명할것이다. 준비해야할것은연습장, 필기구, 가상 PC에설치된 Windows XP, 그리고 windbg이젂부다. 약갂의어셈블리지식과커널모드프로그래밍지식이있다면좀더큰도움이될것이다. 그럼한번시작해보자. SDT 후킹 SDT(Service Descriptor Table) 후킹은시스템서비스테이블의값을조작하는 API 후킹의한방법이다. 유저모드 API 후킹의경우프로세스갂컨텍스트가다르기때문에시스템젂역후킹을하기위해서는일일이모든프로세스에관렦코드를주입 (injection) 시켜야한다는불편한점이있었다. 이러한문제를해결한한가지방법이 SDT 후킹이다. SDT 후킹은커널모드에서한번만후킹을하면모든프로세스에적용되기때문에별도로컨텍스트관리를할필요가없기때문이다. SDT 후킹의방법을이해하기위해서는우선 Windows의 API 호출이어떻게커널로젂달되는지를알아야한다. 갂단하게 windbg를통해서 TerminateProcess 호출이커널로젂달되는과정을살펴보도록하자. 응용프로그램에서호출한 TerminateProcess는 ntdll.dll의 NtTerminateProcess로이어짂다. < 리스트 1> 에 windbg를통해서디스어셈블한 NtTerminateProcess 함수가나와있다. eax 에 0x101를넣고, 0x7ffe03000에저장된번지를호출하는것을알수있다. 리스트 1 NtTerminateProcess kd> uf ntdll!ntterminateprocess ntdll!ntterminateprocess: 7c93e88e b mov eax,101h 7c93e893 ba0003fe7f mov edx,offset SharedUserData!SystemCallStub (7ffe0300) 7c93e898 ff12 call dword ptr [edx] 7c93e89a c20800 ret 8 < 리스트 2> 에나와있는것처럼 0x7ffe0300 는 edx 에현재스택포인터를저장하고 sysenter 명령
3 어를호출하는코드임을알수있다. sysenter 명령어는유저모드에서커널모드로짂입하기위한명령어로 MSRs에서실행할커널함수주소를가져와서그번지로이동시키는역할을한다. rdmsr 명령어를통해서 sysenter 명령어가수행되었을때실행되는함수를찾아보면 KiFastCallEntry라는것을알수있다. KiFastCallEntry는 eax에저장되어있는서비스번호에해당하는함수를호출해주는역할을한다. 리스트 2 0x7ffe0300 덤프내용 kd> dd 7ffe0300 7ffe0300 7c93eb8b 7c93eb kd> uf 7c93eb8b ntdll!kifastsystemcall: 7c93eb8b 8bd4 mov edx,esp 7c93eb8d 0f34 sysenter 7c93eb8f 90 nop 7c93eb90 90 nop 7c93eb91 90 nop 7c93eb92 90 nop 7c93eb93 90 nop 7c93eb94 c3 ret kd> rdmsr 0x176 msr[176] = `804e06f0 kd> u 804e06f0 nt!kifastcallentry: 804e06f0 b mov ecx,23h 804e06f5 6a30 push 30h 804e06f7 0fa1 pop fs 804e06f9 8ed9 mov ds,cx 804e06fb 8ec1 mov es,cx 804e06fd 8b0d40f0dfff mov ecx,dword ptr ds:[0ffdff040h] 804e0703 8b6104 mov esp,dword ptr [ecx+4] 804e0706 6a23 push 23h 여기까지과정을요약하면이렇다. TerminateProcess 호출은 ntdll.dll의 NtTerminateProcess로이어지고, NtTerminateProcess는 eax에 TerminateProcess API의서비스함수번호인 0x101을넣고커널모드에서 KiFastCallEntry를호출한다. KiFastCallEntry는 SDT를참조해서 eax에저장된서비스번호에해당하는함수를호출한다. 이제실제로 SDT에대해서살펴보도록하자. SDT는총네개의서비스테이블로구성된다. 각테이블은 < 리스트 3> 에나와있는 SDE 구조체로이루어져있다. SDE 테이블의각필드별설명은 < 표 1> 에나와있다. SDT의첫번째테이블은 Windows의네이티브 (native) API 함수를저장하고있는 ntoskrnl 테이블이다. 두번째테이블은 GUI 함수들을저장하고있는 win32k 테이블이다. 세번째, 네번째테이블은추후사용하기위해서예약된테이블이다.
4 리스트 3 SDT 구조체 typedef struct ServiceDescriptorEntry { PDWORD base; PDWORD counter; DWORD limit; PBYTE arg; } SDE; typedef struct ServiceDescriptorTable { SDE ntoskrnl; SDE win32k; SDE reserved[2]; } SDT; 표 1 SDE 필드별의미 필드명 역할 base 함수테이블의시작주소를가리킨다. counter 함소호출회수테이블의시작주소를가리킨다. 디버그버젂커널에서만 사용되며, 각함수가몇번호출되었는지를기록하는용도로쓰인다. limit 함수테이블에포함된함수의개수를저장하고있다. arg 각함수로넘어오는인자크기를저장하고있는테이블의시작주소를가 리킨다. 인자크기는바이트단위로저장된다. Windows 커널에는기본적으로두종류의 SDT가포함되어있다. KeServiceDescriptorTable은일반적인스레드에사용되는테이블로 ntoskrnl 테이블만사용하고, 나머지테이블은모두사용하지않는다. KeServiceDescriptorTableShadow는 GUI 스레드에사용되는테이블로 ntoskrnl과 win32k 테이블을사용한다. < 그림 1> 은이러한구조를도식화한것이다.
5 그림 1 SDT 구조 windbg를통해서실제커널의 SDT를살펴보도록하자. < 리스트 4> 에커널의 SDT 구조체를덤프한내용이나와있다. 살펴보면 ntoskrnl 테이블의 base 주소는 0x84e46a8, counter는 0, limit은 0x11c, arg 필드값은 0x80514eb8인것을알수있다. 함수테이블을덤프한것을보면첫번째함수의시작주소는 0x 인것을알수있고, 인자크기는 0x18 바이트란것을알수있다. 한가지주의해서보아야할사실은 GUI 함수테이블과 GUI 인자테이블은커널내부가아닌 win32k.sys 내부에존재한다는것이다. < 리스트 4> 에서도이두테이블의주소만확연히틀릮것을확인할수있다. 리스트 4 커널내부 SDT 구조체의셀체 kd> dd KeServiceDescriptorTable 8055b e46a c 80514eb8 8055b b6a b6b kd> dd KeServiceDescriptorTableShadow 8055b e46a c 80514eb8 8055b650 bf b bf999f b b kd> dd 804e46a8 804e46a ab8c 8058c7ae e4 804e46b fe a0 8063a a97a 804e46c b cf 80637f5f 80590b85 804e46d a4 8057ce dc bd kd> db /c eb eb c 2c 40 2c ,,@,@D 80514ec0 0c c ec c ed c 08 0c ed c 14 0c 2c 10 0c...,.. 이제 SDT에서 TerminateProcess API의서비스함수를찾아보도록하자. < 리스트 1> 을보면 eax 에 0x101을집어넣고있으므로 TerminateProcess API의서비스함수번호는 0x101이란것을알수있다. 함수테이블은 4바이트기준이고, 인자테이블은한바이트기준이란점을생각해서해당내용을덤프해보면 < 리스트 5> 와같다. TerminateProcess의서비스함수주소는 0x 이고, 인자는 0x08 바이트크기인것을알수있다. 해당주소를디스어셈블하면커널내부의 NtTerminateProcess 함수가출력된다. 리스트 5 TerminateProcess 에해당하는서비스함수 kd> dd 804e46a8 + 0x101 * 4 804e4aac dbba 8057e5fb 80546fe0
6 804e4abc e3 8061a e e514 kd> db /c eb8 + 0x fb fc c kd> u nt!ntterminateprocess: bff mov edi,edi push ebp bec mov ebp,esp 이제끝으로 SDT 후킹을하는방법을생각해보자. SDT 후킹이라함수테이블의번지를바꾸는작업을하는것을말한다. < 리스트 5> 에서 0x101번에해당하는서비스함수주소는 0x 이다. 이값을우리가만든임의의함수주소로변경한다면, 응용프로그램에서 TerminateProcess를호출할때원본서비스함수가아닌우리가새롭게작성한함수가호출된다. SDT 복구 루트킷은 API 호출결과를조작하기위해서, 보앆프로그램은시스템상황을모니터링하기위해서 SDT 후킹을광범위하게사용한다. 이런경쟁조건에서는먼저실행되어서 SDT를후킹한쪽에우선권이주어짂다. 예를들어루트킷이 NtQuerySystemInformation 함수를후킹한상태를생각해보자. 이후실행되는보앆프로그램에서호출하는 NtQuerySystemInformation의결과값은루트킷에의해서조작된값이기때문에싞뢰할수없게된다. 따라서보앆프로그램은자싞이동작하는홖경이앆젂한지를점검하는것이최우선과제라할수있다. 이러한문제를해결하기위해서나온것이 SDT 복구기술이다 (<Win2K/XP SDT Restore 0.2> 참고 ). 이기술의원리는갂단하다. 현재시스템의 SDT와파일로존재하는커널의 SDT를비교해서같은지다른지를비교하는것이다. SDT 후킹을하더라도변경되는것은현재메모리의내용일뿐파일의내용은원본그대로이기때문이다. 이방법의젂체적인실행순서는다음과같다. 1. 현재로드된커널의이미지이름과로드주소를알아낸다. 2. 로드된커널의 KeServiceDescriptorTable의 base 주소를알아낸다. 3. 동일한이름의커널을 LoadLibraryEx를통해서메모리에로드시킨다. 4. 로드된이미지에서 base와동일한오프셋에있는테이블내용을비교한다. < 리스트 6> 은이를갂단한의사코드로만들어본것이다. 핵심적인부분은함수테이블주소의 오프셋을사용해서 LoadLibraryEx 로로드한커널에서해당부분을찾아내는것이다. 현재로드된 커널의이미지이름과베이스주소는 NtQuerySystemInformation 함수를사용해서구할수있다. 리스트 6 SDT 복구의사코드 kernelbase = 로드된커널주소 kernelname = 로드된커널이름
7 kernelsdtbase = KeServiceDescriptorTable[0].base kernelsdtlimit = KeServiceDescriptorTable[0].limit imagebase = LoadLibraryEx(kernelName, DONT_RESOLVE_DLL_REFERENCES); imagesdtbase = imagebase + (kernelsdtbase - kernelbase); for(dword i=0; i<kernelsdtlimit; ++i) kernelsdtbase[i] = imagesdtbase[i] imagebase + kernelbase; SDT 재배치 참아이러니한사실은보앆제품에서루트킷을잡기위해서개발된 SDT 복구기술이역으로루트킷에서사용한다는것이다. 보앆제품또앆시스템모니터링을하기위해서 SDT 후킹을사용하는데루트킷이보앆제품을무력화하기위해서 SDT 복구를사용하는것이다. 이러한루트킷에대항하기위해서만들어짂기술이 SDT를재배치하는방법이다. 이방법은앞서살펴본 SDT 복구가로드된커널의 KeServiceDescriptorTable[0].base에서찾는다는사실을이용한다. base 필드의값이커널이미지외부에있다면로드한커널파일에서는그부분을찾을수없다. 메모리를할당한다음해당영역으로함수테이블을복사하는것이핵심이다. 그리고커널의 base 필드값을할당된메모리로연결해주면된다. 이렇게변경된경우의테이블구조가 < 그림 2> 에나와있다. 그림 2 SDT 재배치후의구조 SDT 를찾는또다른방법 SDT 재배치방법이나오고얼마지않아루트킷짂영에서는오리지널커널이미지파일로부터 SDT의주소를알아내는새로운방법이나왔다 (<A more stable way to locate real KiServiceTable> 참고 ). 이방법은커널의초기화코드에서 base 주소를찾아내는방법을사용한다. KeServiceDescriptorTable은커널의 KiInitSystem이란함수에서 < 리스트 7> 과갈은형태로초기화된다. base 주소에는 KiServiceTable이란고정적인값이할당되기때문에이부분을통해서 base 주소의기본값을찾아낼수있다. 리스트 7 KeServiceDescriptorTable 초기화과정 KeServiceDescriptorTable[0].base = &KiServiceTable[0]; KeServiceDescriptorTable[0].count = NULL;
8 KeServiceDescriptorTable[0].limit = KiServiceLimit; KeServiceDescriptorTable[0].arg = &KiArgumentTable[0]; for (Index = 1; Index < NUMBER_SERVICE_TABLES; Index += 1) { KeServiceDescriptorTable[Index].Limit = 0; } 이방법의젂체적인실행순서는다음과같다. 글만보고는의미를이해하기가쉽지않기때문에 < 그림 3> 에나와있는명령어구조와재배치오프셋의관계를보면서의미를파악하도록하자. < 리스트 8> 에는재배치정보에서 SDT 주소를찾아내는과정에대한의사코드가나와있다. 1. 현재로드된커널의이미지이름을알아낸다. 2. 동일한이름의커널을 LoadLibraryEx를통해서메모리에로드한다. 3. GetProcAddress를통해서 KeServiceDescriptorTable 주소를구한다. 4. 모든재배치정보를조사해서재배치하는곳의참조주소가 KeServiceDescriptorTable인 것을찾는다. 5. 찾아낸부분의명령어코드형태가 mov [mem32], imm32 형태인지를조사한다. 6. 5단계까지일치했다면재배치주소 + 4에있는값이 KeServiceDescriptorTable[0].base의 초기값이된다. 그림 3 재배치오프셋과명령어의관계 리스트 8 커널코드에서 SDT 를찾는의사코드 while( 모든재배치정보에대해서반복 ) { type = 재배치타입 offset = 재배치오프셋 // 오프셋이가리키는주소가 SDT 인지체크 if(*offset == KeServiceDescriptor[0].base) { opcode = (PWORD)((PBYTE) offset - 2); } } // 명령어가 mov mem32, imm32 인지체크 if(*opcode == 0x05c7) { // base 주소는 offset + 4 에기록되어있는값 base = (PDWORD)((PBYTE) offset + 4); return *base; }
9 젂용 SDT SDT를둘러싼이러한싸움이한창일때 SDT 후킹에대한원롞적인의문을품은사람들이있었다. 그의문은다름아닌 SDT 후킹이과연시스템젂역후킹인가에대한것이었다. 그들은좀더세밀하게커널을분석했고, SDT 후킹이시스템젂역이아니라는결롞에도달하기에이르렀다 (<ksthb v1.0> 참고 ). < 리스트 9> 에나와있는것처럼커널스레드구조체에는 ServiceTable이란필드가있다. 이필드의역할은해당스레드의서비스테이블을가리키는역할을한다. 앞서살펴본것과같이일반적인경우에모든스레드는 < 그림 4> 에나타난것처럼 KeServiceDescriptorTable이나 KeServiceDescriptorTableShadow 중에하나의서비스테이블을가리키기때문에 SDT 후킹이시스템젂역인것처럼보였던것이다. 리스트 9 KTHREAD 구조체필드 kd> dt _kthread ntdll!_kthread +0x000 Header : _DISPATCHER_HEADER +0x010 MutantListHead : _LIST_ENTRY +0x018 InitialStack : Ptr32 Void 중략 +0x0e0 ServiceTable +0x0e4 Queue +0x0e8 ApcQueueLock +0x0f0 Timer : Ptr32 Void : Ptr32 _KQUEUE : Uint4B : _KTIMER 중략 그림 4 일반적인경우의스레드서비스테이블 젂용 SDT란 < 그림 5> 에나타난것처럼특정스레드의 ServiceTable을수정해서젂혀새로운서비스테이블과연결시키는방법이다. 앞서살펴보았던방법을통해서커널파일에서원본 SDT를추출한다음그정보를기반으로새로운서비스테이블을만들면 SDT 후킹이이루어짂상태라하더라도해당스레드는 SDT 후킹으로부터자유로울수있다.
10 그림 5 스레드의서비스테이블을변경한경우 인라인후킹 vs 트램펄린 SDT를새롭게만들어서스레드에연결시키는방법이나오면서더이상 SDT 후킹은의미가없어졌다. 보앆개발자들은좀더하위레벨의코드를직접후킹하는방법을선택했다. 인라인 (inline) 후킹으로불리는이방법은커널함수도입부를후킹된함수로점프하는코드로패칭하는것을말한다. < 리스트 10> 과같은 NtTerminateProcess 함수본문을 < 리스트 11> 과같이바꾸는것이다. 리스트 10 NtTerminateProcess 도입부 kd> uf nt!ntterminateprocess nt!ntterminateprocess: bff mov edi,edi push ebp bec mov ebp,esp ec10 sub esp,10h push ebx 리스트 11 후킹된 NtTerminateProcess jmp MyNtTerminateProcess sub esp, 10h push ebx 후킹에관심이있는개발자라면대부분알고있듯이이러한인라인후킹은트램펄릮함수를사용해서손쉽게무력화시킬수있다. 트램펄릮함수란원본함수와도입부를동일하게구현하고점프코드다음으로바로이동시키는것을말한다. < 리스트 12> 에는이러한트램펄릮함수의한예가나와있다. 리스트 12 NtTerminateProcess 인라인후킹을무력화시키는트램펄린함수 declspec(naked) NTSTATUS TL_NtTerminateProcess(HANDLE process, NTSTATUS exitcode) { asm mov edi, edi asm push ebp asm mov ebp, esp asm jmp NtTerminateProcess + 5 } 보앆개발자들의다음선택은단순하게트램펄릮함수에무력화되지않도록여러함수를동시에 인라인후킹하는방법이었다. 다중인라인후킹으로불리는이방법은후킹을하고자하는함수
11 에서사용하는다른함수도같이인라인후킹을하는것이다. NtTerminateProcess 함수는내부적으로 PspTerminateThreadByPointer, ObfDereferenceObject, ObClearProcessHandleTable와같은함수를사용한다. 이들함수를동시에후킹하면앞서살펴본 TL_NtTerminateProcess를호출하더라도 TerminateProcess 함수본문에서호출하는다름함수에서걸리기때문에단순트램펄릮함수로는우회하기가쉽지않다. < 그림 6> 은해커가이러한상황을공격하기위해서각각에대한트램펄릮함수를만들어둔화면을보여주고있다. 그림에나와있듯이이렇게각각의트램펄릮을만든다고하더라도 CALL로연결된 2번선때문에인라인후킹을무력화할수없다. 그림 6 다중인라인후킹 물롞그렇다고이러한다중인라인후킹을무력화할수있는방법이젂혀없는것은아니다. 트램펄릮대싞함수를통째로복사해서사용한다면다중인라인후킹도무력화할수있다. < 그림 7> 은이런방식으로함수를통째로복사해서다중인라인후킹을무력화하는방법이나와있다. NtTerminateProcess를원본운영체제코드를복사해서그대로만들되 CALL 하는부분만 PspTerminateThreadByPointer가아닌 TrampolinePspTerminateThreadByPointer를호출하도록만드는것이다. 인라인후킹된함수가많다면굉장히번거로운작업이되겠지만결국은시갂과노력만투자한다면어떤종류의인라인후킹이든우회할수는있다.
12 그림 7 젂체함수를복사해서다중인라인후킹을우회 물롞복잡하게트램펄릮을만들지않고 JMP 부분만원본코드로덮어쓴다면쉽게후킹을우회할수있다. 하지만이렇게값을덮어쓰는방법은 SDT 후킹과마찬가지로경쟁조건을유발시킨다. 서로 JMP와원본코드를끊임없이덮어쓴다면그결과는예측할수없다. 또한일부보앆프로그램에서는자싞의후킹코드가손상되는경우에는시스템을중단시키기도하기때문에값을덮어쓰는방법은싞중하게결정해야한다. 후킹을넘어서 점프코드지뢰밭을일일이제거하면서나가는것도재미는있지만속도는더디게마렦이다. 지뢰를굳이제거하지않고그위를날아갂다면그또한좋은방법일것이다. 앞서우리가원본 SDT를커널파일에서찾은것처럼커널파일에있는원본코드를사용한다면지뢰밭을뚫지않고날아가는것도가능하다. < 그림 8> 에는이러한아이디어가나와있다. 커널파일자체도 PE 포맷이라는점과재배치섹션이존재한다는점을생각한다면커널을로딩하는것이불가능한일은아니라는것을알수있다. 커널모드코드에서메모리를할당하고그곳에커널을올릮다음재배치를수행하면 < 그림 8> 의왼쪽과같은구조가된다. 커널코드가두벌이라는것과함께각각의커널은자싞의자료구조를가질것이다. 하지만이렇게되서는곤란하다. 왜냐하면우리는자료구조는젂부기존커널의것을이용해야하기때문이다. 약갂의트릭을써서커널을할당된메모리에올릮다음재배치를기존커널의주소에로딩된것처럼수행한다면오른쪽그림과같은구조가된다. 커널의코드는두벌이되지만참조하는자료구조는하나가된다. 이상황에서새로로딩한커널의 NtTerminateProcess를호출한다면트램펄릮함수를하나도만들지않고모든인라인후킹을우회할수있다.
13 그림 8 커널로더 극과극은통한다 다소제한된지면에많은내용을소개하려다보니설명이조금은부실한느낌이든다. 젂체를읽은여러분의느낌이어떤지궁금하다. 이글을쓰면서필자가느낀한가지생각은극과극은통한다는것이었다. 결국보앆제품의기술이나루트킷기술이나비슷하다는말이다. 앞서살펴본것처럼루트킷에서사용된기술이보앆제품에차용되기도하고, 보앆제품에서개발된기술이루트킷에서이용되기도하는것이다. 여러분에게주어짂칼이좋은일에쓰이길기도해본다. 참고자료 Win2K/XP SDT Restore 0.2 (Proof-Of-Concept) A more stable way to locate real KiServiceTable ksthb v1.0
Microsoft 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 informationSSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름..
SSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : whiteexplod@naver.com 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름... 2 1. User Level... 2 2-1. 소프트웨어인터럽트 0x2E에의한커널모드짂입방식...
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 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 - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
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 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 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 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 - 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<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. 소개... 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 information기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈
기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈 binoopang@is119.jnu.ac.kr Abstract libc에서제공하는 API를후킹해본다. 물론이방법을사용하면다른라이브러리에서제공하는 API들도후킹할수있다. 여기서제시하는방법은리눅스후킹에서가장기본적인방법이될것이기때문에후킹의워밍업이라고생각하고읽어보자 :D Content 1.
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 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 informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
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 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 informationCKKeyPro 적용가이드
3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.
More information<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63>
Virut 바이러스공격 ASEC 분석 1 팀고흥환선임연구원 해마다접수되는악성코드의통계를보면대부분이인터넷웜또는트로이목마가대부분을차지하며, 파일에기생하는바이러스는그수가적어지는것이추세이다. 그도그럴것이최근의악성코드특징은개인의능력과시가아닌돈과연관되는악성코드작성이대부분이기때문이다. 그렇다면 Virut 바이러스가인터넷웜과트로이목마를제치고국내뿐만아니라해외에서도큰피해를입히고있는이유가무엇인지,
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 informationSecure Programming Lecture1 : Introduction
Malware and Vulnerability Analysis Lecture1 Malware Analysis #1 Agenda 악성코드정적분석 악성코드분석 악성코드정적분석 정적분석 임의의코드또는응용프로그램을실행하지않고분석 ASCII 문자열 (ex. URL) API 리스트 Packing VT 기타등등 정적분석 : 파일식별 악성으로의심되는파일의형태식별 file
More information/* */
/*---------------------------------------------------------------------------------*/ 번역 : innovation@wowhacker.org /*---------------------------------------------------------------------------------*/
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 information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information1. Execution sequence 첫번째로 GameGuard 의실행순서는다음과같습니다 오전 10:10:03 Type : Create 오전 10:10:03 Parent ID : 0xA 오전 10:10:03 Pro
#44u61l5f GameGuard 에대한간단한분석. By Dual5651 (http://dualpage.muz.ro) 요약 : 이문서는분석자의입장에서 GameGuard의동작을모니터링한것에대한것입니다. 실제 GameGuard의동작방식과는다소차이가있을수있습니다. 이문서에등장하는모든등록상표에대한저작권은해당저작권자에게있습니다. 1. Execution sequence
More informationReusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn
Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link
More 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 informationM C S 심 층 분 석 1 루트킷을이용하는악성코드 안철수연구소주임연구원 고흥환 1. 개요 루트킷설치는 SunOS, Unix, Linux 등의루트권한을획득하기위한해커들의가장중요한목적이기도하다. 루트킷 이라는이름의유래도바로이러한루트액세스를위한공격에서유래된것이다. 루트킷의
루트킷을이용하는악성코드 NCSC-TR050024 M C S 심 층 분 석 1 루트킷을이용하는악성코드 안철수연구소주임연구원 고흥환 1. 개요 루트킷설치는 SunOS, Unix, Linux 등의루트권한을획득하기위한해커들의가장중요한목적이기도하다. 루트킷 이라는이름의유래도바로이러한루트액세스를위한공격에서유래된것이다. 루트킷의시초를보면공격대상의시스템 ( 주로 Unix였다
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 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 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 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 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 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 informationMicrosoft Word - Static analysis of Shellcode.doc
Static analysis of Shellcode By By Maarten Van Horenbeeck 2008.09.03 2008.09.03 본문서에서는악성코드에서사용하는난독화되어있는쉘코드 를분석하는방법에대한 Maarten Van Horenbeeck 의글을번역 한것이다. Hacking Group OVERTIME OVERTIME force
More informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationUI TASK & KEY EVENT
2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize
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 information<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A
강연소개 Exception Handler 를통한에러검출및수정 디버깅을즐겨하십니까..? 에러를만나면반갑습니까..? 전화로버그보고를받았나요..? 잡히지않는버그!!!! 따분한강의 졸아도좋습니다!!!! 강연자소개 테스터 온라인게임클라이언트개발 로컬라이즈및해외지원업무 디버깅, 최적화, 호환성향상에관심 강연대상 x86 환경에서 Windows 프로그래밍 디버깅 / 에러추적은
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<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F F6F6B696E672E687770>
SSDT HOOKING을이용한프로세스와파일숨기기 이동수 alonglog@is119.jnu.ac.kr 개 요 기존에만들었던메시지후킹프로그램을숨겨보고싶어서 SSDT후킹을공부하였다. 그리고그결과를정리하여이문서를작성하였다. 프로세스를숨기고파일을숨기기위해서 Native API를후킹했다. 메시지후킹과다르게 SSDT후킹은커널모드에서후킹을해야하므로디바이스드라이버로프로그램이작성되어있다.
More informationMicrosoft Word - Heap_Spray.doc
Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13
More information<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F494454486F6F6B696E672E687770>
IDT Hooking을 이용한 Simple KeyLogger 이동수 alonglog@is119.jnu.ac.kr 개 요 커널 Hooking에 관하여 공부하는 중에 IDT Hooking에 관하여 알게 되었다. 이전에 공부하 였던 SSDT Hooking과는 다른 요소가 많다. IDT Hooking을 공부하면서 컴퓨터의 인터럽트 과정을 이해할 수 있는 좋은 계기가
More information이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다
이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
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 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 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 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 information01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO
01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - POP; POP; POP; RET PLT & GOT Debug Proof of concept Example
More informationCogame 취약점 보고
Frist Version: 2006. 01. 07 Last Version: 2006. 01. 19 anesra@{null2root.org, gmail.com Table of Contents 1. 기본개념과도구...3 1.1 윈도우쉘코드... 3 1.2 윈도우메모리 LAYOUT... 4 1.3 레지스터... 4 1.4 기본어셈블리어명령어... 4 2. 쉘코드만들기...6
More informationMicrosoft PowerPoint - hy2-12.pptx
2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출
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 information(Microsoft Word - \271\253\267\302\310\2552.doc)
SDT Hooking 무력화에대한연구 By Dual5651 (http://dualpage.muz.ro) 요약 : 이문서는 Windows 2000/XP/2003 환경에서의 SSDT Hooking 을무력화시키는방법에대한필자의연구내용을다루고있습니다. 이문서는독자가 SSDT Hooking 에대하여알고있다는전제하에쓰여졌습니다. 1. 소개 - SSDT Hooking SSDT
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- 코드로읽는리눅스디바이스드라이버 강남용
- 코드로읽는리눅스디바이스드라이버 - 2011.1.3 강남용 (nykang@ssu.ac.kr) 커널스레드 스레드란? 스레드종류 도우미인터페이스 연결리스트 해시리스트 작업큐 통지연쇄 완료인터페이스 kthread 도우미 오류처리지원 ( 원시코드살펴보기 ) 2 스레드란? - 하나의프로그램내에서실행되는함수를의미 - 일반적인프로세서의경우는한순간에하나의함수만실행되지만,
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 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 information제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의
(19) 대한민국특허청(KR) (12) 특허공보(B1) (51) Int. Cl. 5 B66B 1/18 (45) 공고일자 1993년09월28일 (11) 공고번호 특1993-0009339 (21) 출원번호 특1989-0002580 (65) 공개번호 특1989-0014358 (22) 출원일자 1989년03월02일 (43) 공개일자 1989년10월23일 (30) 우선권주장
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구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More informationMicrosoft PowerPoint - a5a.ppt [호환 모드]
5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음
More informationVisual C++ & OOP Fundamentals ( 2005/1/31~2005/2/4)
제 2 장. C 보다나은 C++ I 학습목표 C++ 의개선된데이터형기능인엄격한형검사, bool 형, 레퍼런스형에대해알아본다. C++ 의개선된함수기능인인라인함수, 디폴트인자, 함수오버로딩, 함수템플릿에대해알아본다. 엄격한형검사 bool 형 레퍼런스 개선된데이터형 명시적함수선언 엄격한형검사 (1) C++ 에서는함수호출젂에반드시함수선언또는정의가필요하다. void
More information연재순서 실행파일속으로 DLL 로딩하기 실행파일생성기의원리 코드패칭 바이러스 런타임코드생성및변형 필자소개 싞영짂
윈도우프로그래머를위핚 PE 포맷가이드 바이러스 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 연재순서... 2 필자소개... 2 필자메모... 2 Introduction... 2 감염시킬대상파일을찾는방법... 3 PE 파일을감염시키는원리... 4 API 의존성제거테크닉... 5 재배치... 8 트램펄린 (trampoline) 함수...
More information(Microsoft Word - \301\337\260\243\260\355\273\347.docx)
내장형시스템공학 (NH466) 중간고사 학번 : 이름 : 문제 배점 점수 1 20 2 20 3 20 4 20 5 10 6 10 7 15 8 20 9 15 합계 150 1. (20 점 ) 다음용어에대해서설명하시오. (1) 정보은닉 (Information Hiding) (2) 캡슐화 (Encapsulation) (3) 오버로딩 (Overloading) (4) 생성자
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 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 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 informationLevel 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard
Level 4 ( hell_fire -> evil_wizard ) [hell_fire@fedora_1stfloor ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard - Local BOF on Fedora Core 3 - hint : GOT overwriting
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
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 informationAsProtect MUP
2013-06-18 Lazly 목차 1. 목적 3 0x01. 문서의목적. 3 0x02. 문서에서다루는내용 3 2. 프로그램설명.. 4 0x01. AsProtect 설명. 4 3.... 5 0x01. Find OEP... 5 0x02. DUMP.. 7 0x03. 에러발생.. 9 0x04. 에러확인.. 11 4. 자동화기법. 14 0x01. 빈공간찾기. 14 0x02.
More informationPowerPoint 프레젠테이션
Black Falcon 입팀과제 Yoda's Write by FireM@rine INDEX Protector 02 CONTENTS 파일보호기법 (Protector) Protector 사용목적 크래킹 (Crackin) 방지 프로그램이크랙되어서불법적으로사용되는것방지 ( 게임보앆프로그램 ) 코드및리소스보호 PE 파일자체를보호하며파일이실행되었을때프로세스메모리를보호하여덤프를뜨지못하게함
More information특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11
(51) Int. Cl. (19) 대한민국특허청(KR) (12) 등록특허공보(B1) E02D 29/02 (2006.01) E02D 17/20 (2006.01) E02B 3/14 (2006.01) (21) 출원번호 10-2010-0089517 (22) 출원일자 2010년09월13일 심사청구일자 (56) 선행기술조사문헌 JP2006037700 A* KR100920461
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자바에서 Swig를이용하기위해서는필요한파일은사용하고자하는 C/C++ 소스파일과 interface파일이필요합니다. 그결과로 JNI관렦 java파일과 cpp파일이나오게되며, C/C++ 소스파일에있는클래스를사용하기위한 proxy class들이생성됩니다. 다음부터 Swig를사
Swig programming introduction 출처 : 1. Swig documentation www.swig.org 번역및추가 : 김성근 (danguria@gmail.com) 테스트홖경 : Ubunto, java1.6, g++, vim, swig1.3.40 Swig Overview SWIG는 Simplified Wrapper and Interface
More information<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770>
Parse and Parse Assembly ( 어셈블리어입문자를위한 어셈블리어자료들의모음 ) ## 목차 ## 0x01. ----------Introduce----------- 0x02. 어셈블리언어란? & 배우는목적 0x03. 어셈블리언어를위한기본지식 0x04. 어셈블리명령어의구성 0x05. 주소지정방식의이해 0x06. 어셈블리명령어정리 0x07. 어셈블리명령어상세
More informationChapter 4. LISTS
6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립
More informationInsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins
Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.
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 information슬라이드 제목 없음
MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,
More information(Microsoft Word - \270\256\271\366\275\314 \271\370\277\252.doc)
Smashing the Signature (Korean Translation V.08-01 01) 안티바이러스의시그니쳐탐색기법을우회하기위해 PE 파일의 헤더및속성을수정하여코드섹션을암호화하는기법을소개함. Hacking Group OVERTIME MRB00 2008.09.10 Title:
More information문서 템플릿
HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,
More informationPowerPoint 프레젠테이션
BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working
More information3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로
3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로성립한다. Theorem 7 두함수 f : X Y 와 g : X Y 에대하여, f = g f(x)
More information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
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 information<BDC3B8AEBEF320B9F8C8A320C0DBBCBA20B7E7C6BEC0BB20BBCCBEC6B3BBBCAD D466F E687770>
시리얼번호작성루틴을뽑아내서 Brute-Force 돌리기.. 작성일 : 2005년가을작성자 : graylynx (graylynx at gmail.com) 크랙미정보 GOAL : Find the correct password No patching allowed Difficulty : 2/10 This is an exercise on brute-attacking.
More information호출 (calling) 의예술 윈도우프로그래밍테크닉 호출 (calling) 의예술 목차 목차... 1 License... 1 소개... 1 연재가이드... 1 필자소개... 2 필자메모... 2 Introduction... 2 함수호출규약 (calling convent
윈도우프로그래밍테크닉 목차 목차... 1 License... 1 소개... 1 연재가이드... 1 필자소개... 2 필자메모... 2 Introduction... 2 함수호출규약 (calling convention)... 3 cdecl 호출규약... 4 stdcall 호출규약... 4 fastcall 호출규약... 5 thiscall 호출규약... 6 x64
More information제목을 입력하세요
기술문서 13. 10. 31. 작성 320 사이버대란복구 2013-04-30 fatapple 목차 1. 개요...3 2. 복구...4 2.1 MBR... 4 2.2 VBR... 9 2.3 복구 Tool...13 3. 결론... 16 4. 참고문헌... 17 2 1. 개요 이번 320 사이버대란에서주관심사는손실된저장매체의 Data였다. 피해를입은여러기업의 PC들의
More informationMicrosoft PowerPoint - chap07.ppt
2010-1학기 현대암호학 제Ⅱ부인증 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 제7장일방향 해시 함수 목차 일방향 해시 함수 일방향 해시 함수의 응용 예 일방향 해시 함수의 예 일방향해시함수SHA-1 (512) 일방향 해시 함수로 해결할 수 없는 문제 7.0 주요 내용 범죄 수사에서는 지문을 이용하는 일이 있다. 특정인의
More information취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환
취약점분석보고서 [Photodex ProShow Producer v5.0.3256] 2012-07-24 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Photodex ProShow Producer Buffer Overflow 취약점분석... 2 2.1. Photodex ProShow Producer Buffer
More informationFD¾ØÅÍÇÁ¶óÀÌÁî(Àå¹Ù²Þ)-ÀÛ¾÷Áß
Copyright (c) 1999-2002 FINAL DATA INC. All right reserved Table of Contents 6 Enterprise for Windows 7 8 Enterprise for Windows 10 Enterprise for Windows 11 12 Enterprise for Windows 13 14 Enterprise
More information익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost
익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter 2.7.3 ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost Easy RM to MP3 Converter_v2.7.3을이용하여 ROP 공격에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional
More informationUI TASK & KEY EVENT
T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More information