°³¶ËÀ̳׿¡¼ ÆÇ¸ÅµÈ "¸®¹ö½Ì ÇÙ½É ¿ø¸®" Á¤°¡ 48,000¿ø Æò±ÕÇÒÀΰ¡
|
|
|
1ºÎ ±âÃÊ ¸®¹ö½Ì
1Àå Reversing Story 1.1. Reverse Engineering(RE) 1.2. Reverse Code Engineering(RCE) 1.2.1. ¸®¹ö½Ì(ºÐ¼®) ¹æ¹ý 1.2.2. Source Code, Hex Code, Assembly Code 1.2.3. ÆÐÄ¡¿Í Å©·¢ 1.3. ¸®¹ö½Ì Áغñ¹° 1.3.1. ¸ñÇ¥ 1.3.2. ¿Á¤ 1.3.3. ±¸±Û 1.4. ¸®¹ö½Ì ¹æÇع° 1.4.1. °ú¿å 1.4.2. Á¶±ÞÇÔ 1.5. ¸®¹ö½ÌÀÇ ¹¦¹Ì
2Àå Hello World! ¸®¹ö½Ì 2.1. Hello World! ÇÁ·Î±×·¥ 2.1.1. µð¹ö°Å¿Í ¾î¼Àºí¸® ¾ð¾î 2.2. HelloWorld.exe µð¹ö±ë 2.2.1. µð¹ö±ë ¸ñÇ¥ 2.2.2. µð¹ö±ë ½ÃÀÛ 2.2.3. EP 2.2.4. 40270C ÇÔ¼ö µû¶ó°¡±â 2.2.5. 40104F Á¡ÇÁ¹® µû¶ó°¡±â 2.2.6. main( ) ÇÔ¼ö ã±â 2.3. µð¹ö°Å Á» ´õ ´É¼÷ÇÏ°Ô ´Ù·ç±â 2.3.1. µð¹ö°Å ¸í·É¾î 2.3.2. º£À̽º Ä·ÇÁ 2.3.3. º£À̽º Ä·ÇÁ¸¦ ¼³Ä¡ÇÏ´Â 4°¡Áö ¹æ¹ý 2.4. ¿øÇÏ´Â Äڵ带 »¡¸® ã¾Æ³»´Â 4°¡Áö ¹æ¹ý 2.4.1. ÄÚµå ½ÇÇà ¹æ¹ý 2.4.2. ¹®ÀÚ¿ °Ë»ö ¹æ¹ý 2.4.3. API °Ë»ö ¹æ¹ý (1) - È£Ãâ Äڵ忡 BP 2.4.4. API °Ë»ö ¹æ¹ý (2) - API Äڵ忡 Á÷Á¢ BP 2.5. ¡°Hello World!¡± ¹®ÀÚ¿ ÆÐÄ¡ 2.5.1. ÆÐÄ¡ 2.5.2. ¹®ÀÚ¿À» ÆÐÄ¡ÇÏ´Â µÎ °¡Áö ¹æ¹ý 2.6. ¸¶¹«¸®
3Àå Little Endian Ç¥±â¹ý 3.1. ¹ÙÀÌÆ® ¿À´õ¸µ 49 3.1.1. ¸®Æ² ¿£µð¾È & ºò ¿£µð¾È 3.1.2. OllyDbg¿¡¼ ¸®Æ² ¿£µð¾È È®ÀÎ
4Àå IA-32 Register ±âº» ¼³¸í 4.1. CPU ·¹Áö½ºÅͶõ? 4.1.1. ·¹Áö½ºÅÍ¿¡ ´ëÇؼ ¾Ë¾Æ¾ß ÇÏ´Â ÀÌÀ¯ 4.2. IA-32ÀÇ ·¹Áö½ºÅÍ 4.2.1. Basic program execution registers 4.3. ¸¶¹«¸®
5Àå Stack 5.1. ½ºÅà 5.1.1. ½ºÅÃÀÇ Æ¯Â¡ 5.1.2. ½ºÅà µ¿ÀÛ ¿¹Á¦
6Àå abex crackme #1 ºÐ¼® 6.1. abex¡¯ crackme #1 6.1.1. Start debugging 6.1.2. ÄÚµå ºÐ¼® 6.2. Å©·¢ 6.3. ½ºÅÿ¡ ÆĶó¹ÌÅ͸¦ Àü´ÞÇÏ´Â ¹æ¹ý 6.4. ¸¶¹«¸®
7Àå Stack Frame 7.1. ½ºÅà ÇÁ·¹ÀÓ 7.2. ½Ç½À ¿¹Á¦ - stackframe.exe 7.2.1. StackFrame.cpp 7.2.2. main( ) ÇÔ¼ö ½ÃÀÛ & ½ºÅà ÇÁ·¹ÀÓ »ý¼º 7.2.3. ·ÎÄà º¯¼ö ¼ÂÆà 7.2.4. add( ) ÇÔ¼ö ÆĶó¹ÌÅÍ ÀÔ·Â ¹× add( ) ÇÔ¼ö È£Ãâ 7.2.5. add( ) ÇÔ¼ö ½ÃÀÛ & ½ºÅà ÇÁ·¹ÀÓ »ý¼º 7.2.6. add( ) ÇÔ¼öÀÇ ·ÎÄà º¯¼ö(x, y) ¼ÂÆà 7.2.7. ADD ¿¬»ê 7.2.8. add( ) ÇÔ¼öÀÇ ½ºÅà ÇÁ·¹ÀÓ ÇØÁ¦ & ÇÔ¼ö Á¾·á(¸®ÅÏ) 7.2.9. add( ) ÇÔ¼ö ÆĶó¹ÌÅÍ Á¦°Å(½ºÅà Á¤¸®) 7.2.10. printf( ) ÇÔ¼ö È£Ãâ 7.2.11. ¸®ÅÏ °ª ¼ÂÆà 7.2.12. ½ºÅà ÇÁ·¹ÀÓ ÇØÁ¦ & main( ) ÇÔ¼ö Á¾·á 7.3. OllyDbg ¿É¼Ç º¯°æ 7.3.1. Disasm ¿É¼Ç 7.3.2. Analysis1 ¿É¼Ç 7.4. ¸¶¹«¸®
8Àå abex crackme #2 8.1. abex¡¯ crackme #2 ½ÇÇà 8.2. Visual Basic ÆÄÀÏ Æ¯Â¡ 8.2.1. VB Àü¿ë ¿£Áø 8.2.2. N(Native) code, P(Pseudo) code 8.2.3. Event Handler 8.2.4. undocumented ±¸Á¶Ã¼ 8.3. Start debugging 8.3.1. °£Á¢È£Ãâ 8.3.2. RT_MainStruct ±¸Á¶Ã¼ 8.3.3. ThunRTMain( ) ÇÔ¼ö 8.4. crackme ºÐ¼® 8.4.1. ¹®ÀÚ¿ °Ë»ö 8.4.2. ¹®ÀÚ¿ ÁÖ¼Ò Ã£±â 8.4.3. Serial »ý¼º ¾Ë°í¸®Áò 8.4.4. ÄÚµå ¿¹ÃøÇϱâ 8.4.5. Name ¹®ÀÚ¿ Àд ÄÚµå 8.4.6. ¾ÏÈ£È ·çÇÁ 8.4.7. ¾ÏÈ£È ¹æ¹ý 8.5. ¸¶¹«¸®
9Àå Process Explorer - ÃÖ°íÀÇ ÀÛ¾÷ °ü¸®ÀÚ 9.1. Process Explorer 9.2. ±¸Ã¼ÀûÀ¸·Î ¹¹°¡ ÁÁÀº °ÅÁÒ? 9.3. sysinternals
10Àå Calling Convention 10.1. Calling Convention 10.1.1. cdecl 10.1.2. stdcall 10.1.3. fastcall
11Àå Lena¡¯s Reversing for Newbies 11.1. ½ÇÇà 11.2. ºÐ¼® 11.2.1. ¸ñÇ¥(1) - ¸Þ½ÃÁö ¹Ú½º Á¦°Å! 11.2.2. ÆÐÄ¡(1) - ¸Þ½ÃÁö ¹Ú½º Á¦°Å 11.2.3. ¸ñÇ¥(2) - Registration Code ã±â 11.3. ¸¶¹«¸®
12Àå µµ´ëü ¸®¹ö½ÌÀ» ¾î¶»°Ô °øºÎÇØ¾ß Çϳª¿ä? 12.1. Reverse Engineering(RE) 12.1.1. ¸ðµç °øºÎ¿¡´Â ¡®¸ñÇ¥¡¯°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. 12.1.2. ¡®±àÁ¤ÀûÀÎ ¸¶Àε塯¸¦ °¡Áö¼¼¿ä. 12.1.3. ¡®Àç¹Ì¡¯¸¦ ´À²¸¾ß ÇÕ´Ï´Ù. 12.1.4. ¡®°Ë»ö¡¯À» »ýÈ°ÈÇØ¾ß ÇÕ´Ï´Ù. 12.1.5. Á¦ÀÏ Áß¿äÇÑ °Ç ¡®½Çõ¡¯ÀÔ´Ï´Ù. 12.1.6. ¡®´À±ßÇÑ ¸¶À½¡¯À» °¡Áö¼¼¿ä.
2ºÎ PE File Format
13Àå PE File Format 13.1. Introduction 13.2. PE File Format 13.2.1. ±âº» ±¸Á¶ 13.2.2. VA & RVA 13.3. PE Çì´õ 13.3.1. DOS Header 13.3.2. DOS Stub 13.3.3. NT Header 13.3.4. IMAGE_NT_HEADERS - IMAGE_FILE_HEADER 13.3.5. IMAGE_NT_HEADERS - IMAGE_OPTIONAL_HEADER32 13.3.6. 13.4. RVA to RAW 13.5. IAT 13.5.1. DLL 13.5.2. IMAGE_IMPORT_DESCRIPTOR 13.5.3. notepad.exe¸¦ ÀÌ¿ëÇÑ ½Ç½À 13.6. EAT 13.6.1. IMAGE_EXPORT_DIRECTORY 13.6.2. kernel32.dllÀ» ÀÌ¿ëÇÑ ½Ç½À 13.7. Advanced PE(Portable Executable) 13.7.1. PEView.exe 13.7.2. Patched PE 13.8. ¸¶¹«¸®
14Àå ½ÇÇà ¾ÐÃà 14.1. µ¥ÀÌÅÍ ¾ÐÃà 14.1.1. ºñ¼Õ½Ç ¾ÐÃà 14.1.2. ¼Õ½Ç ¾ÐÃà 14.2. ½ÇÇà ¾ÐÃà 14.2.1. ÆÐÄ¿ 14.2.2. ÇÁ·ÎÅØÅÍ 14.3. ½ÇÇà ¾ÐÃà Å×½ºÆ® 14.3.1. notepad.exe¿Í notepad_upx.exe ÆÄÀÏ ºñ±³
15Àå UPX ½ÇÇà ¾ÐÃàµÈ notepad µð¹ö±ë 15.1. notepad.exeÀÇ EP Code 15.2. notepad_upx.exeÀÇ EP Code 15.3. UPX ÆÄÀÏ Æ®·¹ÀÌ½Ì 15.3.1. OllyDbgÀÇ Æ®·¹À̽º ¸í·É¾î 15.3.2. ·çÇÁ #1 15.3.3. ·çÇÁ #2 15.3.4. ·çÇÁ #3 15.3.5. ·çÇÁ #4 15.4. UPXÀÇ OEP¸¦ »¡¸® ã´Â ¹æ¹ý 15.4.1. POPAD ¸í·É¾î ÀÌÈÄÀÇ JMP ¸í·É¾î¿¡ BP ¼³Ä¡ 15.4.2. ½ºÅÿ¡ Çϵå¿þ¾î ºê·¹ÀÌÅ© Æ÷ÀÎÆ®(Hardware Break Point) ¼³Ä¡ 15.5. ¸¶¹«¸®
16Àå Base Relocation Table 16.1. PE Àç¹èÄ¡ 16.1.1. DLL/SYS 16.1.2. EXE 16.2. PE Àç¹èÄ¡ ¹ß»ý½Ã ¼öÇàµÇ´Â ÀÛ¾÷ 16.3. PE Àç¹èÄ¡ µ¿ÀÛ ¿ø¸® 16.3.1. Base Relocation Table 16.3.2. IMAGE_BASE_RELOCATION ±¸Á¶Ã¼ 16.3.3. Base Relocation TableÀÇ Çؼ® ¹æ¹ý 16.3.4. ½Ç½À
17Àå ½ÇÇà ÆÄÀÏ¿¡¼ .reloc ¼½¼Ç Á¦°ÅÇϱâ 17.1. .reloc ¼½¼Ç 17.2. reloc.exe 17.2.1. .reloc Section Header Á¤¸® 17.2.2. .reloc ¼½¼Ç Á¦°Å 17.2.3. IMAGE_FILE_HEADER ¼öÁ¤ 17.2.4. IMAGE_OPTIONAL_HEADER ¼öÁ¤ 17.3. ¸¶¹«¸®
18Àå UPack PE Çì´õ »ó¼¼ ºÐ¼® 18.1. UPack ¼³¸í 18.2. UPackÀ¸·Î notepad.exe ½ÇÇà ¾ÐÃàÇϱâ 18.3. Stud_PE ÀÌ¿ë 18.4. PE Çì´õ ºñ±³ 18.4.1. notepad.exe(¿øº»)ÀÇ PE Çì´õ 18.4.2. notepad_upack.exe(½ÇÇà ¾ÐÃà)ÀÇ PE Çì´õ 18.5. UPackÀÇ PE Çì´õ ºÐ¼® 18.5.1. Çì´õ °ãÃľ²±â 18.5.2. IMAGE_FILE_HEADER.SizeOfOptionalHeader 18.5.3. IMAGE_OPTIONAL_HEADER.NumberOfRvaAndSizes 18.5.4. IMAGE_SECTION_HEADER 18.5.5. ¼½¼Ç °ãÃľ²±â 18.5.6. RVA to RAW 18.5.7. Import Table(IMAGE_IMPORT_DESCRIPTOR array) 18.5.8. IAT(Import Address Table) 18.6. ¸¶¹«¸®
19Àå UPack µð¹ö±ë - OEP ã±â 19.1. OllyDbg ½ÇÇà ¿¡·¯ 19.2. µðÄÚµù ·çÇÁ 19.3. IAT ¼ÂÆà 19.4. ¸¶¹«¸®
20Àå ÀζóÀÎ ÆÐÄ¡ ½Ç½À 20.1. ÀζóÀÎ ÆÐÄ¡ 20.2. ½Ç½À - Patchme 20.3. µð¹ö±ë - ÄÚµå È帧 »ìÆ캸±â 20.4. ÄÚµå ±¸Á¶ 20.5. ÀζóÀÎ ÆÐÄ¡ ½Ç½À 20.5.1. ÆÐÄ¡ Äڵ带 ¾îµð¿¡ ¼³Ä¡ÇÒ±î? 20.5.2. ÆÐÄ¡ ÄÚµå ¸¸µé±â 20.5.3. ÆÐÄ¡ ÄÚµå ½ÇÇàÇϱâ 20.5.4. °á°ú È®ÀÎ
3ºÎ DLL Injection
21Àå Windows ¸Þ½ÃÁö ÈÄÅ· 21.1. ÈÅ 21.2. ¸Þ½ÃÁö ÈÅ 21.3. SetWindowsHookEx ( ) 21.4. Å°º¸µå ¸Þ½ÃÁö ÈÄÅ· ½Ç½À 21.4.1. ½Ç½À ¿¹Á¦ HookMain.exe 21.4.2. ¼Ò½ºÄÚµå ºÐ¼® 21.5. µð¹ö±ë ½Ç½À 21.5.1. HookMain.exe µð¹ö±ë 21.5.2. Notepad.exe ÇÁ·Î¼¼½º³»ÀÇ KeyHook.dll µð¹ö±ë 21.6. ¸¶¹«¸®
22Àå ¾ÇÀÇÀûÀÎ ¸ñÀûÀ¸·Î »ç¿ëµÇ´Â Å°·Î°Å 22.1. ¾Ç¼º Å°·Î°ÅÀÇ ¸ñÇ¥ 22.1.1. ¿Â¶óÀÎ °ÔÀÓ 22.1.2. ÀÎÅÍ³Ý ¹ðÅ· 22.1.3. ±â¾÷ Á¤º¸ À¯Ãâ 22.2. Å°·Î°ÅÀÇ Á¾·ù¿Í ÇâÈÄ ¹ßÀü ¹æÇâ 22.3. Å°·Î°Å¿¡ ´ëóÇÏ´Â ¿ì¸®ÀÇ ÀÚ¼¼ 22.4. °³ÀÎÁ¤º¸
23Àå DLL Injection 23.1. DLL ÀÎÁ§¼Ç 23.2. DLL ÀÎÁ§¼Ç È°¿ë ¿¹ 23.2.1. ±â´É °³¼± ¹× ¹ö±× ÆÐÄ¡ 23.2.2. ¸Þ½ÃÁö ÈÄÅ· 23.2.3. API ÈÄÅ· 23.2.4. ±âŸ ÀÀ¿ë ÇÁ·Î±×·¥ 23.2.5. ¾Ç¼º ÄÚµå 23.3. DLL ÀÎÁ§¼Ç ±¸Çö ¹æ¹ý 23.4. CreateRemoteThread ( ) 23.4.1. ½Ç½À ¿¹Á¦ myhack.dll 23.4.2. ¿¹Á¦ ¼Ò½ºÄÚµå ºÐ¼® 23.4.3. µð¹ö±ë ¹æ¹ý 23.5. AppInit_DLLs 23.5.1. ¿¹Á¦ ¼Ò½ºÄÚµå ºÐ¼® 23.5.2. ½Ç½À ¿¹Á¦ myhack2.dll 23.6. SetWindowsHookEx ( ) 23.7. ¸¶¹«¸®
24Àå DLL Ejection 24.1. DLL ÀÌÁ§¼Ç µ¿ÀÛ ¿ø¸® 24.2. DLL ÀÌÁ§¼Ç ±¸Çö 24.2.1. ÇÁ·Î¼¼½º¿¡ ·ÎµùµÈ DLL Á¤º¸ ±¸Çϱâ 24.2.2. ´ë»ó ÇÁ·Î¼¼½º ÇÚµé ±¸Çϱâ 24.2.3. FreeLibrary( ) API ÁÖ¼Ò ±¸Çϱâ 24.2.4. ´ë»ó ÇÁ·Î¼¼½º¿¡ ½º·¹µå¸¦ ½ÇÇà½ÃÅ´ 24.3. DLL ÀÌÁ§¼Ç °£´Ü ½Ç½À 24.3.1. ÆÄÀÏ º¹»ç ¹× notepad.exe ½ÇÇà 24.3.2. ÀÎÁ§¼Ç 24.3.3. ÀÌÁ§¼Ç
25Àå PE Patch¸¦ ÀÌ¿ëÇÑ DLL ·Îµù 25.1. ½Ç½À ÆÄÀÏ 25.1.1. TextView.exe 25.1.2. TextView_patched.exe 25.2. ¼Ò½ºÄÚµå - myhack3.cpp 25.2.1. DllMain( ) 25.2.2. DownloadURL( ) 25.2.3. DropFile( ) 25.2.4. dummy( ) 25.3. TextView.exe ÆÄÀÏ ÆÐÄ¡ Áغñ ÀÛ¾÷ 25.3.1. ÆÐÄ¡ ¾ÆÀ̵ð¾î 25.3.2. ÆÐÄ¡ »çÀü Á¶»ç 25.3.3. IDT À̵¿ 25.4. TextView.exe ÆÐÄ¡ ÀÛ¾÷ 25.4.1. IMPORT TableÀÇ RVA °ª º¯°æ 25.4.2. BOUND IMPORT TABLE Á¦°Å 25.4.3. »õ·Î¿î IDT »ý¼º 25.4.4. Name, INT, IAT ¼ÂÆà 25.4.5. IAT ¼½¼ÇÀÇ Characteristics º¯°æ 25.5. °ËÁõ (Test) 25.6. ¸¶¹«¸®
26Àå PE Tools 26.1. PE Tools 26.1.1. ÇÁ·Î¼¼½º ¸Þ¸ð¸® ´ýÇÁ 26.1.2. PE Editor 26.2. ¸¶¹«¸® ½¬¾î°¡±â - ¸®¹ö½ÌÀÇ Âü¸À
27Àå Code Injection 27.1. Code ÀÎÁ§¼Ç 27.2. DLL ÀÎÁ§¼Ç vs Code ÀÎÁ§¼Ç 27.2.1. ÄÚµå ÀÎÁ§¼ÇÀ» »ç¿ëÇÏ´Â ÀÌÀ¯ 27.3. ½Ç½À ¿¹Á¦ 27.3.1. notepad.exe ½ÇÇà 27.3.2. CodeInjection.exe ½ÇÇà 27.3.3. ¸Þ½ÃÁö ¹Ú½º È®ÀÎ 27.4. CodeInjection.cpp 27.4.1. main( ) 27.4.2. ThreadProc( ) 27.4.3. InjectCode( ) 27.5. Code ÀÎÁ§¼Ç µð¹ö±ë ½Ç½À 27.5.1. notepad.exe µð¹ö±ë 27.5.2. OllyDbg ¿É¼Ç º¯°æ 27.5.3. CodeInjection.exe ½ÇÇà 27.5.4. ½º·¹µå ½ÃÀÛ ÄÚµå 27.6. ¸¶¹«¸®
28Àå ¾î¼Àºí¸® ¾ð¾î¸¦ ÀÌ¿ëÇÑ Code Injection 28.1. ¸ñÇ¥ 28.2. ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö 28.3. OllyDbgÀÇ Assemble ¸í·É 28.3.1. ThreadProc( ) ÀÛ¼º 28.3.2. Save File 28.4. ÀÎÁ§ÅÍ Á¦ÀÛ 28.4.1. ThreadProc( ) ÇÔ¼öÀÇ ¹ÙÀ̳ʸ® ÄÚµå ¾ò±â 28.4.2. CodeInjection2.cpp 28.5. µð¹ö±ë ½Ç½À 28.5.1. notepad.exe µð¹ö±ë 28.5.2. OllyDbg ¿É¼Ç º¯°æ 28.5.3. CodeInjection2.exe ½ÇÇà 28.5.4. ½º·¹µå ½ÃÀÛ ÄÚµå 28.6. »ó¼¼ ºÐ¼® 28.6.1. ½ºÅà ÇÁ·¹ÀÓ 28.6.2. THREAD_PARAM ±¸Á¶Ã¼ Æ÷ÀÎÅÍ 28.6.3. ¡°user32.dll¡± ¹®ÀÚ¿ 28.6.4. ¡°user32.dll¡± ¹®ÀÚ¿ ÆĶó¹ÌÅÍ ÀÔ·Â 28.6.5. LoadLibraryA(¡°user32.dll¡±) È£Ãâ 28.6.6. ¡°MessageBoxA¡± ¹®ÀÚ¿ 28.6.7. GetProcAddress(hMod, ¡°MessageBoxA¡±) È£Ãâ 28.6.8. MessageBoxA( ) ÆĶó¹ÌÅÍ ÀÔ·Â 1 - MB_OK 28.6.9. MessageBoxA( ) ÆĶó¹ÌÅÍ ÀÔ·Â 2 - ¡°ReverseCore¡± 28.6.10. MessageBoxA( ) ÆĶó¹ÌÅÍ ÀÔ·Â 3 - ¡°www.reversecore.com¡± 28.6.11. MessageBoxA( ) ÆĶó¹ÌÅÍ ÀÔ·Â 4 - NULL 28.6.12. MessageBoxA È£Ãâ 28.6.13. ThreadProc( ) ¸®ÅÏ °ª ¼ÂÆà 28.6.14. ½ºÅà ÇÁ·¹ÀÓ ÇØÁ¦ ¹× ÇÔ¼ö ¸®ÅÏ 28.7. ¸¶¹«¸®
4ºÎ API Hooking
29Àå API Hooking: ¸®¹ö½ÌÀÇ ¡®²É¡¯ 29.1. ÈÄÅ· 29.2. API 29.3. API ÈÄÅ· 29.3.1. Á¤»ó API È£Ãâ 29.3.2. ÈÄÅ· API È£Ãâ 29.4. Å×Å© ¸Ê 29.4.1. Method Object(what) 29.4.2. Location(where) 29.4.3. Technique(How) 29.5. API
30Àå ¸Þ¸ðÀå WriteFile ( ) ÈÄÅ· 30.1. Å×Å© ¸Ê - µð¹ö±× Å×Å©´Ð 30.2. µð¹ö°Å ¼³¸í 30.2.1. ¿ë¾î 30.2.2. µð¹ö°Å ±â´É 30.2.3. µð¹ö°Å µ¿ÀÛ ¿ø¸® 30.2.4. µð¹ö±× À̺¥Æ® 30.3. ÀÛ¾÷ ¼ø¼ 30.4. ½Ç½À 30.5. µ¿ÀÛ ¿ø¸® 30.5.1. ½ºÅà 30.5.2. ½ÇÇà È帧 30.5.3. ¾ðÈÅ & ÈÅ 30.6. ¼Ò½ºÄÚµå ¼³¸í 30.6.1. main( ) 30.6.2. DebugLoop( ) 30.6.3. EXIT_PROCESS_DEBUG_EVENT 30.6.4. CREATE_PROCESS_DEBUG_EVENT - OnCreateProcessDebug Event( ) 30.6.5. EXCEPTION_DEBUG_EVENT - OnExceptionDebugEvent( )
31Àå µð¹ö°Å À̾߱â 31.1. OllyDbg 31.2. IDA Pro 31.3. WinDbg
32Àå °è»ê±â, ÇѱÛÀ» ¹è¿ì´Ù 32.1. Å×Å© ¸Ê 32.2. ´ë»ó API ¼±Á¤ 32.3. IAT ÈÄÅ· µ¿ÀÛ ¿ø¸® 32.4. ½Ç½À 32.5. ¼Ò½ºÄÚµå ºÐ¼® 32.5.1. DllMain( ) 32.5.2. MySetWindowTextW( ) 32.5.3. hook_iat ( ) 32.6. ÀÎÁ§¼ÇµÈ DLLÀÇ µð¹ö±ë 32.6.1. DllMain( ) 32.6.2. hook_iat ( ) 32.6.3. MySetWindowTextW( ) 32.7. ¸¶¹«¸®
33Àå ¡®½ºÅÚ½º¡¯ ÇÁ·Î¼¼½º 33.1. Å×Å© ¸Ê 33.2. API ÄÚµå ÆÐÄ¡ µ¿ÀÛ ¿ø¸® 33.2.1. ÈÄÅ· Àü 33.2.2. ÈÄÅ· ÈÄ 33.3. ÇÁ·Î¼¼½º ÀºÆó 33.3.1. ÇÁ·Î¼¼½º ÀºÆó µ¿ÀÛ ¿ø¸® 33.3.2. °ü·Ã API 33.3.3. ÀºÆó ±â¹ýÀÇ ¹®Á¦Á¡ 33.4. ½Ç½À #1 (HideProc.exe, stealth.dll) 33.4.1. notepad.exe, procexp.exe, taskmgr.exe ½ÇÇà 33.4.2. HideProc.exe ½ÇÇà 33.4.3. stealth.dll ÀÎÁ§¼Ç È®ÀÎ 33.4.4. notepad.exe ÇÁ·Î¼¼½º ÀºÆó È®ÀÎ 33.4.5. notepad.exe ÇÁ·Î¼¼½º ÀºÆó ÇØÁ¦ 33.5. ¼Ò½ºÄÚµå ºÐ¼® 33.5.1. HookProc.cpp 33.5.2. stealth.cpp 33.6. ±Û·Î¹ú API ÈÄÅ· 33.6.1. Kernel32.CreateProcess ( ) API 33.6.2. Ntdll.ZwResumeThread ( ) API 33.7. ½Ç½À #2(HideProc2.exe, stealth2.dll) 33.7.1. stealth2.dll ÆÄÀÏÀ» %SYSTEM% Æú´õ¿¡ º¹»ç 33.7.2. HideProc2.exe -hide ½ÇÇà 33.7.3. ProcExp.exe & notepad.exe ½ÇÇà 33.7.4. HideProc2.exe -show ½ÇÇà 33.8. ¼Ò½ºÄÚµå ºÐ¼® 33.8.1. HideProc2.cpp 33.8.2. stealth2.cpp 33.9. ÇÖ ÆÐÄ¡ ¹æ½ÄÀÇ API ÈÄÅ· 33.9.1. ±âÁ¸ API ÄÚµå ÆÐÄ¡ ¹æ¹ýÀÇ ¹®Á¦Á¡ 33.9.2. ÇÖ ÆÐÄ¡ (7¹ÙÀÌÆ® ÄÚµå ÆÐÄ¡) 33.10. ½Ç½À #3 - stealth3.dll 33.11. ¼Ò½ºÄÚµå ºÐ¼® 33.11.1. Stealth3.cpp 33.12. ÇÖ ÆÐÄ¡ ¹æ½ÄÀÇ API ÈÄÅ·¿¡¼ °í·Á»çÇ× 33.12. ¸¶¹«¸®
34.1. ÈÄÅ· ´ë»ó API 34.1.1. °ËÁõ ? IE ÇÁ·Î¼¼½º µð¹ö±ë 34.2. IE ÇÁ·Î¼¼½º ±¸Á¶ 34.3. ±Û·Î¹ú API ÈÄÅ· °³³ä Á¤¸® 34.3.1. ÀϹÝÀûÀÎ API ÈÄÅ· 34.3.2. ±Û·Î¹ú API ÈÄÅ· 34.4. ntdll!ZwResumeThread ( ) API 34.5. ½Ç½À ¿¹Á¦ ? IE Á¢¼Ó Á¦¾î 34.5.1. IE ½ÇÇà 34.5.2. DLL ÀÎÁ§¼Ç 34.5.3. »õ·Î¿î ÅÇ »ý¼º 34.5.4. Æ÷ÅÐ »çÀÌÆ® Á¢¼Ó 34.5.5. DLL ÀÌÁ§¼Ç 34.5.6. Ãß°¡ ½Ç½À 34.6. ¿¹Á¦ ¼Ò½ºÄÚµå 34.6.1. DllMain( ) 34.6.2. NewInternetConnectW( ) 34.6.3. NewZwResumeThread( ) 34.7. ¸¶¹«¸®
35Àå ÁÁÀº ºÐ¼® µµ±¸¸¦ ¼±ÅÃÇÏ´Â 5°¡Áö ±âÁØ 35.1. µµ±¸ 35.2. Reverse Code Engineer 35.3. ÁÁÀº ºÐ¼® µµ±¸ ¼±ÅÃÀÇ 5°¡Áö ±âÁØ 35.3.1. µµ±¸ °³¼ö¸¦ ÃÖ¼ÒÈÇÑ´Ù. 35.3.2. µµ±¸´Â ±â´ÉÀÌ ´Ü¼øÇÏ°í »ç¿ë¹æ¹ýÀÌ Æí¸®ÇÑ °ÍÀÌ ÁÁ´Ù. 35.3.3. ±â´ÉÀ» öÀúÈ÷ ÀÍÈù´Ù. 35.3.4. ²ÙÁØÈ÷ ¾÷µ¥ÀÌÆ®ÇÑ´Ù. 35.3.5. µµ±¸ÀÇ ÇÙ½É µ¿ÀÛ ¿ø¸®¸¦ ÀÌÇØÇÑ´Ù. 35.4. ¼÷·ÃµµÀÇ Á߿伺
5ºÎ 64ºñÆ® & Windows Kernel 6
36Àå 64bit Computing 36.1. 64ºñÆ® ÄÄÇ»Æà ȯ°æ 36.1.1. 64ºñÆ® CPU 36.1.2. 64ºñÆ® OS 36.1.3. Win32 API 36.1.4. WOW64 36.1.5. ½Ç½À - WOW64Test 36.2. 64ºñÆ® ºôµå 36.2.1. Microsoft Windows SDK(Software Development Kit) 36.2.2. Visual C++ 2010 Express ȯ°æ ¼³Á¤
37Àå x64 ÇÁ·Î¼¼¼ À̾߱â 37.1. x64¿¡¼ Ãß°¡/º¯°æµÈ »çÇ× 37.1.1. 64ºñÆ® 37.1.2. ¸Þ¸ð¸® 37.1.3. ¹ü¿ë ·¹Áö½ºÅÍ in x64 37.1.4. CALL/JMP Instruction 37.1.5. ÇÔ¼ö È£Ãâ ±Ô¾à 37.1.6. ½ºÅà & ½ºÅà ÇÁ·¹ÀÓ 37.2. ½Ç½À - Stack64.exe & Stack32.exe 37.2.1. Stack32.exe 37.2.2. Stack64.exe 37.2. ¸¶¹«¸®
38Àå PE32+ 38.1. PE32+ (PE+, PE64) 38.1.1. IMAGE_NT_HEADERS 38.1.2. IMAGE_FILE_HEADER 38.1.3. IMAGE_OPTIONAL_HEADER 38.1.4. IMAGE_THUNK_DATA 38.1.5. IMAGE_TLS_DIRECTORY64
39Àå WinDbg 39.1. WinDbg 39.1.1. WinDbg Ư¡ 39.1.2. WinDbg ½ÇÇà 39.1.3. Ä¿³Î µð¹ö±ë 39.1.4. WinDbg ±âº» ¸í·É¾î
40Àå 64bit Debugging 40.1. x64 ȯ°æ¿¡¼ÀÇ µð¹ö°Å ¼±Åà 627 40.2. 64ºñÆ® µð¹ö±ë 628 40.2.1. ½Ç½À ¿¹Á¦ ? WOW64Test 40.3. PE32 : WOW64Test_x86.exe 40.3.1. EP ÄÚµå 40.3.2. Startup ÄÚµå 40.3.3. main( ) ÇÔ¼ö 40.4. PE32+ : WOW64Test_x64.exe 40.4.1. System Breakpoint 40.4.2. EP ÄÚµå 40.4.3. Startup ÄÚµå 40.4.4. main( ) ÇÔ¼ö 40.5. ¸¶¹«¸®
41Àå ASLR 41.1. Windows Kernel Version 41.2. ASLR 41.3. Visual C++ 41.4. ASLR.exe 41.4.1. ¼½¼Ç Á¤º¸ 41.4.2. IMAGE_FILE_HEADER Characteristics 41.4.3. IMAGE_OPTIONAL_HEADER DLL Characteristics 41.5. ½Ç½À - ASLR ±â´É Á¦°Å 41.5.1. ASLR ±â´É Á¦°Å
42Àå Session in Kernel 6 42.1. ¼¼¼Ç 42.2. Session 0 Isolation 42.3. º¸¾È °È
43Àå DLL Injection in Kernel 6 43.1. DLL ÀÎÁ§¼Ç ½ÇÆÐ ÀçÇö 43.1.1. ¼Ò½ºÄÚµå 43.1.2. ÀÎÁ§¼Ç Å×½ºÆ® 43.2. ¿øÀÎ ºÐ¼® 43.2.1. µð¹ö±ë #1 43.2.2. µð¹ö±ë #2 43.3. ½Ç½À - CreateRemoteThread ( ) ¼º°ø½ÃÅ°´Â ¹æ¹ý 43.3.1. ¹æ¹ý #1 - CreateSuspended ÆĶó¹ÌÅÍ º¯°æ 43.3.2. ¹æ¹ý #2 - Á¶°Ç ºÐ±â Á¶ÀÛ 43.4. °£´Ü Á¤¸® 43.5. InjectDll_new.exe 43.5.1. InjectDll_new.cpp 43.5.2. ÀÎÁ§¼Ç ½Ç½À
44Àå InjDll.exe - DLL Injection Àü¿ë µµ±¸ 44.1. InjDll.exe 44.1.1. »ç¿ë¹æ¹ý 44.1.2. »ç¿ë ¿¹ 44.1.3. ÁÖÀÇ»çÇ×
6ºÎ °í±Þ ¸®¹ö½Ì
45Àå TLS Callback Function 45.1. ½Ç½À #1 - HelloTls.exe 45.2. TLS 45.2.1. IMAGE_DATA_DIRECTORY[9] 45.2.2. IMAGE_TLS_DIRECTORY 45.2.3. Äݹé ÇÔ¼ö ÁÖ¼Ò ¹è¿ 45.3. TLS Äݹé ÇÔ¼ö 45.3.1. IMAGE_TLS_CALLBACK 45.4. ½Ç½À #2 - TlsTest.exe 45.4.1. DLL_PROCESS_ATTACH 45.4.2. DLL_THREAD_ATTACH 45.4.3. DLL_THREAD_DETACH 45.4.4. DLL_PROCESS_DETACH 45.5. TLS ÄÝ¹é µð¹ö±ë 45.6. ¼öÀÛ¾÷À¸·Î TLS Äݹé ÇÔ¼ö Ãß°¡Çϱâ 45.6.1. ½Ç½À Àç·á 45.6.2. ¼³°è 45.6.3. PE Çì´õ ÆíÁý 45.6.4. IMAGE_TLS_DIRECTORY ±¸¼º 45.6.5. TLS Äݹé ÇÔ¼ö ÇÁ·Î±×·¡¹Ö 45.6.6. ÃÖÁ¾ ¿Ï¼º 45.7. ¸¶¹«¸®
46Àå TEB 46.1. TEB 46.1.1. TEB ±¸Á¶Ã¼ Á¤ÀÇ 46.1.2. TEB ±¸Á¶Ã¼ ³»¿ë 46.1.3. Áß¿ä ¸â¹ö 46.2. TEB Á¢±Ù ¹æ¹ý 46.2.1. Ntdll.NtCurrentTeb ( ) 46.2.2. FS ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ 46.3. ¸¶¹«¸®
47Àå PEB 47.1. PEB 47.1.1. PEB Á¢±Ù ¹æ¹ý 47.1.2. PEB ±¸Á¶Ã¼ Á¤ÀÇ 47.1.3. PEB ±¸Á¶Ã¼ ³»¿ë 47.2. PEB Áß¿ä ¸â¹ö ¼³¸í 47.2.1. PEB.BeingDebugged 47.2.2. PEB.ImageBaseAddress 47.2.3. PEB.Ldr 47.2.4. PEB.ProcessHeap & PEB.NtGlobalFlag 47.3. ¸¶¹«¸®
48Àå SEH 48.1. SEH 48.1.1. ±âº» ¼³¸í 48.2. SEH ¿¹Á¦ ½Ç½À #1 48.2.1. ÀÏ¹Ý ½ÇÇà 48.2.2. µð¹ö°Å¿¡¼ ½ÇÇà 48.3. OSÀÇ ¿¹¿Ü ó¸® ¹æ¹ý 48.3.1. ÀÏ¹Ý ½ÇÇàÀÇ °æ¿ì ¿¹¿Ü ó¸® ¹æ¹ý 48.3.2. µð¹ö±ë ½ÇÇàÀÇ °æ¿ì ¿¹¿Ü ó¸® ¹æ¹ý 48.4. ¿¹¿Ü 48.4.1. EXCEPTION_ACCESS_VIOLATION(C0000005) 48.4.2. EXCEPTION_BREAKPOINT(80000003) 48.4.3. EXCEPTION_ILLEGAL_INSTRUCTION(C000001D) 48.4.4. EXCEPTION_INT_DIVIDE_BY_ZERO(C0000094) 48.4.5. EXCEPTION_SINGLE_STEP(80000004) 48.5. SEH »ó¼¼ ¼³¸í 48.5.1. SEH Chain 48.5.2. ÇÔ¼ö Á¤ÀÇ 48.5.3. TEB.NtTib.ExceptionList 48.5.4. SEH ¼³Ä¡ ¹æ¹ý 48.6. SEH ¿¹Á¦ ½Ç½À #2 (seh.exe) 48.6.1. SEH üÀÎ È®ÀÎ 48.6.2. SEH Ãß°¡ 48.6.3. ¿¹¿Ü ¹ß»ý 48.6.4. ¿¹¿Ü 󸮱â ÆĶó¹ÌÅÍ È®ÀÎ 48.6.5. ¿¹¿Ü 󸮱⠵ð¹ö±ë 48.6.6. SEH Á¦°Å 48.7. OllyDbg ¿É¼Ç ¼³Á¤ 48.7.1. KERNEL32 ¿¹¿Ü ¹«½Ã 48.7.2. ¿¹¿Ü¸¦ µð¹ö±â¿¡°Ô Àü´Þ 48.7.3. ±âŸ ¿¹¿Ü ó¸® 48.7.4. °£´Ü ½Ç½À 48.8. ¸¶¹«¸®
49Àå IA-32 Instruction 49.1. IA-32 Instruction 49.2. ¿ë¾î Á¤¸® 49.2.1. Disassembler 49.2.2. Decompiler 49.2.3. Decompile °£´Ü ¼Ò°³ 49.3. IA-32 Instruction Format 49.3.1. Instruction Prefixes 49.3.2. Opcode 49.3.3. ModR/M 49.3.4. SIB 49.3.5. Displacement 49.3.6. Immediate 49.4. Instruction Çؼ® ¸Å´º¾ó 49.4.1. IA-32 Manuals ´Ù¿î·Îµå 49.4.2. Instruction Çؼ® ¸Þ´º¾ó Ãâ·Â 49.5. Instruction Çؼ® ½Ç½À 49.5.1. Opcode Map 49.5.2. Operand 49.5.3. ModR/M 49.5.4. Group 49.5.5. Prefix 49.5.6. 2¹ÙÀÌÆ® Opcode 49.5.7. Displacement & Immediate 49.5.8. SIB 49.6. Instruction Çؼ® Ãß°¡ ¿¬½À 49.7. ¸¶¹«¸®
7ºÎ Anti-Debugging
50Àå Anti-Debugging 50.1. ¾ÈƼ µð¹ö±ë ±â¹ý 50.1.1. ÀÇÁ¸¼º 50.1.2. ´Ù¾çÇÑ ±â¹ý 50.2. ¾ÈƼ ¾ÈƼ µð¹ö±ë ±â¹ý 50.3. ¾ÈƼ µð¹ö±ë ºÐ·ù 50.3.1. Static Anti-Debugging 50.3.2. Dynamic Anti-Debugging
51Àå Static Anti-Debugging 51.1. Static Anti-DebuggingÀÇ ¸ñÀû 51.2. PEB 51.2.1. BeingDebugged(+0x2) 51.2.2. Ldr (+0xC) 51.2.3. Process Heap(+0x18) 51.2.4. NtGlobalFlag(+0x68) 51.2.5. ½Ç½À - StaAD_PEB.exe 51.2.6. ȸÇÇ ¹æ¹ý 51.3. NtQueryInformationProcess ( ) 51.3.1. ProcessDebugPort(0x7) 51.3.2. ProcessDebugObjectHandle(0x1E) 51.3.3. ProcessDebugFlags(0x1F) 51.3.4. ½Ç½À - StaAD_NtQIP.exe 51.3.5. ȸÇÇ ¹æ¹ý 51.4. NtQuerySystemInformation ( ) 51.4.1. SystemKernelDebuggerInformation(0x23) 51.4.2. ½Ç½À - StaAD_NtQSI.exe 51.4.3. ȸÇÇ ¹æ¹ý 51.5. NtQueryObject ( ) 51.5.1. ½Ç½À - StaAD_NtQO.exe 51.6. ZwSetInformationThread ( ) 51.6.1. ½Ç½À - StaAD_ZwSIT.exe 51.6.2. ȸÇÇ ¹æ¹ý 51.7. TLS Callback Function 51.8. ETC 51.8.1. ½Ç½À - StaAD_FindWindow.exe 51.8.2. ȸÇÇ ¹æ¹ý 51.9. ¸¶¹«¸®
52Àå Dynamic Anti-Debugging 52.1. Dynamic Anti-Debugging ÄÚµåÀÇ ¸ñÀû 52.2. Exceptions 52.2.1. SEH 52.2.2. SetUnhandledExceptionFilter( ) 52.3. Timing Check 52.3.1. ½Ã°£ °£°Ý ÃøÁ¤ ¹æ¹ý 52.3.2. RDTSC 52.4. Trap Flag 52.4.1. Single Step 52.4.2. INT 2D 52.5. 0xCC Detection 52.5.1. API Break Point 52.5.2. Checksum ºñ±³ 52.6. ¸¶¹«¸®
53Àå Advanced Anti-Debugging 53.1. °í±Þ ¾ÈƼ µð¹ö±ë ±â¹ý 53.2. °¡ºñÁö ÄÚµå 53.3. Breaking Code Alignment 53.4. Encryption/Decryption 53.4.1. °£´ÜÇÑ µðÄÚµù ÄÚµåÀÇ °æ¿ì 53.4.2. º¹ÀâÇÑ µðÄÚµù ÄÚµåÀÇ °æ¿ì 53.4.3. Ư¼öÇÑ °æ¿ì - ÄÚµå ÀçÁ¶ÇÕ 53.5. Stolen Bytes(Remove OEP) 53.6. API Redirection 53.6.1. ¿øº» ÄÚµå 53.6.2. API Redirection ¿¹Á¦ #1 53.6.3. API Redirection ¿¹Á¦ #2 53.7. Debug Blocker(Self Debugging) 53.8. ¸¶¹«¸®
8ºÎ µð¹ö±ë ½Ç½À
54Àå µð¹ö±ë ½Ç½À1 - ¼ºñ½º 54.1. ¼ºñ½º ÇÁ·Î¼¼½º µ¿ÀÛ ¿ø¸® 54.1.1. ¼ºñ½º Á¦¾î±â 54.1.2. ¼ºñ½º ½ÃÀÛ°úÁ¤ÀÇ ÀÌÇØ 54.2. DebugMe1.exe ¿¹Á¦ ¼³¸í 54.2.1. ¼ºñ½º ¼³Ä¡ 54.2.2. ¼ºñ½º ½ÃÀÛ 54.2.3. ¼Ò½ºÄÚµå 54.3. Service ÇÁ·Î¼¼½ºÀÇ µð¹ö±ë À̽´ 54.3.1. ¹®Á¦´Â SCM 54.3.2. µð¹ö°Å·Î ¾È µÇ´Â °ÍÀº ¾ø´Ù 54.3.3. Á¤¼®´ë·Î Çغ¸ÀÚ 54.4. ¼ºñ½º µð¹ö±ë ½Ç½À 54.4.1. ±×³É µð¹ö±ë - EIP °Á¦ ¼ÂÆà 54.4.2. ¼ºñ½º µð¹ö±ëÀÇ Á¤¼® - Attach ¹æ½Ä 54.5. ¸¶¹«¸®
55Àå µð¹ö±ë ½Ç½À2 - Self Creation 55.1. Self-Creation 55.2. µ¿ÀÛ ¿ø¸® 55.2.1. Create Child Process(SUSPEND mode) 55.2.2. Change EIP 55.2.3. Resume Main Thread 55.3. ¿¹Á¦ ¼Ò½ºÄÚµå ¼³¸í 55.4. µð¹ö±ë ½Ç½À 55.4.1. °í·Á »çÇ× 55.4.2. JIT(Just-In-Time) Debugging 55.4.3. DebugMe2.exe 55.5. ¸¶¹«¸®
56Àå µð¹ö±ë ½Ç½À3 - PE Image Switching 56.1. PE Image 56.2. PE Image Switching 56.3. ¿¹Á¦ ÆÄÀÏ - Fake.exe, Real.exe, DebugMe3.exe 56.4. µð¹ö±ë 1 56.4.1. Open - ½ÇÇà ÆĶó¹ÌÅÍ ÀÔ·Â 56.4.2. main( ) 56.4.3. SubFunc_1 ( ) 56.4.4. CreateProcess(¡°fake.exe¡±, CREATE_SUSPENDED) 56.4.5. SubFunc_2 ( ) 56.4.6. SubFunc_3 ( ) 56.5. µð¹ö±ë 2 56.5.1. ¾ÆÀ̵ð¾î 56.5.2. EP¿¡ ¹«ÇÑ·çÇÁ ¼³Ä¡Çϱâ 56.6. ¸¶¹«¸®
57Àå µð¹ö±ë ½Ç½À4 - Debug Blocker 57.1. Debug Blocker 57.2. ¾ÈƼ µð¹ö±ë Ư¼º 57.2.1. ºÎ¸ð - ÀÚ½Ä °ü°è 57.2.2. µð¹ö±â ÇÁ·Î¼¼½º´Â ´Ù¸¥ µð¹ö°Å(¿¹: OllyDbg)¿¡¼ µð¹ö±ëÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù. 57.2.3. µð¹ö°Å ÇÁ·Î¼¼½º¸¦ Á¾·áÇÏ¸é µ¿½Ã¿¡ µð¹ö±â ÇÁ·Î¼¼½ºµµ Á¾·áµË´Ï´Ù. 57.2.4. µð¹ö°Å¿¡¼ µð¹ö±âÀÇ Äڵ带 Á¶ÀÛÇÕ´Ï´Ù. 57.2.5. µð¹ö±âÀÇ ¿¹¿Ü(Exception)¸¦ µð¹ö°Å¿¡¼ ó¸®ÇÕ´Ï´Ù. 57.2. µð¹ö±ë ½Ç½À - DebugMe4.exe 57.3. 1Â÷ ½Ãµµ 57.3.1. µð¹ö±ë ½ÃÀÛ À§Ä¡ ¼±Á¤ 57.3.2. main( ) 57.4. 2Â÷ ½Ãµµ 57.5. 3Â÷ ½Ãµµ 57.6. 4Â÷ ½Ãµµ 57.7. 5Â÷ ½Ãµµ 57.7.1. System Break Point 57.7.2. EXCEPTION_ILLEGAL_INSTRUCTION (1) 57.7.3. EXCEPTION_ILLEGAL_INSTRUCTION (2) 57.8. 6Â÷ ½Ãµµ 57.8.1. 40121D (ù ¹ø° ¿¹¿Ü) 57.8.2. 401299 (µÎ ¹ø° ¿¹¿Ü) 57.9. 7Â÷ ½Ãµµ 57.9.1. Static ¹æ¹ý 57.9.2. Dynamic ¹æ¹ý 57.10. ¸¶¹«¸®
Ã¥À» ¸¶Ä¡¸ç 1. âÀǼº°ú °æÇè(¹ÙµÏ°ú Àå±â - ÇÁ·Î±×·¡¹Ö°ú ¸®¹ö½Ì) ¹ÙµÏ°ú Àå±â ÇÁ·Î±×·¡¹Ö°ú ¸®¹ö½Ì 2. µ¶ÀڴԵ鲲
¸®¹ö¼¶ó¸é ²À ¾Ë¾Æ¾ß ÇÒ ÇÙ½É ¿ø¸®¸¦ ¸ðµÎ ´ã¾Ò´Ù!
¸®¹ö½ÌÀ̶õ ÇÁ·Î±×·¥ÀÇ ³»ºÎ¸¦ ±íÀÌ µé¿©´Ùº¸°í Á¶ÀÛÇÒ ¼ö ÀÖ´Â ±â¹ýÀÌ´Ù. ¸®¹ö½ÌÀº Àϸí '¸®¹ö¼'¶ó ºÒ¸®´Â ¾Ç¼º ÄÚµå ºÐ¼®°¡µéÀÇ Æ¯±âÀ̱⵵ ÇÏ´Ù. ¹«¾ùº¸´Ù ¸®¹ö½Ì ±â¹ýÀº ÇØÄ¿¿Í º¸¾È Àü¹®°¡ÀÇ ´ë°á·Î¸¸ ÀÌ¿ëµÇ´Â °ÍÀº ¾Æ´Ï´Ù. ¸®¹ö½ÌÀ» Àß È°¿ëÇÏ¸é °³¹ß/Å×½ºÆ® ´Ü°è¿¡¼ ¹Ìó ¹ß°ßÇÏÁö ¸øÇÑ ¹ö±×³ª Ãë¾àÁ¡µµ ÆľÇÇÒ ¼ö ÀÖ°í, ÆÄÀÏÀ̳ª ¸Þ¸ð¸®¿¡ Á÷Á¢ Á¢±ÙÇÏ¿© ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ÀüÇô »õ·Î¿î ±â´ÉÀ» Ãß°¡ÇØ ÇÁ·Î±×·¥ÀÇ ±â´ÉÀ» Çâ»ó½Ãų ¼öµµ ÀÖ¾î ¸Å¿ì À¯¿ëÇÏ´Ù. ÀÌ Ã¥Àº ÀÌ·± ¸¶¹ý °°Àº ÀϵéÀÌ °¡´ÉÇÑ '¸®¹ö½Ì'¿¡ ÇÊ¿äÇÑ ÇÙ½É ¿ø¸®¸¦ 50¿©°³ ÀåÀ» ÅëÇØ ²Ä²ÄÇÏ°Ô ¼³¸íÇÑ´Ù. ¹«¾ùº¸´Ù ÀúÀÚ°¡ ¿À·§µ¿¾È ¾Èö¼ö ¿¬±¸¼Ò¿¡¼ ÀÏÇÑ °æÇèÀ» Åä´ë·Î Á÷Á¢ ÀÛ¼ºÇÑ ´Ù¾çÇÑ ÄÚµå´Â ¹°·Ð, ¸®¹ö¼¶ó¸é ²À ¾Ë¾Æ¾ß ÇÒ ´Ù¾çÇÑ ¸®¹ö½Ì ±â¹ýÀ» »ó¼¼ÇÏ°Ô ¼Ò°³Çϱ⠶§¹®¿¡ ¸®¹ö¼¸¦ ²Þ²Ù´Â °³¹ßÀÚ¿Í ½Ç¹«¸¦ °æÇèÇغ» ¸ðµÎ¿¡°Ô µµ¿òÀ» ÁØ´Ù.
º¸¾ÈÀº ´Ù¾çÇÑ ºÐ¾ßÀÇ Æø³Ð°í ±íÀÌ ÀÖ´Â Áö½Ä°ú Àü¹®°¡¸¦ ÇÊ¿ä·Î Çϴµ¥, ÀÌ Ã¥Àº º¸¾È ºÐ¾ß Àü¹®°¡·Î¼ÀÇ Ã¹°ÉÀ½À» °¡º±°Ô ½ÃÀÛ ÇÒ ¼ö ÀÖµµ·Ï µµ¿òÀ» ÁÙ °ÍÀÌ´Ù. _¾Èö¼ö¿¬±¸¼Ò Áß±¹ ¹ýÀÎ ºÐ¼® ¼¾ÅÍÀå ÇÑâ±Ô
¸®¹ö¼°¡ µÇ±â¸¦ ¿øÇϴ°¡? '°³¹ßÀÚÀÎ ³»¿¡°Ôµµ ÇÊ¿äÇÑ°¡?'¶ó´Â Áú¹®À» °¡Áö°í ÀÖ´Ù¸é, ÀÌ Ã¥Àº ´ç½ÅÀÇ È®½ÇÇÑ µ¿¹ÝÀÚ°¡ µÉ °ÍÀÌ´Ù. _¾Èö¼ö¿¬±¸¼Ò Á¤°üÁø Ã¥ÀÓ¿¬±¸¿ø/ÆÐŶÀλçÀ̵å(PacketInside.com)ºí·Î±×¿î¿µÀÚ
ÁÖ¿ä³»¿ë 1A-32Register/µð¹ö±ë/Å©·¢/PE File Format/½ÇÇà¾ÐÃà/Base Relocation Table/ÀζóÀÎ ÆÐÄ¡ ½Ç½À/Windows ¸Þ½ÃÁö ÈÄÅ·/DLL ÀÎÁ§¼Ç/DLL ÀÌÁ§¼Ç/Code ÀÎÁ§¼Ç/API ÈÄÅ·/'½ºÅÚ½º'ÇÁ·Î¼¼½º/±Û·Î¹ú APIÈÄÅ·/64 bit Computing/ASLR/Session in Kernel 6/TEB/PEB/SEH/IA-32 Instuction/¾ÈƼ µð¹ö±ë
|
|
|
|
|