VC++»·¾³Ï¶¯Ì¬Á´½Ó¿âµÄ¿ª·¢¼°Ó¦ÓÃ
LoadLibraryº¯ÊýÀ´¼ÓÔØÄ¾ÂíDLL£¬´Ó¶øÊµÏÖľÂí¶ÔϵͳµÄÇÖº¦¡£
ÕâÀïÉæ¼°µ½Ò»¸ö·Ç³£ÖØÒªµÄWindows API¨D¨DCreateRemoteThread¡£ÓëÖ®Ïà±È£¬ÎÒÃÇËùϰ¹ßʹÓõÄCreateThread APIº¯ÊýÖ»ÄÜÔÚ½ø³Ì×ÔÉíÄÚ²¿²úÉúÒ»¸öеÄỊ̈߳¬¶øÇÒ±»´´½¨µÄÐÂÏß³ÌÓëÖ÷Ï̹߳²ÏíµØÖ·¿Õ¼äºÍÆäËû×ÊÔ´¡£¶øCreateRemoteThreadÔò²»Í¬£¬Ëü¿ÉÒÔÔÚÁíÍâµÄ½ø³ÌÖвúÉúÏß³ÌCreateRemoteThreadÓÐÈçÏÂÌØµã£º
£¨1£©CreateRemoteThread½ÏCreateThread¶àÒ»¸ö²ÎÊýhProcess£¬¸Ã²ÎÊýÓÃÓÚÖ¸¶¨Òª´´½¨Ï̵߳ÄÔ¶³Ì½ø³Ì£¬Æäº¯ÊýÔÐÍΪ£º
HANDLE CreateRemoteThread( HANDLE hProcess, //Ô¶³Ì½ø³Ì¾ä±ú LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );
£¨2£©Ï̺߳¯ÊýµÄ´úÂë²»ÄÜλÓÚÎÒÃÇÓÃÀ´×¢ÈëDLLľÂíµÄ½ø³ÌËùÔڵĵØÖ·¿Õ¼äÖС£Ò²¾ÍÊÇ˵£¬ÎÒÃDz»ÄÜÏ뵱ȻµØ×Ô¼ºÐ´Ò»¸öº¯Êý£¬²¢°ÑÕâ¸öº¯Êý×÷ΪԶ³ÌÏ̵߳ÄÈë¿Úº¯Êý£» £¨3£©²»Äܰѱ¾½ø³ÌµÄÖ¸Õë×÷ΪCreateRemoteThreadµÄ²ÎÊý£¬ÒòΪ±¾½ø³ÌµÄÄÚ´æ¿Õ¼äÓëÔ¶³Ì½ø³ÌµÄ²»Ò»Ñù¡£
ͨ¹ýÒÔÉÏÃèÊö£¬¿É֪ľÂíDLLµÄΣº¦ÐÔºÍÌØµã£¬Ò²Í¬Ê±Æô·¢ÎÒÃdzÌÐòÔ±Ó¦µ±ÕýÈ·µØÊ¹ÓÃDLLµÄͬʱ£¬²»ÄܺöÊÓÈí¼þµÄ°²È«ÐÔ¡£
ÖÁ´Ë£¬±¾ÎĽ²ÊöÍêÁ˶¯Ì¬Á´½Ó¿âµÄ±³¾°ÖªÊ¶¡¢ÈýÖÖVC++Ö§³ÖµÄDLLµÄ´´½¨·½·¨Óëµ÷Ó÷½Ê½£¬ÒÔ¼°¶¯Ì¬Á´½Ó¿âµÄµäÐÍÓ¦Óá£
37
VC++»·¾³Ï¶¯Ì¬Á´½Ó¿âµÄ¿ª·¢¼°Ó¦ÓÃ
Áù¡¢²Î¿¼ÎÄÏ×
[1] ÖÜ½ðÆ¼£¬Ðì±ûÁ¢. Windowsϵͳ±à³Ì [M]. ±±¾©£ºÈËÃñÓʵç³ö°æÉ磬2002
[2] ºî¿¡½Ü£®ÉîÈëdz³öMFC£¨µÚ¶þ°æ£©[M]£®Î人£º»ªÖпƼ¼´óѧ³ö°æÉ磬2001
[3] ÁõÈð£¬ÎâÔ¾½ø£¬Íõ×ÚÔ½. Visual C++ÏîÄ¿¿ª·¢ÊµÓð¸Àý. ¿ÆÑ§³ö°æÉ磬2006
[4] ÖìÇçæÃ£¬»Æº£Ó¥£¬³ÂÁ«¾ý. Visual C++³ÌÐòÉè¼Æ. Ç廪´óѧ³ö°æÉ磬2004
Æß¡¢ÖÂл
±¾ÎÄÔÚÖ¸µ¼½ÌʦµÄÄÍÐÄÖ¸µ¼ÏÂÖÕÓÚÍê¸å£¬¸Ð¼¤Ö®Ç飬ÒçÓÚÑÔ±í¡£ÔÚÂÛÎÄд×÷¹ý³ÌÖУ¬µÃµ½ÁËÀÏʦºÍͬѧµÄÖ¸µ¼ºÍ°ïÖú£¬ÀÏʦÑϽ÷µÄÖÎѧ̬¶È¡¢Ô¨²©µÄרҵ֪ʶ¡¢³ç¸ßµÄְҵƷµÂ¡¢ÎÞ˽µÄ·îÏ×¾«ÉñÁîÎҺܸж¯£¬ÎÒ´ÓÀÏʦÉíÉÏѧµ½ÁË×öѧÎʵÄ̬¶È¡¢·½·¨Óë֪ʶ£¬µ«¸üÖØÒªµÄÊÇѧµ½ÁË×öÈ˵ĵÀÀíÓë×öÈκÎÊÂÇé¶¼Ó¦ÓеÄÈÏÕæ¡¢ÑϽ÷µÄ̬¶È¡£Õ⽫ʹÎÒÊÜÓÃÖÕÉí£¡ÔÚÕâÀïÎÒÒª¶ÔÖ¸µ¼½Ìʦ±í´ïÖÔÐĵľ´ÒâÓëлÒâ¡£
38