http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=7899 [º¹»ç]
GetProcAddress ÀÇ Á¤ÀÇ
FARPROC WINAPI GetProcAddress(
_In_ HMODULE hModule,
_In_ LPCSTR lpProcName
);
FARPROC
Á¤ÀÇ: typedef int (FAR WINAPI *FARPROC)();
Á¤ÀÇ ºÎºÐÀº ÇÔ¼ö Æ÷ÀÎÅ͸¦ °øºÎ Çß´Ù¸é ¾Ë ¼ö ÀÖÀ» ¸¸ÇÑ ³»¿ëÀ̶ó°í »ý°¢µÈ´Ù.
int ÇüÀ» return ÇÏ°í ÇÔ¼ö È£Ãâ ±Ô¾àÀº __stdcall ÀÇ ÇüÅÂÀÎ ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ FARROC À̶ó´Â ÇÔ¼ö Æ÷ÀÎÅÍ Å¸ÀÔÀ» ¼±¾ð ÇÑ °ÍÀÌ´Ù.
GetProcAddress ¶ó´Â API ÇÔ¼ö´Â hModule ÀÌ °¡¸®Å°´Â ¸ðµâÀÇ Base Address¿¡ ÇØ´çÇÏ´Â lpProcName ÀÌ °¡¸®Å°´Â ÇÔ¼öÀÇ Æ÷ÀÎÅ͸¦ °¡Áö°í ¿Â´Ù. ÀÌ ¶§ ÁÖ¼Ò¸¦ ¾Ë¾Æ¿À´Â ÇÔ¼öÀÇ ÀÎÀÚ ÇüÅ°¡ ÀÏÁ¤Çϱ⠾ʱ⠶§¹®¿¡ FARPROCÀ» »ç¿ëÇÏ¿© ÀÎÀÚÀÇ À¯¿¬¼ºÀ» µÎ´Â °ÍÀÌ´Ù. FAR¿¡ ´ëÇÑ ³»¿ëÀº µÚ¿¡¼ ¼³¸í Çϵµ·Ï ÇÏ°Ú´Ù.
**¸ðµâÀ̶õ**
ÇÁ·Î±×·¥ÀÇ ÀÏºÎ·Î½á ½±°Ô Ç¥ÇöÇϸé ÇÔ¼öµéÀÇ ÁýÇÕÀ» ÀǹÌÇÑ´Ù. ¿ì¸®°¡ ÈçÈ÷ º¼ ¼ö ÀÖ´Â ÇüÅ´ DLLÀ» º¼ ¼ö ÀÖ´Ù. ÇϳªÀÇ DLLÀº °ü·ÃµÈ ÇÔ¼öµéÀÇ ÁýÇÕÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ°í, ÇöÀçÀÇ ¸¹Àº ÇÁ·Î±×·¥Àº ÇÊ¿äÇÒ ¶§ ÀÌ·¯ÇÑ DLL ¸ðµâÀ» ¿©·¯ °³ ¸Þ¸ð¸®·Î ·ÎµùÇÏ¿© µ¿ÀÛÇÏ°Ô µÈ´Ù.
http://www.terms.co.kr/module.htm
**HMODULE °ú HINSTANCE**
ÀÌ µÑÀº 16bit ¿î¿µÃ¼Á¦¿¡¼ »ç¿ëµÇ´Ù°¡ ³²¾ÆÀÖ´Â °ÍÀ¸·Î 32bit ÀÎ ÇöÀç´Â ¸ðµâÀÇ Base Address¶ó´Â Àǹ̷ΠÅëÀÏµÇ¾î »ç¿ëµÈ´Ù.
16bit¿¡¼ÀÇ °³³ä
16bit ü°è ¿¡¼´Â ¸ðµç ÇÁ·Î¼¼½º°¡ ´ÜÀÏ ¸Þ¸ð¸®°ø°£À» °øÀ¯ÇßÀ¸¹Ç·Î µ¿ÀÏÇÑ ÇÁ·Î¼¼½º°¡ ¹Ýº¹Çؼ ¾²ÀÏ °æ¿ì(notepad.exe âÀ» ¿©·¯ °³ ¶ç¿ì´Â µî) »ç¿ëµÇ´Â ÄÚµå ÀÚü´Â µ¿ÀÏ ÇϹǷΠȿÀ²¼ºÀ» À§ÇØ Æ¯º°ÇÑ Á¶Ä¡°¡ ÇÊ¿äÇß´Ù.
À̶§ »ç¿ëµÈ °ÍÀÌ µÎ ÇüÅÂÀÇ º¯¼öÀÌ´Ù.
HMODULE Àº ÇÁ·Î¼¼½ºµéÀÌ °øÀ¯ÇÏ´Â Äڵ念¿ªÀ» °¡¸®Å°´Â ¿ëµµ
HINSTANCE ´Â ÇÁ·Î¼¼½ºµé °¢°¢¿¡ ´ëÇÑ µ¥ÀÌÅÍ ¿µ¿ªÀ» °¡¸®Å°´Â ¿ëµµ·Î »ç¿ëµÇ¾ú´Ù.
http://blog.naver.com/PostView.nhn?blogId=chioo79&logNo=120096218243
WINAPI¶õ?
Á¤ÀÇ: #define WINAPI __stdcall
ÇÔ¼öÈ£Ãâ ±Ô¾à Áß Çϳª·Î callee ¿¡¼ ½ºÅÃÀ» Á¤¸®ÇÏ´Â ÇüŸ¦ º¸À̸ç Win32 API¿¡¼´Â ÀÌ ¹æ½ÄÀ» »ç¿ëÇؼ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº [P06] ¸Þ¸ð¸®ÀÇ ÀÌÇØ -> Calling Convention ¿¡¼ È®ÀÎÇϱ⠹ٶõ´Ù.
http://msdn.microsoft.com/en-us
FAR¶õ?
ÇöÀç ½ÇÇàÁßÀÎ °¡»ó¸Þ¸ð¸® °ø°£(ÆäÀÌÁö) ¿¡¼ ¹Ù·Î Á¢±ÙÇÏÁö ¸ø ÇÏ°í ´Ù¸¥ °ø°£ (ÁÖ·Î dllÀÌ ·ÎµùµÈ °ø°£ÀÌ µÇ°Ú´Ù.) ¿¡ ÇØ´ç ÇÔ¼ö¿¡ ´ëÇÑ Äڵ尡 Á¸Àç ÇÒ °æ¿ì »ç¿ëÇÑ´Ù. À§¿¡¼ ¿¹·Îµç GetProcAddress ÇÔ¼ö·Î ´Ù½Ã ¼³¸íÀ» Çغ¸ÀÚ.
º¸Åë ÇÔ¼ö¿¡ ´ëÇÑ ÂüÁ¶¸¦ ÇÏ·Á¸é ÇØ´ç DLL À» ¸Þ¸ð¸®·Î ·Îµù Çϰųª ¸ÊÇÎ ÈÄ °¡Áö°í ¿Â´Ù. LoadLibrary¸¦ »ç¿ëÇÏ¿© DLLÀ» ·Îµù ÇÏ°Ô µÇ¸é óÀ½ ·Îµù ¶§´Â DLLÀ» À§ÇÑ »õ·Î¿î °ø°£ÀÌ ¸Þ¸ð¸®¿¡ ¸¶·ÃµÇ¾î DLLÀÌ ·ÎµùµÇ°í ÇØ´ç ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®(°¡»ó ¸Þ¸ð¸®ÀÇ ÆäÀÌÁö)·Î ¸ÊÇÎ µÈ´Ù. ±× ÈÄ µÎ ¹ø° ÂüÁ¶ºÎÅÍ´Â ÂüÁ¶ Ä«¿îÆ®¸¸ 1 Áõ°¡ÇÏ°í È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö¿¡´Â ÀÌ¹Ì ¿Ã¶ó¿ÍÀÖ´Â DLL°ø°£ÀÌ ¸ÊÇÎ µÇµµ·Ï ÇÏ´Â ¹æ½ÄÀÌ Àû¿ëµÈ´Ù. Kernel32.dll À̳ª User32.dll ó·³ ´ëºÎºÐÀÇ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â DLLÀº ÀÌ¹Ì ¸Þ¸ð¸® °ø°£ ¾îµò°¡¿¡ ·Îµù µÇ¾úÀ» °¡´É¼ºÀÌ Å©±â ¶§¹®¿¡ ÇöÀç ÇÁ·Î¼¼½ºÀÇ °¡»ó¸Þ¸ð¸® °ø°£¿¡¼ ¹Ù·Î ÂüÁ¶¸¦ ÇÒ ¼ö°¡ ¾ø´Â °ÍÀÌ´Ù. ±×·¯ÇÑ °æ¿ì Àû¿ëÇϱâ À§ÇØ FAR À̶ó´Â Å°¿öµå°¡ »ç¿ëµÈ´Ù.
http://stackoverflow.com/questions/2774171/what-is-far-pascal
|
Hit : 12102 Date : 2013/08/13 05:54
|