ºÇ½ª¹¹¿·¡§ID:pNCjYEfAGw 2011ǯ07·î20Æü(¿å) 09:06:22ÍúÎò
- API¡§Í׵ᤵ¤ì¤¿¥µ¡¼¥Ó¥¹¤òÆÀ¤ë¤¿¤á¤Î´Ø¿ô¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¡§¥½¥Õ¥È¥¦¥§¥¢³ä¤ê¹þ¤ß¤òÍøÍѤ·¤Æ¹Ô¤ï¤ì¤ë¥«¡¼¥Í¥ë¤ËÂФ¹¤ëÌÀ¼¨Åª¤ÊÍ×µá
- libc¤ÎAPI¤Î¼ïÎà
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë1ÂÐ1¤ÇÂбþ¤¹¤ë¥é¥Ã¥Ñ¡¼¥ë¡¼¥Á¥ó¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë´Ø·¸¤Ê¤¤»»½Ñ´Ø¿ô
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤È°Û¤Ê¤ë¥µ¡¼¥Ó¥¹¤òÄó¶¡(malloc()¤¬brk()¤òÆâÉôŪ¤Ë¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë)
- POSIX¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ç¤Ï¤Ê¤¯API¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
- ¥¨¥é¡¼È¯À¸»þ¤Ï-1¤òÊÖ¤·¡¢errono¤ÇÆâÍƤò¼èÆÀ¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢¥¢¥»¥ó¥Ö¥ê¸À¸ì¤Çµ½Ò¤µ¤ì¤¿¥·¥¹¥Æ¥à¥³¡¼¥ë¥Ï¥ó¥É¥é¤ò¸Æ¤Ó½Ð¤¹¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢¥·¥¹¥Æ¥à¥³¡¼¥ëÈÖ¹æ(eax)¤Ç¼±Ê̤µ¤ì¤ë¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¸Æ¤Ó½Ð¤·¡£
- ¥«¡¼¥Í¥ë¥â¡¼¥É¥¹¥¿¥Ã¥¯¾å¤Ë¤Û¤Ü¤¹¤Ù¤Æ¤Î¥ì¥¸¥¹¥¿¤ÎÆâÍƤòÂàÈò¤¹¤ë¡£(¥¢¥»¥ó¥Ö¥ê¸À¸ì¤Çµ½Ò)
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¥µ¥Ö¥ë¡¼¥Á¥ó(system call service routine)¤ò¸Æ¤Ó½Ð¤¹¡£
- ¥ì¥¸¥¹¥¿¤ò²óÉü¤·¡¢¥æ¡¼¥¶¥â¡¼¥É¤ËÉüµ¢¤¹¤ë¡£(¥¢¥»¥ó¥Ö¥ê¸À¸ì¤Çµ½Ò)
- ¥·¥¹¥Æ¥à¥³¡¼¥ëÈÖ¹æ¤ò¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó¤ËÂбþÉÕ¤±¤ë¤¿¤á¤Ë¥·¥¹¥Æ¥à¥³¡¼¥ëʬ´ô¥Æ¡¼¥Ö¥ë(dispatch table)¤ò»ÈÍѤ¹¤ë¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¸Æ¤Ó½Ð¤·Ë¡
- int $0x80¡§¸Å¤¤¥«¡¼¥Í¥ë¤Ç¤ÎÍ£°ì¤Î¸Æ¤Ó½Ð¤·Ë¡¡£
- sysenter¡§Pentium ¶¥×¥í¥»¥Ã¥µ°Ê¹ß¤Ç²Äǽ¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤«¤é¤ÎÉüµ¢Ë¡
- iret
- sysexit¡§Pentium ¶¥×¥í¥»¥Ã¥µ°Ê¹ß¤Ç²Äǽ¡£
³ä¤ê¹þ¤ß¤Ë¤è¤ê¡¢¥«¡¼¥Í¥ë¥³¡¼¥É¥»¥°¥á¥ó¥È¤Ë°Ü¹Ô¤·¡¢¥«¡¼¥Í¥ë¥â¡¼¥É¤È¤Ê¤ë¡£
- ¥·¥¹¥Æ¥à¥³¡¼¥ëÈÖ¹æ¤ÈÁ´¤Æ¤Î¥ì¥¸¥¹¥¿¤ÎÆâÍƤò¥¹¥¿¥Ã¥¯¤ËÊݸ¤¹¤ë¡£(CPU¤Ë¤è¤êÊݸ¤µ¤ì¤ë¥ì¥¸¥¹¥¿°Ê³°¤âÊݸ)
- ¥«¥ì¥ó¥È¥×¥í¥»¥¹¤Îthread_info¹½Â¤ÂΤΥ¢¥É¥ì¥¹¤òebx¤Ë³ÊǼ¡£
- ¥Ç¥Ð¥Ã¥¬¤Ë¥È¥ì¡¼¥¹¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó¼Â¹ÔľÁ°¡¦Ä¾¸å¤Ë¥Ç¥Ð¥Ã¥¬¤¬¾ðÊó¤ò¼ý½¸²Äǽ¤È¤¹¤ë¡£
- »ØÄꤵ¤ì¤¿¥·¥¹¥Æ¥à¥³¡¼¥ëÈÖ¹æ¤Î¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¡£
- eax¤ËÌá¤êÃͤò¼èÆÀ¤·¤Æ¥¹¥¿¥Ã¥¯¤Ë³ÊǼ¡£
- thread_info¹½Â¤ÂΤÎflags¥á¥ó¥Ð¤Î¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥ì¥¸¥¹¥¿¤ò²óÉü¤·¤Æiret¤Ç¥æ¡¼¥¶¥â¡¼¥É¤ËÉüµ¢¤¹¤ë¡£
- ¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤¿¤é¡¢ºÆ¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¡¦²¾ÁÛ8086¥â¡¼¥É¡¦ÊÝαÃæ¤Î¥·¥°¥Ê¥ë¡¦¥·¥ó¥°¥ë¥¹¥Æ¥Ã¥×¼Â¹Ô¤ÎÍ×µá¤Ê¤É¤ò½èÍý¤¹¤ë¡£
- sysenter¤Ç»ÈÍѤµ¤ì¤ëÆÃÊ̤ʥ쥸¥¹¥¿¤¬¤¢¤ê¡¢enable_sep_cpu()´Ø¿ô¤Ç½é´ü²½¤¹¤ë¡£
- SYSENTER_CS_MSR¡§¥«¡¼¥Í¥ë¥³¡¼¥É¥»¥°¥á¥ó¥ÈÍÑ¥»¥°¥á¥ó¥È¥ì¥¸¥¹¥¿
- SYSENTER_EIP_MSR¡§¥«¡¼¥Í¥ë¤Î¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¤Î¥ê¥Ë¥¢¥¢¥É¥ì¥¹
- SYSENTER_ESP_MSR¡§¥«¡¼¥Í¥ë¤Î¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥¿
- SYSENTER_CS_MSR¤ÎÃæ¿È¤òcs¥ì¥¸¥¹¥¿¤ËÀßÄê
- SYSENTER_EIP_MSR¤ÎÃæ¿È¤òeip¥ì¥¸¥¹¥¿¤ËÀßÄê
- SYSENTER_ESP_MSR¤ÎÃæ¿È¤òesp¥ì¥¸¥¹¥¿¤ËÀßÄê
- SYSENTER_CS_MSR¤ÎÃæ¿È¤Ë8¤ò²Ã¤¨¤¿¤â¤Î¤òss¥ì¥¸¥¹¥¿¤ËÀßÄê(GDT¥ì¥¤¥¢¥¦¥È¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë)
- libcɸ½à¥é¥¤¥Ö¥é¥ê¤Î¥é¥Ã¥Ñ¡¼´Ø¿ô¤ÏCPU¤È¥«¡¼¥Í¥ë¤ÎξÊý¤¬sysenter¤ËÂбþ¤·¤Æ¤¤¤ë¾ì¹ç¤ËsysenterÌ¿Îá¤ò»ÈÍѤ¹¤ë¡£
- sysenter_setup()´Ø¿ô¤Çvsyscall¥Ú¡¼¥¸¤È¸Æ¤Ð¤ì¤ë¥Ú¡¼¥¸¥Õ¥ì¡¼¥à¤òºîÀ®¡£
- ¥«¡¼¥Í¥ë¥â¡¼¥É¡¦¥æ¡¼¥¶¥â¡¼¥É¤ÎξÊý¤òƱ»þ¤Ë°·¤ï¤Ê¤¤¤¿¤á¤ÎÊý¼°
- ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ø¤Î°ú¿ô¤Ï¥¹¥¿¥Ã¥¯¤ËÀѤó¤Ç¥é¥Ã¥Ñ¡¼¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¡£
- ¥«¡¼¥Í¥ë¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¡¢°ú¿ô¤òCPU¥ì¥¸¥¹¥¿¤Ë½ñ¤¹þ¤à¡£
- ¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó¤Î¸Æ¤Ó½Ð¤·Á°¤Ë¡¢°ú¿ô¤ò¥«¡¼¥Í¥ë¥â¡¼¥É¥¹¥¿¥Ã¥¯¤Ë½ñ¤¹þ¤à¡£
- ¾åµÊý¼°¤ÎÀ©¸Â
- ³Æ°ú¿ô¤ÎŤµ¤¬¥ì¥¸¥¹¥¿Ä¹¤òĶ¤¨¤Ê¤¤¤³¤È¡£(x86¤Ç¤Ï32bit)
- °ú¿ô¤Î¿ô¤Ï6¤Ä¤Þ¤Ç¡£
- 6¤Ä°Ê¾å¤Î°ú¿ô¤Ï¥×¥í¥»¥¹¥¢¥É¥ì¥¹¶õ´Ö¤Î¥¢¥É¥ì¥¹¤ò¥ì¥¸¥¹¥¿¤ÇÅϤ¹¡£
- ¥«¡¼¥Í¥ë¤Ï°ú¿ô¤Î³Îǧ¤ò¹Ô¤Ã¤Æ¤¤¤ë¡£
- ¥¢¥É¥ì¥¹¤¬ÅϤµ¤ì¤¿¾ì¹ç¤Î¶¦Ä̤γÎǧ
- °ÊÁ°¤ÎÃÙ¤¤³Îǧˡ¡§»ØÄꤷ¤¿¥ê¥Ë¥¢¥¢¥É¥ì¥¹¤¬¥×¥í¥»¥¹¥¢¥É¥ì¥¹¶õ´Ö¤Ë°¤¹¤ë¤³¤È¡£Å¬Àڤʥ¢¥¯¥»¥¹¸¢¤¬¤¢¤ë¤³¤È¡£
- ¸½ºß¤ÎÁᤤ³Îǧˡ¡§»ØÄꤷ¤¿¥ê¥Ë¥¢¥¢¥É¥ì¥¹¤¬¥«¡¼¥Í¥ë¤¬Í½Ì󤷤Ƥ¤¤ë¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¤¤³¤È¡£(access_ok()¥Þ¥¯¥í)
- Áᤤ³Îǧˡ¤Ç¤Ï¸å¤Ç¥Ú¡¼¥¸¥Õ¥©¥ë¥È¤È¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¤¬¡¢¤³¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤ï¤Ê¤¤¤È¥«¡¼¥Í¥ë¤Î¶õ´Ö¤¬Æɤ߹þ¤á¤Æ¤·¤Þ¤¤¥Õ¥©¥ë¥È¤âȯÀ¸¤·¤Ê¤¤¡£
- ¥Ú¡¼¥¸¥Õ¥©¥ë¥ÈÎã³°¤¬È¯À¸¤¹¤ë¸¶°ø
- ¥¢¥¯¥»¥¹¤·¤¿¥¢¥É¥ì¥¹¤ËÂбþ¤¹¤ë¥Ú¡¼¥¸¥Õ¥ì¡¼¥à¤¬Â¸ºß¤·¤Ê¤¤¡£
- ¥¢¥¯¥»¥¹¤·¤¿¥¢¥É¥ì¥¹¤ËÂбþ¤¹¤ë¥Ú¡¼¥¸¥Æ¡¼¥Ö¥ë¥¨¥ó¥È¥ê¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
- ¥«¡¼¥Í¥ë´Ø¿ô¤Î¥Ð¥°¤ä¥Ï¡¼¥É¥¦¥§¥¢¤Î°ì»þŪ¤Ê¥¨¥é¡¼¤Ë¤è¤ëÎã³°¡£
- ¥¢¥¯¥»¥¹¤·¤¿¥¢¥É¥ì¥¹¤¬¥×¥í¥»¥¹¥¢¥É¥ì¥¹¶õ´Ö°Ê³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
- ¥æ¡¼¥¶¥¢¥É¥ì¥¹¶õ´Ö¤Ë¥¢¥¯¥»¥¹¤¹¤ë²Õ½ê¤òÎã³°¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤·¤Æ¡¢¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿ºÑ¤ß¤Î¥¢¥É¥ì¥¹¤Ç¤ÎÎã³°¤Ï°ú¿ôÉÔÀµ¤ÈȽÄꤹ¤ë¡£
- fixup¥³¡¼¥É¤È¤¤¤¦¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó¤«¤é¥æ¡¼¥¶¥â¡¼¥É¥×¥í¥»¥¹¤Ë¥¨¥é¡¼ÈÖ¹æ¤òÊÖ¤¹¤¿¤á¤Î½èÍý¤ò̵Íý¤ä¤êÁÞÆþ¤¹¤ë¤¿¤á¤Î¤â¤Î¡£
- fixup¥³¡¼¥É¤Ï.fixup¤È¤¤¤¦ÆÃÊ̤ʥ»¥¯¥·¥ç¥ó¤ËÇÛÃÖ¡£
- gcc¤Î.section¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ò»ÈÍѤ·¤Æ¡¢Îã³°¥Æ¡¼¥Ö¥ë¤¬¼Â¸½¤µ¤ì¤Æ¤¤¤ë¡£
- ¥«¥Æ¥´¥ê¡§
- ³ØÌ䡦Íý·Ï
- Áí¹ç
ºÇ¿·¥³¥á¥ó¥È