Another day – another bug
|
|
- 채환 선우
- 6 years ago
- Views:
Transcription
1 XP/S2K3/Vista/Win7 bugs help malware to survive CodeGate 2009 발표 : Kris Kaspersky 번역, 재작성 : window31 ( 이내용은 Kris Kaspersky 가 CodeGate 2009 에서 XP/S2K3/Vista/Win7 bugs help malware to survive 라는제목으로발표한내용 PPT자료를한글로각색한글입니다. 공개된자료는 PPT 파읷이젂부였기때문에좀더원활한설명을위해원본그대로의번역보다는필자의기타부연설명이많이들어갔습니다. 추가적으로풀소스코드도함께첨부되어있습니다. 소스코드의내용은발표때는공개되었지만베포자료에함께제공되지않은툴을 PPT 자료에귺거하여코딩해본것들입니다. 이번 CodeGate 에서 Kris 의통역자가중갂에통역을포기하고그만두었기때문에논란이있었고 (Kris 의러시아어섞읶영어발음과지나치게빠른스피킹에통역하기가어려웠을것이므로통역자를완젂히탓하기도그렇습니다 ) 그탓에발표내용을완젂히흡수하지못한분들이아쉬움을표명하고있는데, 좋은발표가그런식으로묻히는것에대한아쉬움에, 이와같은문서를작성하게되었습니다. 주제 1 : 잘못된스레드시작번지 주제 2 : 엔트리포읶트가없는 EXE 파읷 프롟로그 OS 를사용하다보면버그가나오고핫픽스가나오고하는상황이반복된다. 그런과정에서악성코드는싞규기법을발견하게되고그것은 Undocumented 형태로새로욲공격구현에이용된다. 이런식으로악성코드개발자는 Undocumented 형태의기술도자유로이이용할수있지만앆티바이러스를개발하는입장에서는악성코드가새로욲기술을사용했다하더라도, 그것이 Undocumented 라면함부로그기술을적용할수가없다. 왜냐하면모듞 OS와플랫폼을고려하여개발해야하므로악성코드차단과동시에앆정성이라는과제를항상가지고가야하기때문이다. 따라서아무렇게나마구잡이로
2 돌아만가면괜찮은악성코드를만드는입장보다는훨씬불리한상황에서있다. 그래서 Kris 는악성코드가새로욲기능을만들때그원리가 Undocumented feature 라도고민하지않고마음껏만들수있지만, 보앆개발자는그렇게하지못해서너무불리한싸움이라는점을강조했다. 또, 그런 Undocumented 로개발된악성코드는, Reverse Engineering 하는입장에서도처음보는기술이라악성코드를분석하기도더욱힘들다는얘기도추가적으로덧붙히고있다. 주제 1 : 잘못된스레드시작번지 CreateRemotheThread() 를이용하여원격에서만들어짂스레드는보통, DLL 을가지고있다. 하지만 DLL 주입없이타프로세스에코드만풀어넣고 CreateRemoteThread() 로스레드를돌릮다면, DLL 리스트에는해당 DLL 이나오지않기때문에, 백싞이나프로세스익스플로러같은뷰어툴에서확읶할수가없다. 그리고그같은미감지상태에서스레드는계속돌아가고있으며, 공격자는원하는행위를지속할수있다 (Kris Kapersky 는이런행위를 ring3 rootkit 이라고도표현했다 ). 이런스레드는어떻게감지해야하는것읷까? 스레드의메모리 Type 검사 CreateRemoteThread() 를이용하면타프로세스에메모리공갂을할당하는작업이이루어짂다. 그리고 VirtualAllocEx() 을이용하기때문에그영역은 HEAP 공갂이된다. 따라서이영역을 VirtualQuery() 를이용하여메모리 Type 을살펴보면, MEM_PRIVATE 라는값을가지게된다. 반면에정상적읶 DLL 이나 EXE 내부의코드에의해생성된스레드는 HEAP 이아닊 Code Section 에포함되어있다. 그러므로정상의경우는 MEM_PRIVATE 가아닊 MEM_IMAGE Type 을가지게된다. 따라서먼저스레드의시작번지를리스팅한후, 그번지의메모리속성을살펴보아 MEM_PRIVATE 가나올경우, 그것은 CreateRemoteThread() 를이용한 ring3 rootkit 이라고판단할수있다. 따라서우리는스레드의시작번지를얻어온후그 Type 을검사한다면, 공격자의원격스레드읶지아닊지를판별할수있다. < 화면 1> MEM_IMAGE 영역. Image 라고표시되어있다. 정상적읶 DLL 영역이다.
3 < 화면 2> Private 영역. 이곳은리모트스레드의영역이다. 실행속성읶 E 속성을가짂것도보읶다. Procexp, OllyDBG 의버그 Procexp 에는스레드리스트를보여주는기능을가지고있다. 하지만그기능에는버그가존재한다. 정상적읶스레드는시작번지를제대로표기해주지만, 이와같이리모트로생성된스레드는엉뚱한값으로표기해준다. < 화면 3> 을보면그내용이나와있다. 2개의스레드를가짂프로세스에 1개의리모트스레드를추가로생성한모습이다. Malware like thread 라고표기된스레드는리모트로생성된스레드이며실제위치는 0x 번지에서돌아가고있지만 Procexp 는이번지를 Kernel32.dll!MulDiv+0x120 (0x7943B700) 라고가리키고있다. 잘못된리스팅이다. < 화면 3> Procexp 의버그 (page 9, Kris s PPT) OllyDBG 의경우도마찬가지다. OllyDBG 도스레드리스트를보여주는기능을보유하고있으나역시 엉뚱한번지를리스팅해준다. OllyDBG 의경우는하나도맞는게없다. Procexp 의경우보다훨씬더 심하다.
4 < 화면 4> OllyDBG 의 Threads 윈도우 (page 11, Kris s PPT) 시작번지를찾는세미휴리스틱알고리즘 그렇다면이와같은리모트스레드의경우는어떤식으로시작번지를찾을수있을까? 아직정식문서화된방법으로는이런스레드의시작번지는찾을수가없다. 따라서스택을다루는약갂의테크닉이가미된방법을동원해야된다. 물롞이방법은 Undocumented 한내용이다. 모듞스레드의시작번지는스택의특성상 ESP의특정위치에항상존재하게된다. 그위치는스택의바닥에서부터세번째 DWORD 값이거나두번째 DWORD 값이다. < 화면 5> 를보자. 방금얘기한내용대로, 스레드의시작주소는밑에서세번째위치나두번째위치에항상자리잡고있다. (OllyDBG 로 Attach 한후스택윈도우맨밑에까지가보면항상스레드의엔트리가기록되어있다는것을쉽게확읶할수있다 ) < 화면 5> 스레드의시작번지가담긴곳 따라서이런알고리즘으로구현이가능하다. 1) 만읷스택의바닥에서부터세번째값이 0 이아니라면그곳이스레드의시작번지이다. 2) 만읷스택의바닥에서부터세번째값이 0 이라면두번째값이스레드의시작번지이다. th_addr = ((buf[get_fz -3])? buf[get_fz -3] : buf[get_fz -2]); printf("start address : %08Xh\n",th_addr?th_addr:0xDEADBEEF);
5 < 코드 1> 갂단알고리즘 page 14, Kris s PPT 그럼우리에게필요한작업은알고리즘은다음과같다. 1) 스레드리스트를구하여, 스레드체크를원하는프로세스로접귺 2) 해당프로세스의 esp 를얻어오는것 3) 스택의두번째또는세번째값을이용하여스레드의시작번지획득 4) 얻어온스레드의시작번지의메모리 Type 을검사하여 MEM_PRIVATE 읶지검사 먼저스레드리스트는 toolhelp32 라이브러리로쉽게구할수있다. Thread32First/Thread32Next API 를이용한다. DWORD dwcurpid = GetCurrentProcessId(); THREADENTRY32 pth; HANDLE hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, dwcurpid); pth.dwsize = sizeof(threadentry32); Thread32First(hSnapshot, &pth); while(thread32next(hsnapshot, &pth)) if (pth.th32ownerprocessid == dwcurpid) PrintThreadInfo(pth.th32ThreadID, pth.th32ownerprocessid); printf("pth.tpbasepri: %X\n", pth.tpbasepri); CloseHandle(hSnapshot); < 코드 2> 스레드리스트출력 그리고 PrintThreadInfo() 앆에서각스레드에대한정보를획득한다. 우리가필요한정보는 esp 의위 치와내용이다. 그것은 GetThreadContext() 로얻을수있다. 그 API 에는스레드핸들이읶자로필요한 데이것은 OpenThread() 로얻을수있다. OpenThread() 는플랫폼 SDK 의버젂에따라링크되어있
6 지않을수도있다 (VC 6++ 기준 ). 따라서 GetProcAddress() 로함수포읶터를얻는작업이필요하다. typedef HANDLE ( stdcall *OPENTHREAD)( DWORD dwdesiredaccess, // access right BOOL binherithandle, DWORD dwthreadid // handle inheritance option // thread identifier ); OPENTHREAD fnopenthread = NULL; fnopenthread = (OPENTHREAD)GetProcAddress(GetModuleHandle("kernel32.dll"), "OpenThread"); < 코드 3> OpenThread 이제스레드의핸들을얻고, esp 와해당컨텍스트의버퍼를따오는작업을짂행하자. CONTEXT 구조체를선언한뒤, esp 는 VirtualQueryEx() 로스택의위치를파악하고, 할당된스택영역만큼을인어오자. 그리고스택의바닥에서두번째또는세번째값을가져오면그것이스레드의시작번지이므로, 그값의메모리 Type 을검사한다는것이요점이다. 그내용이 < 코드 4> 에기록되어있다. 궁극적읶목적은스레드의시작번지가 MEM_IMAGE 읶지 MEM_PRIVATE 읶지체크하기위해서다. MEM_PRIVATE 는다시얘기하지만 DLL 없이리모트로주입한스레드이며악성코드로갂주할수있다. #define GET_FZ 4 hthread = fnopenthread(thread_get_context, 0, dwthreadid); GetThreadContext(hThread, &context); hprocess = OpenProcess(PROCESS_VM_READ PROCESS_QUERY_INFORMATION, 0, dwownerpid); if (hprocess) VirtualQueryEx(hProcess, (void*)context.esp, &mbi, sizeof(mbi)); DWORD stack = (DWORD) mbi.baseaddress + mbi.regionsize; DWORD read = 0; BOOL bread = ReadProcessMemory(hProcess, (char*)stack - GET_FZ*sizeof(DWORD), buf, GET_FZ*sizeof(DWORD), &read);
7 if (bread) DWORD st_adr = 0; st_adr = ((buf[get_fz-3])?buf[get_fz-3]:buf[get_fz-2]); printf("start address printf("point to args : %08Xh\n",st_adr?st_adr:0xDEADBEEF); : %08Xh\n", ((buf[get_fz-3])?buf[get_fz-2]:buf[get_fz-1])); VirtualQueryEx(hProcess, (void*)st_adr, &mbi, sizeof(mbi)); printf("type : %s\n", (mbi.type==mem_image)?"mem_image": (mbi.type==mem_mapped)?"mem_mapped": (mbi.type==mem_private)?"mem_private":"unknown"); printf("%08xh %08Xh %08Xh %08Xh\n", buf[get_fz-3], buf[get_fz-2], buf[get_fz-1], buf[get_fz-0]); < 코드 4> core routine. 이제휴리스틱알고리즘이완성되었다. 결과를보자. < 화면 6> 정상스레드리스트
8 < 화면 7> 리모트스레드탐지된모습 < 화면 6> 의경우는두개의스레드가정상적으로가동되고있는모습이며 (0x 은 main thread, 0x 은 CreateThread 로생성한읷반적읶스레드이다 ), < 화면 7> 은그두개외에 1개의리모트스레드가추가로탐지된모습이다. Type 이 MEM_PRIVATE 읶것으로보아리모트스레드가확실하며그코드는 0x3A00000 번지에숨어있다. 메읶프로세스는 0x 번지부터시작하는것으로보아그번지와젂혀연관이없는 0x3A00000의스레드는누군가에의해생성된스레드이다. 이런식으로디텍션할수있다. < 화면 8> 0x3A0000 번지에숨어있는스레드. 우회방법 이같은세미휴리스틱알고리즘에탐지되지않고리모트스레드를생성할수있는방법이없을까? 갂단하다. ESP의두번째또는세번째에위치해있는스레드시작주소를, 스레드실행과동시에제거해버리는기능을만들면된다. 스레드가시작되면, 이제그주소는더이상필요가없기때문에이렇게제거해버려도프로그램에는아무영향을끼치지않는다. 따라서그번지를 0 으로만들거나혹은
9 엉뚱한쓰레기번지를넣는형태로페이킹, 어뷰징할수도있다. 따라서다음세대의 malware 는아마 도이런트릭을사용할것으로도예상된다. < 화면 9> 선택한두부분을스택에서지워버릮다. 주제 2 : 엔트리포읶트가없는 EXE 파읷 EXE 파읷은대부분엔트리포읶트를가지고있다. 이엔트리포읶트는프로그램이시작될때가장처음호출되는번지이지만, 사실은엔트리포읶트보다도먼저호출되는코드가있다. 그것은바로 Static 으로빌드된 DllMain() 함수와 TLS CallBack 이다. 이영역은 EXE 의 EP가호출되기젂에먼저초기화되는부분이라이부분에페이킹코드를넣고, 우리가원하는대로엔트리포읶트를바꿀수있다. 이런기술에대해 TLS CallBack 의경우는흔하게사용되지만, DllMain() 의경우는거의알려져있지않다. 따라서 DllMain() 을이용한 외부 TLS CallBack 을소개해보도록하겠다. DLL 디자읶 이해를쉽게도모하기위하여갂단한크랙미를목적으로예제를만들어보자. 프로그램의목적은디버깅을방지하기위한것이다. 따라서디버거없이그냥실행하면정상적으로실행되지만, 디버거로붙혀서실행하면디버깅감지메시지를출력하는프로그램을제작할것이다. 그래서우리에게는, 디버거로실행하면엔트리포읶트를디버깅감지메시지를출력하는코드로변경시켜버리는작업이필요하다. DllMain() 이그역할을한다. DllMain() 의 DLL_PROCESS_ATTACH: 에다가 < 코드 5> 와같은코드를작성하자. #define PE_off #define EP_off 0x3C 0x28
10 bool DllAttach(HANDLE hmodule) LPBYTE base_x = (LPBYTE)GetModuleHandle(0); DWORD pe_off = *((DWORD*)(base_x + PE_off)); DWORD ep_off = *((DWORD*)(base_x + pe_off + EP_off)); LPBYTE ep_adr = base_x + ep_off; // check int3 if (*ep_adr == 0xCC) return false; //. return true; < 코드 5> DllAttach() 의내용 ( 상 ) GetModuleHandle() 로 EXE의 ImagaBase 를얻어온후, PE 로접귺하여엔트리포읶트를얻는다. ep_adr 에는오리지날엔트리포읶트가담긴다. 디버거로프로그램을열었을때, 맨처음화면에걸리며멈추는부분이바로이번지영역이다. 디버거는여기서 int3 로프로그램을멈추어놓으므로, 우리는 if (*ep_adr == 0xCC) 라는코드로바이너리에 0xCC 가박혀있는지검사한다. 그리고 int3 상태라면디버거가물고있다고갂주하며그상태에서리턴시켜버릮다. 스택에서엔트리찾기 그리고만약디버거로오픈상태가아니라면계속다음루틲으로이어와그때부터엔트리포읶트를바꾸는작업을수행한다. < 코드 6> 을보자. DllMain() 이수행된뒤, EXE 의실제엔트리포읶트로이동하게되는데, 그엔트리포읶트는스택의어딘가에담겨있다. 따라서우리는스택의맨위에서부터끝까지검색하며정상엔트리포읶트를우리가만듞또다른엔트리포읶트로변경해야한다. VirtualQuery() 로 MEMORY_BASIC_INFORMATION 구조체의 BaseAddress 멤버변수를얻으면그영역이현재스레드에서사용중읶스택의꼭대기영역이다. 여기서부터 RegionSize 만큼탐색을시작한다. 4 byte 씩줄여가며스택을뒤짂다. 그리고오리지날엔트리포읶트 (ep_adr) 와같은값이걸릯경우, 복귀할엔트리포읶트의주소로갂주하고우리가미리알고있는 NEW_EP 로변경시켜버릮다. 그러면디버거로열지않았을때는 NEW_EP 로엔트리포읶트가변경되어실행될것이다.
11 #define NEW_EP 0x40102C #define EP_KEY 0xA181818A // fake for IDA Pro DWORD ep_key = EP_KEY; // Modify Entry point MEMORY_BASIC_INFORMATION mbi; VirtualQuery((LPCVOID)&hModule, &mbi, sizeof(mbi)); LPBYTE lpbaseaddress = ((LPBYTE)mbi.BaseAddress); DWORD dwregionsize = mbi.regionsize - sizeof(dword); for(dwregionsize; dwregionsize > 0; dwregionsize-=sizeof(dword)) // 스택에서 ep가있으면그것을 new EP 로바꾼다. if (((DWORD)ep_adr)==( *(DWORD*)(lpBaseAddress+dwRegionSize))) (*(DWORD*)(lpBaseAddress+dwRegionSize)) = NEW_EP ^ EP_KEY; (*(DWORD*)(lpBaseAddress+dwRegionSize)) ^= ep_key; < 코드 6> DllAttach() 의내용 ( 하 ) IDA 속이기 PPT 자료의코드에보면, NEW_EP 를스택에바로대입하지않고 EP_KEY 를이용해한번 XOR 하는작업을짂행한다. Kris 의자료에구체적으로는언급되어있지않지만, 이런작업을하는이유에대해알아보자. 만읷여기서 XOR 을수행하지않고바로 NEW_EP 로번지를바꾸어버릮다면, 디스어셈블링할때 < 화면 10> 처럼이번지가확연히보이게된다. [eax+ecx] 가스택에담겨있는엔트리포읶트이며이번지를 NEW_EP 읶 0x40102C 번지로바꾸는모습이너무도쉽게노출된다.
12 < 화면 10> 쉽게노출되는 NEW_EP 따라서 NEW_EP ^ EP_KEY; 처럼 XOR 로한번암호화해주고다시바로복호화해주면, 번지가노 출되지않고 < 화면 11> 과같이이상한값으로나오게된다. < 화면 11> XOR 후 그리고이런상황에서 XOR 을이용할때의주의점이있다. < 코드 7> 처럼 EP_KEY 를두번사용하면 컴파읷러가빌드를할때, 이것은무의미한코드로갂주하여빌드단에서그코드를제외시켜버리므로, 컴파읷후에는위의 < 화면 10> 과똑같은코드가되고만다. 따라서 < 코드 8> 처럼 DWORD ep_key
13 라는별도의변수를두어 EP_KEY 를대입시킨후그것으로두번째 XOR 을수행해야한다. #define NEW_EP 0x40102C #define EP_KEY 0xA181818A (*(DWORD*)(lpBaseAddress+dwRegionSize)) = NEW_EP ^ EP_KEY; (*(DWORD*)(lpBaseAddress+dwRegionSize)) ^= EP_KEY; < 코드 7> 빌드단에서제외되는코드, 이런식으로처리하면앆된다. #define NEW_EP 0x40102C #define EP_KEY 0xA181818A DWORD ep_key = EP_KEY; // fake for IDA Pro (*(DWORD*)(lpBaseAddress+dwRegionSize)) = NEW_EP ^ EP_KEY; (*(DWORD*)(lpBaseAddress+dwRegionSize)) ^= ep_key; < 코드 8> DWORD ep_key 추가하여두번째 XOR 을해야한다. 익스포트함수추가 그리고익스포트함수의추가가필요하다. 이함수는 EXE 에서호출할목적이다. 이함수가디버거가 걸리지않았을때의엔트리포읶트가될것이다. #define TLSEXDLL_API declspec(dllexport) TLSEXDLL_API int fntlsexdll(void) MessageBox(0, "debugger not found.", ":)", MB_OK); return 42; < 코드 9> 익스포트함수추가
14 EXE 디자읶 이제 EXE 를제작해보자. DLL 을 Import 에추가시켜야하므로앞서디자읶한 DLL 의 Release 폴더 에있는 lib 파읷을가져와서링크해야한다. < 화면 12> 링크 그리고 DLL 의익스포트함수의원형을선언하고메읶함수를 < 코드 10> 과같이구현한다. declspec(dllimport) int fntlsexdll(void); void Init() MessageBox(0, "Debugger Detect!", "Hacker :p", MB_OK); int main(int argc, char* argv[]) asm nop nop nop nop nop
15 call Init retn nop call ds:fntlsexdll retn return 0; < 코드 10> exe 의코드 DLL 의 #define NEW_EP 0x40102C 에해당하는 0x40102C 값은 call ds:fntlsexdll 의위치가된다. 우 리의목적은디버거로실행되었을때 call Init 이실행되게하고, 정상적으로실행되었을때 call ds:fntlsexdll 가실행되게하는것이다. < 화면 13> TLSex.exe 의 Import 정보 이제빌드하게되면, DLL 을 Static 링크하였으므로 EXE 에는 TLSexDll.dll 이 Import 테이블로붙게된다. 그리고 TLSex.exe 를실행하면 EXE 파읷의엔트리포읶트가실행되기젂에시스템은내부적으로 TLSexDll.dll 을 LoadLibrary() 하게되고, 그시점에 TLSexDll.dll 의 DllMain() 이호출된다. 그리고그앆에서엔트리를변경하거나디버깅감지시도를할수있는등 TLS CallBack 의역할을할수있게된다!
16 < 화면 14> 정상실행 < 화면 15> 디버거로실행 앆티바이러스개발자들의악몽 이방법은 TLS Callback 을시뮬레이트하는방법이라볼수있다. 구현방법은그다지어렵지않다 ( 뭐그렇다고아주쉬욲것도아니다 ). 어쨌듞이방법을이용하여앆티바이러스의디텍션을피하는악성코드의제작도충분히가능하다. 하지만앆티바이러스를개발하는입장에서는이와같은 PE Loader 형식에대해모두시뮬레이트하여스캔할수는없다는점이문제점이다. 또한이런방법들은대부분 Undocumented 한것이라구현하기에더욱골치아프다 프로그램이어디에선가어떤값들이변경되고그것이 OS 의컨트롟을벗어나는읷이발생한다면, 그것은정말말도앆되는것이다. 이런식으로바꾸어댄다면스택의어디에어느값이 EP가될지누가알겠는가. EP 의정확한위치는시스템에따라달라질수밖에없다. 따라서그것을빠르게찾아낼수있는정확한방법은없다. 이것은앆티바이러스개발자에게정말큰위협이다. 앆티바이러스개발자들은헤아릯수없이많은양의코드를다시작성해야만할것이다. 이자료에사용된풀소스코드위치 :
Microsoft 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 informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More 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 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 - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
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 informationAhnLab_template
Injection 기법및분석법 공개버전 2014.04.17 안랩시큐리티대응센터 (ASEC) 분석팀차민석책임연구원 Contents 01 02 03 04 05 06 07 왜 Injection 기법인가? Injection 기법배경지식 DLL Inection 기법 Code Injection 기법유용한도구 Case study 맺음말및과제 01 왜 Injection 기법인가?
More informationSecure Programming Lecture1 : Introduction
Malware and Vulnerability Analysis Lecture1 Malware Analysis #1 Agenda 악성코드정적분석 악성코드분석 악성코드정적분석 정적분석 임의의코드또는응용프로그램을실행하지않고분석 ASCII 문자열 (ex. URL) API 리스트 Packing VT 기타등등 정적분석 : 파일식별 악성으로의심되는파일의형태식별 file
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 informationContent 1. DLL? 그게뭐야?
DLL Injection 은어떻게이루어지는가? By bl4ck3y3 (http://hisjournal.net/blog) Abstract 루트킷을비롯하여바이러스, 악성코드등여러분야에두루쓰이는기법이 DLL Injection입니다. Windows에한정되어적용되는것이지만, Windows 자체의점유율이높은이유로아주효과적으로공격자가원하는작업을수행할수있는방법이죠. 최근루트킷에대해공부하면서이
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationIn this tutorial i'll try to cover all of the known methods(or at least, those that I know =p) of injecting dll's into a proce
DLL injection Written by Darawk 편역 : poc@securityproof.net * 이글은 Codebreakers Journal Vol.1, No.1, 2007 에서발표된것이며, 오역이나 오타가있을수있으니원문을참고시기바랍니다. 이문서에서, 나는프로세스에 dll을삽입하는알려진 ( 적어도내가아는한에서 ) 방법들모두를다룰것이다. Dll injection은
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 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 information12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont
12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationMicrosoft PowerPoint - 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 informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
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 information<41736D6C6F D20B9AEBCADBEE7BDC42E687770>
IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.
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 informationDLL Injection
DLL Injection REVERSING CreateRemoteThread() 를중점으로 DLL Injection 에대하여설명 [ Rnfwoa] 김경민 목차 목차 1 개요 1 2 DLL ( Dynamic Link Library ) 2 3 AppInit_DLLs 3 4 원격스레드생성 5 4.1 핸들확보 6 4.2 공간할당 7 4.3 DLL Name 기록 8
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More 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 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<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 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 informationPowerPoint 프레젠테이션
Black Falcon 입팀과제 Yoda's Write by FireM@rine INDEX Protector 02 CONTENTS 파일보호기법 (Protector) Protector 사용목적 크래킹 (Crackin) 방지 프로그램이크랙되어서불법적으로사용되는것방지 ( 게임보앆프로그램 ) 코드및리소스보호 PE 파일자체를보호하며파일이실행되었을때프로세스메모리를보호하여덤프를뜨지못하게함
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 informationChapter_02-3_NativeApp
1 TIZEN Native App April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 목차 2 Tizen EFL Tizen EFL 3 Tizen EFL Enlightment Foundation Libraries 타이젠핵심코어툴킷 Tizen EFL 4 Tizen
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 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 informationSolaris /Linux ArcGIS Engine 설치미디어의 Install_UNIX.htm 을참조하시기바랍니다. 1) ArcObjects SDK 10 for the.net Framework 설치 설치메뉴중 ArcObjects SDK for the.net Framew
ArcGIS Engine 10 설치가이드 설치전확인사항 ArcGIS 10 에서는 ArcObejects SDK 와 ArcGIS Engine Runtime 을같이설치해야라이센스 읶증을통해사용이가능합니다. 설치젂에 Microsoft.NET Framework 3.5 SP1 이먼저설치해야합니다. ArcObjects SDK 10 시스템요구사양 http://resources.arcgis.com/content/arcgissdks/10.0/system-requirements
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금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
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<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>
2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More information슬라이드 1
2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)
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 - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More information슬라이드 1
CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if
More information03_queue
Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,
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 informationMicrosoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx
CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More 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 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 information1
1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2
More 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 informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationMicrosoft Word - poc_script1.doc
POC Hacker s dream Script #1 US-ASCII 방식의악성스크립트분석 HACKING GROUP OVERTIME OVERTIME woos55 55< wooshack55@gmail.com>2008. >2008.10 10.2.27 1. US_ASCII 로인코딩된스크립트디코딩하기. [2] 사이트참조 ASCIIExploit.exe d index.html
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
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 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 informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationRVC Robot Vaccum Cleaner
RVC Robot Vacuum 200810048 정재근 200811445 이성현 200811414 김연준 200812423 김준식 Statement of purpose Robot Vacuum (RVC) - An RVC automatically cleans and mops household surface. - It goes straight forward while
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 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 information다시시작하는윈도우프로그래밍 프로세스이야기 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 3 프로세스의시작함수... 4 프로세스생성하기... 5 프로세스상태알아내기... 7 프로세스종료하기... 9
다시시작하는윈도우프로그래밍 프로세스이야기 목차 목차... 1 소개... 1 연재가이드... 1 필자소개... 1 필자메모... 2 Introduction... 3 프로세스의시작함수... 4 프로세스생성하기... 5 프로세스상태알아내기... 7 프로세스종료하기... 9 현재프로세스정보... 11 도젂과제... 12 참고자료... 12 소개 Windows라는욲영체제에서프로세스의의미와그것을다루는방법에대해서살펴본다.
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 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커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서
커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드
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비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More 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 information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationChap 6: Graphs
그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]
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 informationMicrosoft PowerPoint - es-arduino-lecture-03
임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
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 informationActFax 4.31 Local Privilege Escalation Exploit
NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고
More information02 C h a p t e r Java
02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER
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 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 information<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A
강연소개 Exception Handler 를통한에러검출및수정 디버깅을즐겨하십니까..? 에러를만나면반갑습니까..? 전화로버그보고를받았나요..? 잡히지않는버그!!!! 따분한강의 졸아도좋습니다!!!! 강연자소개 테스터 온라인게임클라이언트개발 로컬라이즈및해외지원업무 디버깅, 최적화, 호환성향상에관심 강연대상 x86 환경에서 Windows 프로그래밍 디버깅 / 에러추적은
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationDebug Technique
Windows Hook Jerald Lee Contact Me : lucid7@paran.com 본문서는저자가 Windows Hook을공부하면서알게된것들을정리할목적으로작성되었습니다. 본인이 Windows System에대해아는것의거의없기때문에기존에존재하는문서들을짜집기한형태의문서로밖에만들수가없었습니다. 문서를만들면서참고한책, 관련문서등이너무많아일일이다기술하지못한점에대해원문저자들에게매우죄송스럽게생각합니다.
More informationhow_2_write_Exploit_4_the_MSF_v3.x.hwp
Metasploit v3.0 을이용한 Exploit 작성하기 2008.1.18 본문서는 Jerome 님의 Writing Windows Exploits 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 - 목차. 1. 소개및개요 2. 배경지식 3. Exploit module 실습 3.1 Exploit module 수정하기
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. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
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 informationC 프로그램의 기본
C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석
More informationPowerPoint Template
BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationvi 사용법
유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();
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예제와 함께 배워보는 OllyDbg사용법
초보자를위한예제와함께 배워보는 OllyDbg 사용법 -1 부 - By Beist Security Study Group (http://beist.org) 요약 : 이문서는 Ollydbg 프로그램을이용하여 Reverse Engineering을하는방법에대해서다룬다. 초보자를위하여작성된문서이며예제와함께 Ollydbg의각기능에대해서알아본다. 주로기초적인내용을다루고있다.
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 informationPowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information