|
IRP¸¦ ¼³Á¤ÇϱâÀ§ÇØ, ÇÊÅÍÈÅ µå¶óÀ̹ö´Â IoBuildDeviceIoControlRequestÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ È£Ãâ¿¡¼, ÇÊÅÍ ÈÅ µå¶óÀ̹ö´Â IOCTL_PF_SET_EXTENSION_POINTER°ªÀ» ÁöÁ¤ÇÏ´Â ÆÄ¶ó¹ÌÅ͵éÀ» ³Ñ±ä´Ù.; IPÇÊÅÍ µå¶óÀ̹ö¿¡´ëÇÑ ÀåÄ¡ ¿ÀºêÁ§Æ®ÀÇ Æ÷ÀÎÅÍ; ±×¸®°í PF_SET_EXTENSION_HOOK_INFO±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ. ÇÊÅÍ ÈÅÀ» ¼³Á¤ÇϱâÀ§ÇØ, À̱¸Á¶Ã¼´Â ÇÊÅÍ ÈÅ ÄݹéÇÔ¼öÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ´Â Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù. ÇÊÅÍÈÅÀ» Ŭ¸®¾îÇϱâÀ§ÇØ À̱¸Á¶Ã¼´Â NULL°ªÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ È£ÃâÀº Á¦°øµÈ ÆÄ¶ó¹ÌÅͷκÎÅÍ I/O½ºÅà ·ÎÄÉÀÌ¼Ç ¼³Á¤À» À§ÇÑ IRPÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
IPÇÊÅÍ µå¶óÀ̹ö¿¡´ëÇÑ IRP¸¦ Á¦°øÇϱâÀ§ÇØ, ÇÊÅÍÈÅ µå¶óÀ̹ö´Â IoCallDriverÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ È£Ãâ¿¡¼, ÇÊÅÍ ÈÅ µå¶óÀ̹ö´Â IPÇÊÅÍ µå¶óÀ̹ö¿¡´ëÇÑ ÀåÄ¡ ¿ÀºêÁ§Æ®ÀÇ Æ÷ÀÎÅÍ¿Í ÀÌÀü¿¡ ¸¸µé¾îÁø IRPÀÇ Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÏ´Â ÆÄ¶ó¹ÌÅ͸¦ ¸®ÅÏÇÑ´Ù.
ÇÊÅÍ ÈÅ µå¶óÀ̹ö°¡ ÇÊÅÍÈÅÀ» µî·ÏÇϴ°Ϳ¡´ëÇÑ °°Àº entity·ÎºÎÅÍ ÇÊÅÍÈÅÀ» Ŭ¸®¾îÇØ¾ßµÇ±â¶§¹®¿¡, ÇÊÅÍ ÈÅ µå¶óÀ̹ö´Â IPÇÊÅÍ µå¶óÀ̹ö¿¡´ëÇÑ ÆÄÀϰú ÀåÄ¡ ¿ÀºêÁ§Æ®¿¡´ëÇÑ Æ÷ÀÎÅ͸¦ ÀúÀåÇØ¾ßÇÑ´Ù. Áï, ÇÊÅÍ ÈÅ µå¶óÀ̹ö´Â IPÇÊÅÍ µå¶óÀ̹öÀÇ ÆÄÀϰú ÀåÄ¡ ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ±Û·Î¹ú º¯¼ö¿¡ ÀúÀåÇØ¾ßÇÑ´Ù. ÇÊÅÍ ÈÅ µå¶óÀ̹ö°¡ IPÇÊÅÍ µå¶óÀ̹ö·ÎºÎÅÍ ÇÊÅÍ ÈÅÀ» Á¦°ÅÇÑÈľß, ÇÊÅÍ ÈÅ µå¶óÀ̹ö°¡ IPÇÊÅÍ µå¶óÀ̹öÀÇ ÆÄÀϰú ÀåÄ¡ ¿ÀºêÁ§Æ®ÀÇ ·¹ÆÛ·±Æ® Ä«¿îÆ®¸¦ °¨¼ÒÇÏ´Â ObDereferenceObjectÇÔ¼ö¸¦ È£ÃâÇÒ¼ö ÀÖ´Ù.
|