ÇÁ·Î±×·¡¹Ö

 3198, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   p0lly
   mongii´ÔÀÇ Å°·Î°ÅÄڵ带 º¸°í Áú¹®ÀÔ´Ï´Ù (1)

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3133 [º¹»ç]


mongii´ÔÀÇ Å°·Î°ÅÄڵ带 º¸°í Áú¹®ÀÔ´Ï´Ù...

¾Æ·¡ ۷ΰÅ.exeÀÇ WndProc()À» º¸¸é,
DLL TEST.dll¿¡¼­ ¼±¾ðµÈ int WiseGuys(int a, int b)ÀÇ Çü½Ä¿¡ ¸ÂÃß¾î
int (*MyFunc)(int, int); ·Î ÇÔ¼öÆ÷ÀÎÅ͸¦ ¸¸µé°í
MyFunc = (int (*)(int, int))GetProcAddress(hinstDll, "WiseGuys"); ·Î WiseGuysÇÔ¼öÀÇ ÁÖ¼Ò¸¦ MyFuncÇÔ¼öÆ÷ÀÎÅÍ¿Í ¸ÅÄ¡½ÃŰ´Â °ÍÀº ÁüÀÛÇϰڴµ¥¿ä...

(int (*)(int, int))Àº ¾î¶² µ¿ÀÛÀ» ÇÏ´Â °ÇÁö¿ä?
ºÎµð ÀÚ¼¼ÇÑ ¼³¸íÀ» ºÎʵ叮°Ú½À´Ï´Ù! °¨»çÇÕ´Ï´Ù~


----------------------------< DLL TEST.dllÀÇ ÄÚµå >------------------------------
#include <windows.h>
__declspec(dllexport) int WiseGuys(int a, int b)
{
        return a+b;
}



--------------------< ۷ΰÅ.exeÀÇ WndProcÀÇ ÄÚµå >--------------------------------

LRESULT CALLBACK WndProc( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
        static HINSTANCE hinstDll;        // µ¿Àû ¶óÀ̺귯¸®¸¦ °¡¸®Å³ ÇÚµé.
        int (*MyFunc)(int, int);        // DLL¾ÈÀÇ WiseGuys ÇÔ¼ö¸¦ °¡¸®Å³ Æ÷ÀÎÅÍ.
        char str[100];        // ¸Þ½ÃÁö Ãâ·Â¿¡ »ç¿ëÇÒ º¯¼ö.

        switch( iMessage )
        {        
        case WM_CREATE:
                hinstDll = LoadLibrary("DLL TEST.dll");        // DLLÀ» ·ÎµåÇÑ´Ù.
                if(!hinstDll){
                        MessageBox(hWnd, "DLL TEST.dllÀ» ·ÎµåÇÒ ¼ö ¾ø½À´Ï´Ù.", "¿À·ù", MB_OK);
                        ExitProcess(1);
                }

                MyFunc = (int (*)(int, int))GetProcAddress(hinstDll, "WiseGuys");
                // WiseGuys ÇÔ¼ö¸¦ ·ÎµåÇÑ´Ù.

                if(!MyFunc){
                        MessageBox(hWnd, "WiseGuys ÇÔ¼ö¸¦ ·ÎµåÇÒ ¼ö ¾ø½À´Ï´Ù.", "¿À·ù", MB_OK);
                        FreeLibrary(hinstDll);
                        ExitProcess(1);
                }

                wsprintf(str, "3 + 5´Â %d ÀÔ´Ï´Ù.", MyFunc(3, 5));
                MessageBox(hWnd, str, "¾Ë¸²", MB_OK);

                return 0;
        case WM_DESTROY:
                PostQuitMessage( 0 );
                break;
        }
        return DefWindowProc( hWnd, iMessage, wParam, lParam );
}

  Hit : 4668     Date : 2011/08/15 04:52