 |
|
 |
|
BINARY HACKS: ÇØÄ¿°¡ Àü¼öÇÏ´Â Å×Å©´Ð 100¼± |
|
|
|
|
 |
|
 |
Ãâ°£ ÇÑ ´Þ ¸¸¿¡ 5000ºÎ¶ó´Â ³î¶ó¿î ÆÇ¸Å¸¦ º¸ÀΠå! ¿À¶óÀϸ® ÀçÆÒÀÇ ¾ß½ÉÀÛ!
ÀÌ Ã¥ÀÇ ÁÖÁ¦´Â Àú¼öÁØ ÇÁ·Î±×·¡¹ÖÀÔ´Ï´Ù. Àú¼öÁØÀ̶õ ÄÄÇ»ÅÍÀÇ °üÁ¡¿¡¼ Æí¸®ÇÏ´Ù´Â °ÍÀ» ¶æÇÕ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ ¼¼°è´Â Ãß»óÈÀÇ °³³äÀ» Á¡Â÷
´Ã·Á°¡¸ç Áøº¸ÇØ ¿Ô½À´Ï´Ù. ¾î¼Àºí·¯´Â ±â°è¾î¿¡ ´ëÇÑ Ãß»óÈÀ̰í, C ¾ð¾î´Â ¾î¼Àºí·¯¿¡ ´ëÇÑ Ãß»óÈÀÔ´Ï´Ù. ¶ÇÇÑ C ¾ð¾î »óÀ§¿¡´Â C ¾ð¾î·Î
±¸Ã¼ÈµÇ´Â °¢Á¾ ½ºÅ©¸³Æ® ¾ð¾î°¡ ÀÖ½À´Ï´Ù. Ãß»óÈ´Â Àú¼öÁØÀÇ º¹ÀâÇÑ ºÎºÐÀ» °¨Ãß°í, °³¹ßÀÚ°¡ º¸´Ù »ý»êÀûÀÌ°í ¾ÈÀüÇÑ ¹æ¹ýÀ¸·Î ÇÁ·Î±×·¡¹ÖÇÏ´Â
¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.
±×·¯³ª Àú¼öÁØÀÇ ±â¼úÀ» ÀüÇô ¸ð¸¥ ä·Î ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. öÀúÈ÷ ¼º´ÉÇâ»óÀ» Ãß±¸Çϰųª ÃÖ´ëÇÑ ½Å·Ú¼ºÀ» ³ôÀ̰íÀÚ ÇÒ ¶§,
°¡²û ¹ß»ýÇÏ´Â ¡®Àǹ®ÀÇ ¿¡·¯¡¯¸¦ ÇØ°áÇϰíÀÚ ÇÒ ¶§´Â Àú¼öÁØÀ» ´Ù·ç¾î¾ß ÇÒ Çʿ伺À» ´À³¢°Ô µË´Ï´Ù. À¯°¨½º·´°Ôµµ Ãß»óȰ¡ ¸¸´ÉÀº ¾Æ´Ï±â
¶§¹®ÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, ·çºñ³ª ÆÞ ½ºÅ©¸³Æ®¿¡¼ ¼¼±×¸ÕÅ×ÀÌ¼Ç ÆúÆ®(segmentation fault) ¿¡·¯¸¦ ³»¸ç ºñÁ¤»ó Á¾·áµÇ´Â ¹®Á¦°¡ ¹ß»ýµÇ¸é, C ¾ð¾î
·¹º§·Î ³»·Á¿Í ¿øÀÎÀ» ã¾Æ¾ß ÇÕ´Ï´Ù. ¶§·Î´Â ƯÀ¯ÀÇ ¹®Á¦°¡ ¹ß»ýÇÏ¿© ¡®½ÇÇà½Ã°£¿¡ ÇÁ·Î±×·¥ ÀÚ½ÅÀÇ ±â°è¾î Äڵ带 ÀçÀÛ¼º¡¯ÇØ¾ß ÇÏ´Â ±î´Ù·Î¿î ±â¼úÀ»
ÇÊ¿ä·Î ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ¸¸ÀÏ Àú¼öÁØÀÇ ±â¼úÀ» ¸ð¸¥´Ù¸é ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ¾øÀ» °ÍÀÔ´Ï´Ù.
ÀÌ Ã¥ÀÇ ¸ñÀûÀº ÀÌ¿Í °°Àº °æ¿ì¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¼ö¸¹Àº ³ëÇÏ¿ì, ¡®Binary Hack¡¯À» ¼Ò°³ÇÏ´Â °ÍÀÔ´Ï´Ù. ¡®Binary Hack¡¯À̶ó´Â
¿ë¾î´Â 0 ¶Ç´Â 1, Áï ÇÁ·Î±×·¡¹Ö¿¡¼ °¡Àå Àú¼öÁØ¿¡ ÀÖ´Â ¡®Binary¡¯¶ó´Â °³³ä¿¡¼ À¯·¡ÇÕ´Ï´Ù. ÀÌ Ã¥¿¡¼´Â ¡®Binary Hack¡¯À»
¡®¼ÒÇÁÆ®¿þ¾îÀÇ Àú¼öÁØ ±â¼úÀ» ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö ³ëÇϿ졯¶ó Á¤ÀÇÇϰí, ±âº»ÀûÀÎ Åø »ç¿ë¹ý¿¡¼ º¸¾È ÇÁ·Î±×·¡¹Ö, OS³ª ÇÁ·Î¼¼¼ÀÇ ±â´ÉÀ» ÀÌ¿ëÇÑ
°íµµÀÇ Å×Å©´Ð±îÁö Æø³Ð°Ô ´Ù·ç°í ÀÖ½À´Ï´Ù.
_¡¸½ÃÀÛÇϸ硹¿¡¼
ÀÌ Ã¥ÀÇ ±¸¼º
1Àå. ¼Ò°³
Binary HackÀÇ °³³äÀ» ÀÍÈù´Ù. ÀÌ Ã¥¿¡ »ç¿ëµÈ ´Ù¾çÇÑ ±â¼ú¿ë¾î¿¡ ´ëÇÑ ÇØ¼³°ú Binary HackÀÇ °¡Àå ±âº»ÀÌ µÇ´Â ÅøÀ» ¼Ò°³Çϰí
ÀÖ´Ù.
2Àå. ¿ÀºêÁ§Æ® ÆÄÀÏ Hack
½ÇÇà ÆÄÀϰú °øÀ¯ ¶óÀ̺귯¸®ÀÇ º»Ã¼ÀÎ ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡ ´ëÇØ ½Éµµ ÀÖ°Ô ¼³¸íÇÑ´Ù. ¸ÕÀú, GNU/¸®´ª½º µî¿¡¼ »ç¿ëµÇ´Â ELF¿¡ ´ëÇØ ÇØ¼³Çϰí,
¶óÀ̺귯¸®¿¡ °üÇÑ HackÀ» ¼Ò°³ÇÑ´Ù. ¿ÀºêÁ§Æ® ÆÄÀÏ HackÀÇ ±âº»ÀûÀÎ GNU BinutilsÀÇ »ç¿ë¹ýµµ ¼³¸íÇϰí ÀÖ´Ù.
3Àå. GNU ÇÁ·Î±×·¡¹Ö Hack
GNU °³¹ßȯ°æ, À̸¦Å׸é GCC, glibc¸¦ ½ÃÀÛÀ¸·Î ÇÏ´Â GNU ¼ÒÇÁÆ®¿þ¾î¿¡´Â ´Ù¾çÇÑ È®Àå±â´ÉÀÌ ÀÖ´Ù. ÀÌ Àå¿¡¼´Â GNU °³¹ßȯ°æÀÇ ÈûÀ»
ÃÖ´ëÇÑ ²ø¾î³»´Â Å×Å©´Ð¿¡ ´ëÇØ ¾Ë¾Æº»´Ù.
4Àå. º¸¾È ÇÁ·Î±×·¡¹Ö Hack
º¸¾È ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀº Çö´ë¿¡ °¡Àå Áß¿äÇÑ °úÁ¦ Áß Çϳª´Ù. ÀÌ Àå¿¡¼´Â º¸¾È ÇãÁ¡À» ¸·±â À§ÇÑ Å×Å©´Ð°ú º¸¾È ÇãÁ¡À» ¹ß°ßÇϰí ÅðÄ¡ÇÏ´Â
¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù.
5Àå. ·±Å¸ÀÓ Hack
ÇÁ·Î±×·¥ ½ÇÇà ½Ã°£¿¡ ÇÁ·Î±×·¥ÀÌ ÀÚ½ÅÀÇ Äڵ带 ÀçÀÛ¼ºÇϰųª, ÀÚ½ÅÀÇ »óŸ¦ Á¶»çÇÒ ¼ö ÀÖ´Ù¸é Àç¹ÌÀÖÁö ¾Ê°Ú´Â°¡? ÀÌ Àå¿¡¼´Â ½ÇÇà ÁßÀÎ
ÇÁ·Î±×·¥¿¡ ´ëÇØ Àû¿ë °¡´ÉÇÑ ¿©·¯ °¡Áö Å×Å©´ÐÀ» ¼Ò°³ÇÑ´Ù.
6Àå. ÇÁ·ÎÆÄÀÏ·¯/µð¹ö°Å Hack
ÀÌ Àå¿¡¼´Â ÇÁ·ÎÆÄÀÏ·¯¸¦ »ç¿ëÇØ ÇÁ·Î±×·¥ÀÇ º´¸ñÁ¡À» ¾Ë¾Æ³»´Â ¹æ¹ý ¹× °íµµÀÇ µð¹ö°Å »ç¿ë¹ýÀ» ¼Ò°³Çϰí ÀÖ´Ù. ¶ÇÇÑ ÇÁ·ÎÆÄÀÏ·¯·Î gprof,
sysprof, oprofileÀ», µð¹ö°Å·Î´Â GDB¸¦ ´Ù·ç°í ÀÖ´Ù.
7Àå. ±× ¹ÛÀÇ Hack
ÀÌ Àå¿¡¼´Â À§¿¡¼ ºÐ·ùÇÒ ¼ö ¾ø¾ú´ø HackÀ» ´Ù·é´Ù. ¸¶Áö¸· HackÀº Âü°í¹®Çå ¾È³»·Î ¾ÕÀ¸·ÎÀÇ Binary Hack ¾È³»¼°¡ µÇ¾î ÁÙ
¼Àû°ú À¥»çÀÌÆ®¸¦ ¼Ò°³Çϰí ÀÖ´Ù.
ÀÌ Ã¥ÀÇ ÀÌ¿ë¹ý
ÀÌ Ã¥Àº óÀ½ºÎÅÍ ¼ø¼´ë·Î Àаųª ¸ñÂ÷¿¡¼ Àç¹ÌÀÖÀ» °Í °°Àº Ç׸ñÀ» ¼±ÅÃÇØ¼ ¸ÕÀú Àо »ó°ü¾ø´Ù. ¸¸ÀÏ ¹ÙÀ̳ʸ® ±â¼ú¿¡ °üÇÑ ±âÃÊÀûÀÎ Áö½ÄÀ»
¾ò°íÀÚ ÇÑ´Ù¸é ¸ÕÀú 1ÀåÀ» ´ë° ÀÐ¾î ºÁµµ ÁÁ´Ù. ¶ÇÇÑ ÇÁ·Î±×·¡¹Ö °æÇèÀÌ ¾ÆÁ÷ ¸¹Áö ¾Ê´Ù¸é °¢ ÀåÀÇ ÃÊ±Þ HackÀ» ¸ÕÀú Àд °ÍÀÌ ÁÁ´Ù.
ÀÌ Ã¥¿¡¼ ´Ù·ç´Â °Í°ú ´Ù·çÁö ¾Ê´Â °Í
ÀÌ Ã¥¿¡´Â Binary Hacking¿¡ ºÒ°¡°áÇÑ ±âº» ÅøÀÇ »ç¿ë¹ý¿¡¼ GCC È®Àå±â´É, OS ½Ã½ºÅÛÄÝ, ÀζóÀÎ ¾î¼Àºí·¯ µîÀ» ÀÌ¿ëÇÑ °íµµÀÇ
Å×Å©´ÐÀ» ÁÖ·Î ´Ù·ç°í ÀÖ´Ù. ´ë»ó Ç÷§ÆûÀº À¯´Ð½º(UNIX) ¶Ç´Â GNU/¸®´ª½º¿¡ ÃÊÁ¡À» ¸ÂÃß°í ÀÖ´Ù. À©µµ¿ì(Windows)ÀÇ Win32
API¸¦ ÀÌ¿ëÇÑ Binary HackingÀº °ÅÀÇ ´Ù·çÁö ¾ÊÁö¸¸, CygwinÀ» ÀÌ¿ëÇÑ GNU ±â¹ÝÀÇ °³¹ßȯ°æ¿¡¼´Â ÀÌ Ã¥¿¡¼ ´Ù·é HackÀÇ
´ëºÎºÐÀ» Àû¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀúÀÚ ¼Ò°³
Ÿī¹Ù¾ß½Ã »çÅä·ç _ Satoru Takabayashi
¿ìÄ«ÀÌ ÈĹÌÅä½Ã _ Fumitoshi Ukai
»çÅä À¯½ºÄÉ _ Yusuke Sato
Çϸ¶Áö ½ÅÀÌÄ¡·Î _ Shinichiro Hamaji
½´µµ Ä«ÁîÀ¯Å° _ Kazuyuki Shudo
¿ªÀÚ ¼Ò°³
Áø¸íÁ¶
°í·Á´ëÇб³ Àç·á°øÇкθ¦ Á¹¾÷Çϰí Áö±ÝÀº (ÁÖ)¿À´Ã°ú³»ÀÏ ¿¬±¸¼Ò °³¹ßÆÀ¿¡¼ ±Ù¹«Çϰí ÀÖ´Ù. ÃÖ±Ù µé¾î¼ ÀΰøÁö´É°ú ½Ã½ºÅÛ °ü¸®ÀÇ °áÇÕ¿¡ °ü½ÉÀÌ
¸¹¾ÆÁ® °ü·Ã ¼Àû ޵¶¿¡ ºüÁ® ÀÖÀ¸¸ç, ¡ºC ¾ð¾î·Î ¹è¿ì´Â ¾Ë°í¸®Áò ÀÔ¹®¡»(2004, ÇѺû¹Ìµð¾î)À» ¹ø¿ªÇϱ⵵ ÇÏ¿´´Ù.
¡¡
|
1Àå ¼Ò°³ 1
1. Binary Hack ÀÔ¹® 1
2. Binary Hack ¿ë¾î Á¤¸® 4
3. file - ÆÄÀÏ Á¾·ù È®ÀÎ 12
4. od - ¹ÙÀ̳ʸ® ÆÄÀÏ ´ýÇÁ 15
2Àå ¿ÀºêÁ§Æ® ÆÄÀÏ Hack 21
5. ELF ÀÔ¹® 21
6. Á¤Àû ¶óÀ̺귯¸®¿Í °øÀ¯ ¶óÀ̺귯¸® 34
7. ldd - °øÀ¯ ¶óÀ̺귯¸® ÀÇÁ¸°ü°è È®ÀÎ 37
8. readelf - ELF ÆÄÀÏ Á¤º¸ º¸±â 42
9. objdump - (1) ¿ÀºêÁ§Æ® ÆÄÀÏ ´ýÇÁ 45
10. objdump - (2) ¿ÀºêÁ§Æ® ÆÄÀÏ ¿ª¾î¼Àºí 50
11. objcopy - ½ÇÇà ÆÄÀÏ¿¡ µ¥ÀÌÅÍ »ðÀÔÇϱâ 55
12. nm - ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡ Æ÷ÇÔµÈ ½Éº¼ È®ÀÎ 56
13. strings - ¹ÙÀ̳ʸ® ÆÄÀÏ¿¡¼ ¹®ÀÚ¿ ÃßÃâ 63
14. c++filt - C++ ½Éº¼ demangle 65
15. addr2line - ÁÖ¼Ò¿¡¼ ÆÄÀϸí°ú Çà ¹øÈ£ ¾ò±â 66
16. strip - ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡¼ ½Éº¼ »èÁ¦ 68
17. ar - Á¤Àû ¶óÀ̺귯¸® ´Ù·ç±â 70
18. C¿Í C++ ÇÁ·Î±×·¥ ¸µÅ© ¹æ¹ý 71
19. ¸µÅ©ÇÒ ¶§ ½Éº¼ Ãæµ¹ ¹æÁöÇϱâ 78
20. GNU/¸®´ª½º ½Ã½ºÅÛ¿¡¼ °øÀ¯ ¶óÀ̺귯¸®¿¡ PIC¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯ 85
21. statifier - µ¿Àû ½ÇÇà ÆÄÀÏ¿¡¼ ÀÇ»ç Á¤Àû ½ÇÇà ÆÄÀÏ »ý¼º 89
3Àå GNU ÇÁ·Î±×·¡¹Ö Hack 93
22. GCC È®Àå±â´É ÀÔ¹® 94
23. GCC·Î ÀζóÀÎ ¾î¼Àºí·¯ »ç¿ë 100
24. GCC ºôÆ®ÀÎ ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ ÃÖÀûÈ 105
25. glibc¸¦ ÀÌ¿ëÇÏÁö ¾ÊÀº ¡°Hello World¡± 109
26. TLS(Thread Local Storage) 114
27. glibc·Î ½Ã½ºÅÛ È¯°æ¿¡ µû¶ó ¶óÀ̺귯¸® ÀüȯÇϱâ 116
28. ¸µÅ©µÈ ¶óÀ̺귯¸®¿¡ µû¶ó ÇÁ·Î±×·¥ µ¿ÀÛ ¹Ù²Ù±â 120
29. ¶óÀ̺귯¸® ¿ÜºÎ¿¡ °ø°³ÇÒ ½Éº¼ Á¦ÇÑ 122
30. ȣȯ¼º °ü¸®¸¦ À§ÇØ ¹öÀüº° ½Éº¼ »ç¿ë 126
31. main( ) ÇÔ¼ö ÀÌÀü¿¡ ÇÔ¼öÈ£ÃâÇϱâ 134
32. ½ÇÇà Áß¿¡ GCC°¡ Æ®·¥ÆÞ¸° Äڵ带 »ý¼ºÇÏ´Â ¹æ¹ý 138
33. ½ºÅÿ¡ ÀÖ´Â ÄÚµåÀÇ ½ÇÇà Çã¿ë/±ÝÁö 140
34. Èü¿¡ ÀÖ´Â ÄÚµå ½ÇÇà 142
35. PIE(Position Independant Executable, À§Ä¡µ¶¸³½ÇÇàÇü½Ä) »ý¼º 144
36. C++·Î synchronized method ÀÛ¼º 147
37. C++·Î ½Ì±ÛÅæ »ý¼º 152
38. g++ ¿¹¿Ü ó¸® ÀÌÇØ(throw) 158
39. g++ ¿¹¿Ü ó¸® ÀÌÇØ(SjLj) 160
40. g++ ¿¹¿Ü ó¸® ÀÌÇØ(DWARF2) 168
41. g++ ¿¹¿Ü ó¸®ÀÇ ½ÇÇà ½Ã°£ ºñ¿ë 172
4Àå º¸¾È ÇÁ·Î±×·¡¹Ö Hack 177
42. GCC º¸¾È ÇÁ·Î±×·¡¹Ö ÀÔ¹® 177
43. -ftrapv·Î Á¤¼ö ¿¬»ê ¿À¹öÇ÷Π°ËÃâ 182
44. Mudflap - ¹öÆÛ ¿À¹öÇ÷Π°ËÃâ 186
45. -D_FORTIFY_SOURCE·Î ¹öÆÛ ¿À¹öÇ÷Π°ËÃâ 190
46. -fstack-protector·Î ½ºÅà º¸È£ 194
47. bitmask »ç¿ë ½Ã unsigned¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯ 198
48. big shift ÀÛ¾÷ÀÌ À§ÇèÇÑ ÀÌÀ¯ 200
49. 64ºñÆ® ȯ°æ¿¡¼ 0°ú NULLÀÇ Â÷ÀÌÁ¡ 202
50. POSIX ½º·¹µå ¾ÈÀüÇÑ ÇÔ¼ö 205
51. ½Ã±×³Î Çڵ鷯 ¾ÈÀüÇÏ°Ô ÀÛ¼ºÇϱâ 209
52. sigwait - ºñµ¿±â ½Ã±×³ÎÀ» µ¿±âÀûÀ¸·Î ó¸®Çϱâ 215
53. sigsafe - ¾ÈÀüÇÏ°Ô ½Ã±×³Î ó¸®Çϱâ 220
54. Valgrind - (1) ¸Þ¸ð¸® ´©¼ö °ËÃâÇϱâ 230
55. Valgrind - (2) ºñÁ¤»óÀûÀÎ ¸Þ¸ð¸® Á¢±Ù °ËÃâÇϱâ 233
56. Helgrind - ¸ÖƼ½º·¹µå ÇÁ·Î±×·¥ µð¹ö±×Çϱâ 237
57. fakeroot - °ÅÁþ root ±ÇÇÑÀ¸·Î ÇÁ·Î¼¼½º ½ÇÇàÇϱâ 241
5Àå ·±Å¸ÀÓ Hack 245
58. ÇÁ·Î±×·¥ÀÌ main( )¿¡ µµ´ÞÇϱâ±îÁöÀÇ °úÁ¤ 245
59. ½Ã½ºÅÛÄÝÀ» È£ÃâÇÏ´Â ¹æ¹ý 255
60. LD_PRELOAD·Î °øÀ¯ ¶óÀ̺귯¸® ±³Ã¼Çϱâ 259
61. LD_PRELOAD·Î ±âÁ¸ ÇÔ¼ö ·¡ÇÎÇϱâ 262
62. dlopen - ½ÇÇà Áß¿¡ µ¿Àû ¸µÅ©Çϱâ 265
63. C·Î ¹éÆ®·¹À̽º Ç¥½Ã 270
64. ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½ºÀÇ Àý´ë°æ·Î È®ÀÎ 276
65. ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º¿¡¼ ·ÎµåÇϰí ÀÖ´Â °øÀ¯ ¶óÀ̺귯¸® È®ÀÎ 280
66. ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® ¸Ê È®ÀÎ 286
67. libbfd - ½Éº¼ ¿°ÅÇϱâ 292
68. ½ÇÇà Áß¿¡ C++ ½Éº¼ demangleÇϱâ 297
69. ffcall - µ¿Àû ½Ã±×´Ïó·Î ÇÔ¼öÈ£Ãâ 300
70. libdwarf - µð¹ö±× Á¤º¸ ¾ò±â 305
71. dumper - ±¸Á¶Ã¼ µ¥ÀÌÅ͸¦ º¸±â ½±°Ô ´ýÇÁÇϱâ 310
72. ¿ÀºêÁ§Æ® ÆÄÀÏÀ» Á÷Á¢ ·ÎµåÇϱâ 314
73. libunwind - ÄÝ Ã¼ÀÎ Á¦¾îÇϱâ 322
74. GNU lightning - ½ÇÇà Áß¿¡ ÀÌ½Ä °¡´ÉÇÑ ÄÚµå »ý¼ºÇϱâ 326
75. ½ºÅà ¿µ¿ªÀÇ ÁÖ¼Ò ¾ò±â 329
76. sigaltstack - ½ºÅà ¿À¹öÇ÷ο¡ ´ëóÇϱâ 335
77. ÇÔ¼ö ÁøÀÔ(enter)/Á¾·á(exit) ÈÄÅ·Çϱâ 347
78. ½Ã±×³Î Çڵ鷯·Î ÇÁ·Î±×·¥ ÄÁÅØ½ºÆ® º¯°æÇϱâ 350
79. ÇÁ·Î±×·¥ Ä«¿îÅÍ °ª ¾ò±â 352
80. ÀÚ±â¼öÁ¤ÄÚµå·Î ÇÁ·Î±×·¥ µ¿ÀÛ º¯°æ 353
81. SIGSEGV·Î ÁÖ¼Ò Á¢±Ù À¯È¿¼º È®ÀÎ 357
82. strace - ½Ã½ºÅÛÄÝ ÃßÀûÇϱâ 360
83. ltrace - °øÀ¯ ¶óÀ̺귯¸®ÀÇ ÇÔ¼öÈ£Ãâ ÃßÀûÇϱâ 362
84. Jockey·Î ¸®´ª½º ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ±â·Ï, Àç»ýÇϱâ 364
85. prelink - ÇÁ·Î±×·¥ ±âµ¿ Çâ»ó½Ã۱â 366
86. livepatch - ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º ÆÐÄ¡Çϱâ 370
6Àå ÇÁ·ÎÆÄÀÏ·¯-µð¹ö°Å Hack 379
87. gprof - ÇÁ·ÎÆÄÀÏ Á¶»çÇϱâ 379
88. sysprof - ½Ã½ºÅÛ ÇÁ·ÎÆÄÀÏ Á¶»çÇϱâ 383
89. oprofile - »ó¼¼ÇÑ ½Ã½ºÅÛ ÇÁ·ÎÆÄÀÏ ¾ò±â 385
90. GDB - ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º Á¦¾îÇϱâ 390
91. Çϵå¿þ¾î µð¹ö±× ±â´É »ç¿ëÇϱâ 393
92. C ÇÁ·Î±×·¥¿¡¼ Áß´ÜÁ¡ ¼³Á¤Çϱâ 397
7Àå ±× ¹ÛÀÇ Hack 399
93. Boehm GCÀÇ ±¸Á¶ 399
94. ÇÁ·Î¼¼¼ÀÇ ¸Þ¸ð¸® Á¤·Ä 406
95. PCLÀ» ÀÌ¿ëÇÑ °æ·® º´Çàó¸® 411
95. CPU Ŭ·Ï ¼ö ¼¼±â 414
97. ºÎµ¿¼Ò¼öÁ¡ ¼öÀÇ ºñÆ® Ç¥Çö 419
98. x86 ºÎµ¿¼Ò¼öÁ¡ ¿¬»êÀÚÀÇ Æ¯¼º 421
99. °á°ú°¡ ¹«ÇÑ´ë ¶Ç´Â NaNÀÎ ¿¬»ê¿¡¼ ½Ã±×³Î ¹ß»ýÇϱâ 426
100. ¹®Çå¾È³» 429
ã¾Æº¸±â 439
¡¡
|
ÇÔ²² ÁýÇÊÇϽŠ¿ìÄ«ÀÌ ÈĹÌÅä½Ã ´Ô, »çÅä À¯½ºÄÉ ´Ô, Çϸ¶Áö ½ÅÀÌÄ¡·Î ´Ô, ½´µµ Ä«ÁîÀ¯Å° ´Ô,
¾Æ¿ï·¯ ÁýÇÊ¿¡ µµ¿òÀ» ÁֽаíÅä ¸¶»ç³ë¸® ´Ô, ³ªÄ«¹«¶ó ¹Ì³ë·ç ´Ô, ³ªÄ«¹«¶ó Ÿī½Ã ´Ô, Ÿ³ªÄ« ¾ÆÅ°¶ó ´Ô, ¾ß¿¡°¡½Ã ŸÄɽà ´Ô, ³ëÄíºñ
ŸīÃ÷±¸ ´Ô²² °¨»çµå¸°´Ù.
¶Ù¾î³ ÇØÄ¿µé°ú °°ÀÌ ÀÌ Ã¥À» ÁýÇÊÇÒ ¼ö ÀÖ¾î¼ ±â´ë ÀÌ»óÀ¸·Î Áñ°Å¿ü´Ù. ÀÌ Ã¥ÀÇ ÃßõÀÇ ±ÛÀ» ½á ÁֽŠī¿ÍÀÌ ½Ã·Î
´Ô²²µµ °¨»çµå¸°´Ù. Ä«¿ÍÀÌ ´ÔÀº Àú¼öÁØ¿¡¼ °í¼öÁرîÁö ´Ù¾çÇÑ ±â¼ú¿¡ Á¤ÅëÇÑ ÇØÄ¿ÀÏ »Ó¸¸ ¾Æ´Ï¶ó ¶Ù¾î³ ÀúÀÚÀÌÀÚ ¹ø¿ª°¡, ¹è¿ìÀ̱⵵ ÇÏ´Ù. Ä«¿ÍÀÌ
´Ô²²¼ ÃßõÀÇ ±ÛÀ» ½á Áּż ´õ ¾ø´Â ¿µ±¤À̾ú´Ù.
ÀÌ Ã¥ÀÇ ½ÃÀÛÀº 2005³â ¸»·Î °Å½½·¯ ¿Ã¶ó°£´Ù. ´ç½Ã À¯ÇàÇß´ø Web 2.0À̶ó´Â ¿ë¾î¸¦
µû¶ó Binary 2.0À̶ó´Â ¿ë¾î¸¦ ºí·Î±×¿¡ °ÔÀçÇÑ °ÍÀÌ 2005³â 11¿ù, ¡¸Binary 2.0 ÄÁÆÛ·±½º¡¹¸¦ °³ÃÖÇÑ °ÍÀÌ 2005³â
12¿ùÀÌ´Ù. Binary 2.0ÀÇ Á¤Àǰ¡ ¸íÈ®ÇÏÁöµµ ¾Ê°í ¾Æ¹«µµ Á¤È®È÷ ¹«¾ùÀÎÁö ¸ð¸¥´Ù´Â Á¡¿¡ »ó°ü¾øÀÌ, Binary 2.0 ÄÁÆÛ·±½º´Â
100¸íÀÌ ³Ñ´Â Âü°¡ÀÚ·Î ºÏÀû¿´´Ù. ±×¸®ÇÏ¿© Àκ¥Æ® ȸÀÇÀå¿¡ Àç¹Ì»ï¾Æ ¿À¼Ì´ø ¿À¶óÀϸ® ÀçÆÒÀÇ ¿ÍŸ¸® ´Ô°ú Ÿ¹«¶ó ´Ô¿¡°Ô ¡°Binary
Hacks¸¦ Ãâ°£ÇսôÙ.¡±¶ó°í ¾ê±â¸¦ °Ç³Ù °ÍÀÌ ÀÌ Ã¥À» Ãâ°£ÇÏ°Ô µÈ °è±âÀÌ´Ù. Àçºü¸¥ Çຸ·Î ÀÌ Ã¥À» ÃâÆÇÇÒ ¼ö ÀÖ´Â ±âȸ¸¦ ¸¸µé¾î Áֽðí,
ÁýÇÊ, ÆíÁý °úÁ¤À» ²Ú Âü°í ÇÔ²² ÇØ ÁØ ¿ÍŸ¸® ´Ô°ú Ÿ¹«¶ó ´Ô²² °¨»çµå¸°´Ù.
_Ÿī¹Ù¾ß½Ã »çÅä·ç |
HackÀ̶õ ¡®ÇÑ ±ºµ¥ ÁýÁßÇØ¼ ÆÄ°íµå´Â ÇàÀ§¡¯¸¦ ¶æÇϸç, HackÀ» ÇÏ´Â »ç¶÷À» ±× ¸ñÀûÀÇ ¼ø¼öÇÔ, µµ´ö¼º
¿©ºÎ¿¡ µû¶ó ÇØÄ¿(hacker)¿Í Å©·¡Ä¿(cracker)·Î ±¸ºÐÇϱ⵵ Çϴµ¥ ÈçÈ÷ ¸ñÀû°ú´Â »ó°ü¾øÀÌ ÇØÄ¿¶ó°í ÅëĪÇÕ´Ï´Ù. µû¶ó¼ ¡®ÇØÄ¿¡¯¶ó Çϸé
¾î¶² »ç¶÷µéÀº °öÁö ¾ÊÀº ½Ã¼±À» º¸³»´Â°¡ ÇÏ¸é ´Ù¸¥ ºÎ·ùÀÇ »ç¶÷µéÀº Á¸°æÇØ ¸¶Áö¾Ê´Â ¶ß°Å¿î ½Ã¼±À» º¸³»±âµµ ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ÇØÄ¿¿¡ ´ëÇØ
ÀÚ°¡Áø´Ü½ÄÀÇ Áú¹®À» ³ª¿ÇÑ ¡®ÇØÄ¿ÀÇ ÀÚÁúÀ» ÆÄ¾ÇÇÏ´Â Áú¹®µé¡¯À̶ó´Â ±ÛÀÌ ÀÎÅÍ³Ý»ó¿¡ ÈÁ¦°¡ µÈ ÀûÀÌ ÀÖ½À´Ï´Ù. ±× Áß ¸î¸î Áú¹®À» º¸¸é ´ÙÀ½°ú
°°½À´Ï´Ù.
- ÄÄÇ»Å͸¦ »ç¿ëÇØ º» ÀûÀÌ Àִ°¡?
- ÄÄÇ»Å͸¦ 4½Ã°£ ÀÌ»ó °è¼Ó »ç¿ëÇØ º» ÀûÀÌ Àִ°¡?
- ÄÄÇ»Å͸¦ 8½Ã°£ ÀÌ»ó °è¼Ó »ç¿ëÇØ º» ÀûÀÌ Àִ°¡?
- ÄÄÇ»Å͸¦ 16½Ã°£ ÀÌ»ó °è¼Ó »ç¿ëÇØ º» ÀûÀÌ Àִ°¡?
- ÄÄÇ»Å͸¦ 32½Ã°£ ÀÌ»ó °è¼Ó »ç¿ëÇØ º» ÀûÀÌ Àִ°¡?
- ÄÄÇ»ÅÍ ¾ð¾î·Î ²ÞÀ» ²Ù´Â°¡? ¸Þ´º´Â ·¹½ºÅä¶û¿¡¸¸ ÀÖ´Â °ÍÀ̶ó°í »ý°¢Çϴ°¡?
- ¶ó¸éÀ» ¸ÔÀ¸¸é¼ µ¥µå¶ô(deadlock)À» ÇØ°áÇÑ ÀûÀÌ Àִ°¡?
- ¾Ï»êÀ¸·Î Äڵ带 µð½º¾î¼ÀºíÇÒ ¼ö Àִ°¡?
- ¡ºThe Art of Computer Programming¡»À̶õ Ã¥À» 1±ÇºÎÅÍ 3±Ç±îÁö °¡Áö°í Àִ°¡?
- ¿¬½À¹®Á¦¸¦ ¸ðµÎ Ç®¾î º¸¾Ò´Â°¡?
´Ù¼Ò ¿ì½º°¹¼Ò¸®·Î º¸ÀÏ ¸¸ÇÑ Áú¹®µµ ÀÖÁö¸¸, À̸¦ º¸¸é ÇÑÆíÀ¸·Î´Â ÄÄÇ»ÅÍ¿ÍÀÇ ¡®¹°¾ÆÀÏü(Úªä²ìéô÷)¡¯ÀÇ °æÁö°¡ ÇØÄ¿°¡ ¾Æ´Ñ°¡ ½ÍÀ» Á¤µµ·Î ÁøÁ¤ÇÑ
ÄÄÇ»ÅÍ Àü¹®°¡¶ó´Â »ý°¢ÀÌ µì´Ï´Ù.
ÀÌ·¯ÇÑ Àǹ̿¡¼ ÇØÄ¿¸¦ µ¿°æÀÇ ´ë»óÀ¸·Î »ï¾Æ ¿Ô´ø ¿©·¯ºÐ¿¡°Ô ÀÌ Ã¥Àº Áß¿äÇÑ µ¿±â°¡ µÉ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ Ã¥À» ޵¶ÇÑ µÚ ´ç½ÅÀÌ ÇØÄ¿ ¶Ç´Â
Å©·¡Ä¿°¡ µÈ´Ù°í ÇÏ´õ¶óµµ ÇÊÀÚ ¶Ç´Â ¿ªÀÚ°¡ Ã¥ÀÓÀ» Áú ¼ö´Â ¾øÁö¸¸, ÇÑ °¡Áö È®½ÇÇÑ °ÍÀº Hack¿¡ ÇÊ¿äÇÑ µµ±¸µéÀ» ÀÍÈ÷°í ¿ø¸®¸¦ »ý°¢ÇÔÀ¸·Î½á
Binary Hack¿¡ ´ëÇÑ Èï¹Ì¿Í È£±â½ÉÀ» ÇÑÃþ ³ôÀÌ°Ô µÉ °ÍÀ̶ó´Â Á¡ÀÔ´Ï´Ù. ¶ÇÇÑ Àú¼öÁØ ±â¼úÀ» ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö ³ëÇϿ츦 ¸ð¾Æ¼ Á¤¸®ÇÏ¿´±â
¶§¹®¿¡ ÇØÄ¿µéÀÇ ºñ¹Ð½º·¯¿î ±â¹ýÀ» ¼Õ½±°Ô Á¢ÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù´Â Á¡¿¡¼ Àú¼öÁØ ÇÁ·Î±×·¡¹ÖÀÇ º®À» ÇÑ ´Ü°è ²ø¾î³»¸± ¼ö ÀÖ°Ô µÇ¸®¶ó È®½ÅÇÕ´Ï´Ù.
¾Æ¿ï·¯ ÀÏ»óÀûÀ¸·Î ¹Ýº¹µÇ´Â ÇÁ·Î±×·¡¹Ö¿¡ ÁöÃĹö¸° ½Ç¹« Á¾»çÀڵ鿡°Ôµµ »õ·Î¿î ÀÚ±ØÀÌ µÇ¾úÀ¸¸é ÇÏ´Â ¹Ù¶÷ÀÔ´Ï´Ù.
³¡À¸·Î Àú¸¦ ¹Ï°í ÀÌ Ã¥À» ¸Ã°Ü Áֽеµ¼ÃâÆÇ ITCÀÇ À强µÎ ½ÇÀå´Ô°ú Ã¥ÀÌ ³ª¿À±â±îÁö Èû½á ÁֽŠºÐµé²² °¨»çµå¸³´Ï´Ù. ±×¸®°í ³» ÀÚ½ÅÀ»
µ¹¾Æº¸°í äÂïÁúÇÒ ¼ö ÀÖ°Ô ÇØ ÁÖ´Â ¿©·¯ °³¹ßÀںеé°ú ÀϺ»¾î ÇнÀÀ» °è¼Ó ÇÒ ¼ö ÀÖ¾ú´ø µ¿±â°¡ µÇ¾î ÁØ »çÄí¶óÀÌ Ä«ÁîÅä½Ã ´Ô²²µµ °¨»çÀÇ ¶æÀ»
ÀüÇÕ´Ï´Ù. ±×¸®°í µçµçÇÑ Á÷À嵿·áµé°ú Ç×»ó ÇÔ²²ÇÏ´Â °¡Á·µé¿¡°Ôµµ °í¸¶¿òÀ» Ç¥ÇÕ´Ï´Ù.
2007³â 6¿ù
¿ªÀÚ Áø¸íÁ¶
|
°ü·Ã ÀÚ·á°¡ µî·ÏµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. |
°ü·Ã ÀÚ·á°¡ µî·ÏµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. |
|
°ü·Ã ÀÚ·á°¡ µî·ÏµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. |
|
°ü·Ã ÀÚ·á°¡ µî·ÏµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. |
°ü·Ã ÀÚ·á°¡ µî·ÏµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. |
°ü·Ã ÀÚ·á°¡ µî·ÏµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.
|
|