C/C++ HOOK API£¨ÔÀíÉîÈëÆÊÎöÖ®
9Ô¶¼¿ì½áÊøÁË£¬Ö®Ç°Ò»Ö±Ã¦µ½Ð´×Ô¼ºµÄ¶«Î÷¼ÓÉÏÉϰࡣ»ù±¾Ã»ÓÐʱ¼äÑо¿Ï»ã±àºÍC C++·½ÃæµÄ¸ÐÐËȤµÄ¶«Î÷¡£ÔÙÔõô˵Â9Ô»¹ÊǵÃдһƪÈö£¬ÒÔºóÿÔÂÖÁÉÙһƪ°É¡£¸ø×Ô¼º¶¨ÁË£¬Ï£Íû´ó¼Ò¼à¶½¡£ºÙºÙ£¡
ÕâÆªÎÄÕ¾ÍÀ´Ì¸Ì¸Æ½³£ºÜ³£¼ûµÄHOOK¼¼Êõ£¬ÕâÀïÄØ¡£Ð´µÃ±È½Ï¼òµ¥£¬·½·¨ºÜ¶à¡£Ö»½²ÔÀí£¡Ï£Íû´óÄñÃDZðÍÂÎÒ¿ÚË®¹þ - -¡£ºÃ£¡ÇÐÈëÕýÌâ¡£
Ê×ÏÈÊǸÅÄî°É¡£Ê²Ã´Êǹ³×Ó£¨HOOK£©£¿
¹³×Ó(Hook)£¬ÊÇWindowsÏûÏ¢´¦Àí»úÖÆµÄÒ»¸öƽ̨,Ó¦ÓóÌÐò¿ÉÒÔÔÚÉÏÃæÉèÖÃ×Ó³ÌÒÔ¼àÊÓÖ¸¶¨´°¿ÚµÄijÖÖÏûÏ¢£¬¶øÇÒËù¼àÊӵĴ°¿Ú¿ÉÒÔÊÇÆäËû½ø³ÌËù´´½¨µÄ¡£µ±ÏûÏ¢µ½´ïºó£¬ÔÚÄ¿±ê´°¿Ú´¦Àíº¯Êý֮ǰ´¦ÀíËü¡£¹³×Ó»úÖÆÔÊÐíÓ¦ÓóÌÐò½Ø»ñ´¦ÀíwindowÏûÏ¢»òÌØ¶¨Ê¼þ¡£
¹³×Óʵ¼ÊÉÏÊÇÒ»¸ö´¦ÀíÏûÏ¢µÄ³ÌÐò¶Î£¬Í¨¹ýϵͳµ÷Ó㬰ÑËü¹ÒÈëϵͳ¡£Ã¿µ±Ìض¨µÄÏûÏ¢·¢³ö£¬ÔÚûÓе½´ïÄ¿µÄ´°¿Úǰ£¬¹³×Ó³ÌÐò¾ÍÏȲ¶»ñ¸ÃÏûÏ¢£¬Ò༴¹³×Óº¯ÊýÏȵõ½¿ØÖÆÈ¨¡£Õâʱ¹³×Óº¯Êý¼´¿ÉÒÔ¼Ó¹¤´¦Àí£¨¸Ä±ä£©¸ÃÏûÏ¢£¬Ò²¿ÉÒÔ²»×÷´¦Àí¶ø¼ÌÐø´«µÝ¸ÃÏûÏ¢£¬»¹¿ÉÒÔÇ¿ÖÆ½áÊøÏûÏ¢µÄ´«µÝ¡£
ÕâÉÏÃæÖ»ÊÇÒ»¸ö¸ÅÄ¶ÔËüÓÐËùÁË½â¶øÒÑ¡£ÉÏÃæÖ÷ÒªÓ¦ÓÃÔÚWindowsÏûÏ¢´¦Àí»úÖÆÀïÃæµÄÒ»¸ö½âÊÍ¡£ÕâÀïÎÒÖ»Êǵ¥´¿µÄ̸̸À¹½ØÎÒÃdz£ÓõÄLoadLibraryA¼ÓÔØÕâ¸öº¯Êý¡£ÈÃÎÒÃǵijÌÐò»òÕßÄ¿±ê³ÌÐòÔÚµ÷ÓÃÕâ¸öº¯Êý¼ÓÔØÁ´½Ó¿âµÄʱºò£¬ÏÈÖ´ÐÐÎÒÃÇ×Ô¼ºÐ´µÄº¯Êý£¬È»ºóÔÚ½øÐÐÕý³£¼ÓÔØ¡£Í¨Ë×µÄ˵¾ÍÊÇa----->b. ÎÒÃÇÔÚÖмä¼ÓÉÏÒ»¸öc¡£ a-------->c----->bÈÃËûÏÈÖ´ÐÐcÈ»ºóÔÙÖ´ÐÐb¡£ÕâÀïµÄc¾ÍÊÇÎÒÃÇ×Ô¼ºµÄº¯ÊýÁË¡£
ºÇºÇ£¬¸ÅÄî˵µÃ²î²»¶àÁË£¬¿ªÊ¼Ðж¯Ð´´úÂëÈö£º
#include <iostream>
#include <Windows.h>
using namespace std;
#pragma warning( disable: 4309 )
#pragma warning( disable: 4311 )
typedef HMODULE ( WINAPI *HOOKAPI )( IN LPCSTR );
#define MYHOOKMETHOD ( __fun ) HMODULE WINAPI __fun
#define DECLARE_REGISTER ( __0bj, __lawfunc, __newfunc ) Inline_Hook< HOOKAPI, 1 > __Obj( __lawfunc, __newfunc )
struct __InlineHOOK_Base
{
DWORD _argsBytes;
void* _lawFunc;
void* _newFunc;
char _lawByteCode[16];
char _newByteCode[16];
bool unhook ( void )
{
&nbs
Ïà¹ØÎĵµ£º
Ò»¡¢Ò»¸ö¾¹ý±àÒëµÄC/C++µÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·Ö³ÉÒÔϼ¸¸ö²¿·Ö£º
¡¡¡¡1¡¢Õ»Çø£¨stack£©£ºÓɱàÒëÆ÷×Ô¶¯·ÖÅäºÍÊÍ·Å £¬´æ·Åº¯ÊýµÄ²ÎÊýÖµ¡¢¾Ö²¿±äÁ¿µÄÖµµÈ£¬ÉõÖÁº¯ÊýµÄµ÷Óùý³Ì¶¼ÊÇÓÃÕ»À´Íê³É¡£Æä²Ù×÷·½Ê½ÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÕ»¡£
¡¡¡¡2¡¢¶ÑÇø£¨heap£© £ºÒ»°ãÓɳÌÐòÔ±ÊÖ¶¯ÉêÇëÒÔ¼°ÊÍ·Å£¬ Èô³ÌÐòÔ±²»ÊÍ·Å£¬³ÌÐò½áÊøÊ±¿ÉÄÜÓÉOS»ØÊÕ ......
ÔÚʹÓÃCÓïÑÔ±àд´óÐ͹¤³ÌʱҪÓõ½ÃæÏò¶ÔÏóÓïÑÔÖеÄÒ»Ð©ÌØÐÔ£¨ÄÚºËÖÐijЩ²¿·Ö¾ÍÓ¦ÓÃÁËÕâÐ©ÌØÐÔ£©¡£CÓïÑÔÊÇ»ùÓÚÎļþµÄÀ࣬static¹Ø¼ü×ÖÉùÃ÷˽ÓÐÊý¾Ý³ÉÔ±£¬¹«ÓÐÊý¾Ý³ÉÔ±±ØÐ붨Ò嵽ͷÎļþ£¬»òÓÉÆäËüÎļþʹÓÃextern¹Ø¼ü×ÖÉùÃ÷À´Ê¹Óᣵ«ºóÕßÒýÓùØÏµ²»ÇåÎú¡£Í·Îļþ¾Í³ÉÁ˹«ÓÐÊý¾Ý³ÉÔ±ÉùÃ÷µÄµØ·½¡£
Í·ÎļþÖÐÓ¦¸Ã°üº¬ÒÔϼ°·½ÃæÄÚ ......
Ö÷Ò³£º http://www.christian-heffner.de/
ÏÂÔØÁ´½Ó£º http://www.christian-heffner.de/index.php?page=download¡´=en
¼ò½é£º
»ùÓÚLCCµÄÒ»¿îC±àÒëÆ÷£¬Óбê×¼µÄIDE½çÃæ£¬ÀàËÆVCµÄ½çÃæ£¬µ±È»ºÍDEV-C++»¹ÓÐMingW32 studio½çÃæÒ²ºÜÏñ£¬¿ÉÒÔÓÃÓÚ´´½¨Ð¡Ò»µãµÄ»ùÓÚCµÄ¹¤³Ì¡£
IDE´úÂë±à¼½ ......
UTF-8×î´óµÄÒ»¸öÌØµã£¬¾ÍÊÇËüÊÇÒ»Öֱ䳤µÄ±àÂ뷽ʽ¡£Ëü¿ÉÒÔʹÓÃ1~4¸ö×Ö½Ú±íʾһ¸ö·ûºÅ£¬¸ù¾Ý²»Í¬µÄ·ûºÅ¶ø±ä»¯×Ö½Ú³¤¶È¡£
UTF-8µÄ±àÂë¹æÔòºÜ¼òµ¥£¬Ö»ÓжþÌõ£º
1£©¶ÔÓÚµ¥×ֽڵķûºÅ£¬×ֽڵĵÚһλÉèΪ0£¬ºóÃæ7λΪÕâ¸ö·ûºÅµÄunicodeÂë¡£Òò´Ë¶ÔÓÚÓ¢Óï×Öĸ£¬UTF-8±àÂëºÍASCIIÂëÊÇÏàͬµÄ¡£
2£©¶ÔÓÚn×ֽڵķûºÅ£¨n>1£©£¬µÚÒ ......