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¸¦ ÁÖ·Î »ç¿ëÇÒ°ÍÀÌ´Ù.