== Shared library stub ¸¸µé±â == * Shared library¸¦ '''½ÇÇà°¡´ÉÇÑ ÇüÅÂ'''·Îµµ ¸¸µé¾úÀ¸¸é ÁÁ°Ú´Ù´Â »ý°¢ Çغ»Àû ÀÖ½À´Ï±î? ¸Å¿ì Á¦ÇÑÀûÀÎ ºÎºÐÀÌ ÀÖ°í ¾î¼Àºí¸®¸¦ ÀÌÇØÇØ¾ß ÇÏ´Â Á¶°ÇÀÌ ÀÖÁö¸¸ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÀÏ´Ü ÀÚ½ÅÀÌ ¸¸µç Shared library¸¦ Çϳª °ñ¶ó¼­ ¾Æ·¡ÀÇ ¼Ò½º¸¦ ÇÔ²² ¸µÅ© ÇÕ´Ï´Ù. ´Ü, ¸µÅ©ÇÒ¶§ "'''-e L_EngineStub'''" À̶ó´Â ¿É¼ÇÀ» Áֽðí Çغ¸¼¼¿ä. ÀÌÁ¦ ¸µÅ©°¡ µÇ¾ú´Ù¸é ½ÇÇà¼Ó¼ºÀ» ÁÖ½Ã°í ½ÇÇàÇغ¸¼¼¿ä. ÀÌ°ÍÀÌ °¡Àå °£·«ÇÑ Stub ±¸Á¶¸¦ À̽ÄÇÑ°ÍÀÌ µË´Ï´Ù. ÀÀ¿ëÀº ¿©·¯ºÐÀÌ ´Ù¾çÇÏ°Ô Çغ¸½Ã°í ÁÁÀº ÀÀ¿ëÀÌ ÀÖÀ¸¸é ÀÌ°÷¿¡ Àû¾îÁÖ¼¼¿ä. - [minzkn] {{{#!vim asm # Code by JaeHyuk Cho Made in KOREA # http://minzkn.pe.ky .global L_EngineStub .text .org 0x0000 L_EngineStub: /* Shared library °¡ ½ÇÇàµÉ¶§ offset À» °ËÃâÇϱâ À§ÇÑ trick */ call 0f 0: popl %ecx subl $0b, %ecx /* write(1, (void *)pMessage, strlen(pMessage)); */ movl $0x4,%eax movl $1, %ebx addl $0f, %ecx movl $1f - 0f, %edx int $0x80 /* exit(0); */ movl $1,%eax xorl %ebx, %ebx int $0x80 /* while(1); */ jmp . /* Halt */ 0: /* pMessage */ .ascii "My shared stub message\n" .ascii "Code by JaeHyuk Cho Made in KOREA\n" .ascii "\n" 1: # End of source }}}