1.8 kernel hackingÀ» À§ÇÑ À¯Æ¿¸®Æ¼

´ÙÀ½¿¡ kernelÀ» ºÐ¼®Çϱâ À§ÇØ À¯¿ëÇÏ°Ô »ç¿ëµÉ¼ö ÀÖ´Â À¯Æ¿¸®Æ¼ ¸î°¡Áö¸¦ ¼Ò°³ÇÑ´Ù.

ÀÚ¼¼ÇÑ ¿ë¹ý¿¡ ´ëÇØ¼­´Â manual page¸¦ Âü°íÇϱ⠹ٶõ´Ù.

1) nm

object file¿¡¼­ symbolÀÌ ¸Þ¸ð¸®»ó¿¡ À§Ä¡ÇÏ´Â ÁöÁ¡À» ¾Ë¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Äڵ忡 ´ÙÀ½°ú °°Àº ºÎºÐÀÌ ÀÖ´Ù°í Ä¡ÀÚ.

unsigned int * handler

...................

handler(); /* hd_interruptÇÔ¼ö ¼öÇà */

½ÇÁ¦·Î ¸®´ª½º kernel¿¡ handler()¶ó°í Á¤ÀÇµÈ ÇÔ¼ö´Â ¾ø´Ù. µû¶ó¼­ À̰ÍÀº kernel³»ÀÇ ¾îµò°¡ ¿¡¼­ handler pointerº¯¼ö¿¡ ÇÔ¼ö pointer¸¦ ´ÙÀ½°ú °°ÀÌ ³Ö¾îµÎ¾úÀ» °ÍÀÌ´Ù.

handler = hd_interrupt

±×·±µ¥ ÀÌ ºÎºÐÀ» ãÁö ¸øÇÑ´Ù¸é ¾î¶»°Ô ÇÒ°ÍÀΰ¡? Áï handlerº¯¼ö°¡ hd_interruptÇÔ¼ö pointe -r¸¦ °¡Áö°í ÀÖ´ÂÁö ¸ð¸¥´Ù¸é ¸»ÀÌ´Ù.

ÀÌ ¶§ printkÇÔ¼ö¸¦ »ç¿ëÇÏ¿© handler°ªÀ» ºÎÆÃÁß¿¡ Ãâ·ÂÇÏ°Ô ¸¸µç´Ù.

handler();

printk("handler : %x\n", handler);

ÀÌÁ¦ kernelÀ» ÄÄÆÄÀÏÇϰí, ´Ù½Ã kernelÀ» ¼³Ä¡ÇÑÈÄ ºÎÆÃ½ÃŲ´Ù. ºÎÆÃÁß¿¡ handler°ªÀ» Àоî zSystem.map¾ÈÀÇ symbolÀÇ ¹øÁö¿Í ºñ±³Çغ»´Ù.

2) grep

file¿¡¼­ ¿øÇÏ´Â ¹®ÀÚ¿­ÀÌ ÀÖ´ÂÁö ã´Â´Ù.

3) defrag ÆÐŰÁö

defragÆÐŰÁö´Â disk»óÀÇ file systemÀ» °ü¸®ÇÏ´Â À¯Æ¿¸®Æ¼ÀÌ´Ù. º»¼­¿¡¼­´Â À̵é Áß¿¡¼­ disk ÀÇ ³»¿ëÀ» dumpÇØ ÁÖ´Â e2dump¸¦ ÁÖ·Î »ç¿ëÇÒ°ÍÀÌ´Ù.