青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

meet-dream

a simple template hook class for function and member functions

Some times,we need too hook some function to do something that's not so easy to do with normally add somecode.A solution is to hook focused functions and interface.Here is a template hook class maybe help your work easier,which complie with vs2005.It midify the jmp table to replace the function,maybe not?properly? for other compliers.

class HookPfn
{
?struct make_writeable
?{
??void* p;
??MEMORY_BASIC_INFORMATION mbi_thunk;
??make_writeable(void* _p):p(_p)
??{
???VirtualQuery(p, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));
???VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, PAGE_READWRITE, &mbi_thunk.Protect);
??
??}
??~make_writeable()
??{
???VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, mbi_thunk.Protect,&mbi_thunk.Protect);
??}
?};
public:
?template<class F>
?void restore(F pfn,unsigned long handle)
?{
??
??void* p;
??__asm mov eax,[pfn]
??__asm mov dword ptr[p],eax
??make_writeable write(p);
??__asm push ecx
??__asm mov eax,pfn
??__asm inc eax
??__asm mov ecx,handle
??__asm mov dword ptr[eax],ecx
??__asm pop ecx
?}
?template<class F1,class F2>
?unsigned long redirect(F1 pfn1,F2 pfn2)
?{
???//should use restrict object prevent?F1 and F2 's arguments and type not same
??void* p;
??__asm mov eax,[pfn1]
??__asm mov dword ptr[p],eax
??make_writeable write(p);

??unsigned long bas1,bas2,of1,of2,of;
??__asm push ecx
??__asm mov eax,pfn1
??__asm mov bas1,eax
??__asm inc eax
??__asm mov ecx,dword ptr[eax]
??__asm mov of1,ecx

??__asm mov eax,pfn2
??__asm mov bas2,eax
??__asm inc eax
??__asm mov ecx,dword ptr[eax]
??__asm mov of2,ecx

??of=(bas2-bas1+of2-of1)+of1;

??__asm mov eax,pfn1
??__asm inc eax
??__asm mov ecx,of
??__asm mov dword ptr[eax],ecx
??__asm pop ecx
??return of1;
?}
?
};

class mmt
{
public:
?void donothing()
{
}
?void donothing(int)
{
}
??void dosomething()
{
}
};

void fastcall(int a,int b)
{
}
void askcall(int,int)
{
}


It can be used as example:
int main()
{
?HookMemberFunction sh;
?unsigned long hd=sh.redirect(&fastcall,&askcall);//test api
?fastcall(0,0);//two?function
?askcall(0,0);
?sh.restore(&fastcall,hd);
?askcall(0,0);
?fastcall(0,0);
//test overlay functions(donothing)
?typedef void (mmt::*sp)(void);
?sp p1=&mmt::dosomething;
?sp p2=&mmt::donothing;
?hd=sh.redirect(p1,p2);
?mmt mt;//a class
?mt.donothing();
?mt.dosomething();
?sh.restore(p1,hd);
?mt.donothing();
?mt.dosomething();

}
Although it can be work right,addtionly we may be use it not properly.Youcan add some strict class to prevent bad use of it by check if the argument and return type is strictly same.,if you need it.

posted on 2007-03-05 23:51 meet-dream 閱讀(692) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区视频在线观看| 午夜视频久久久久久| 免费成人高清视频| 亚洲福利专区| 亚洲高清二区| 欧美日产国产成人免费图片| 日韩一级黄色片| 99这里有精品| 国产在线精品一区二区中文| 麻豆国产精品一区二区三区 | 欧美69wwwcom| 欧美大胆成人| 亚洲欧美日韩国产综合精品二区| 亚洲午夜精品网| 国内一区二区三区在线视频| 欧美国产日韩一区二区在线观看| 欧美激情性爽国产精品17p| 亚洲手机成人高清视频| 亚洲综合色噜噜狠狠| 狠狠色综合网| 亚洲精品免费一二三区| 国产精品午夜在线观看| 免费看黄裸体一级大秀欧美| 蜜桃久久精品乱码一区二区| 亚洲自拍偷拍麻豆| 久久免费视频网站| 亚洲欧美一区二区原创| 免费观看成人www动漫视频| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲精品国产精品国自产观看| 欧美日韩国产影片| 久久久久久久尹人综合网亚洲| 蜜臀a∨国产成人精品| 亚洲欧美日本国产有色| 久久亚洲欧美国产精品乐播| 亚洲丝袜av一区| 久久婷婷综合激情| 欧美一级在线视频| 欧美激情1区2区| 久久噜噜噜精品国产亚洲综合| 欧美日韩国产免费观看| 欧美.www| 狠狠网亚洲精品| 午夜精品久久99蜜桃的功能介绍| 亚洲毛片网站| 久热精品视频在线观看一区| 欧美一二三区精品| 欧美午夜精品久久久久久久| 国产精品毛片a∨一区二区三区|国 | 国产亚洲精品久| 亚洲午夜精品视频| 亚洲午夜久久久| 欧美精品三级日韩久久| 欧美a级片一区| 影音先锋一区| 久久久久久久综合色一本| 欧美在线观看视频| 国产精品视频免费观看| 一区二区三区高清| 亚洲综合成人婷婷小说| 欧美日韩亚洲一区三区 | 欧美二区在线播放| 国产在线精品自拍| av不卡在线看| 欧美激情1区| 91久久在线播放| 日韩午夜精品视频| 免费高清在线视频一区·| 欧美成人免费全部| 最新成人在线| 欧美区日韩区| 一本一本久久| 午夜精品久久久久久久99水蜜桃 | 欧美成人精品| 亚洲福利视频在线| 99视频在线精品国自产拍免费观看| 牛牛影视久久网| 亚洲麻豆视频| 午夜精品一区二区三区四区 | 欧美成人午夜激情在线| 亚洲国产精品国自产拍av秋霞| 亚洲精品乱码久久久久久蜜桃麻豆| 久热综合在线亚洲精品| 亚洲国产另类 国产精品国产免费| 日韩午夜电影在线观看| 欧美亚洲第一区| 欧美一区不卡| 欧美成人午夜激情在线| 日韩视频中午一区| 国产精品久久久久久久久婷婷| 香蕉国产精品偷在线观看不卡| 美女图片一区二区| 99re6热只有精品免费观看| 欧美四级在线观看| 久久国产精品99国产| 亚洲国产日韩美| 午夜视频在线观看一区二区| 一区二区亚洲精品国产| 欧美激情第一页xxx| 亚洲欧美三级在线| 欧美激情一区二区三区高清视频| 宅男66日本亚洲欧美视频| 国产婷婷成人久久av免费高清| 狂野欧美一区| 99在线|亚洲一区二区| 久久久亚洲高清| 宅男噜噜噜66国产日韩在线观看| 国产视频丨精品|在线观看| 久久漫画官网| 亚洲小说欧美另类社区| 欧美激情第二页| 久久久99爱| 亚洲色在线视频| 在线观看91精品国产麻豆| 国产精品r级在线| 欧美经典一区二区三区| 久久久久国产精品厨房| 亚洲一区国产视频| 91久久久在线| 欧美国产日韩一区二区三区| 久久精品1区| 一区二区三区欧美日韩| 亚洲啪啪91| 一区免费观看| 国产日韩亚洲欧美精品| 欧美日韩中文另类| 欧美精品九九99久久| 老司机精品视频网站| 欧美亚洲免费在线| 亚洲免费视频一区二区| 夜夜嗨一区二区| 亚洲美女精品久久| 亚洲国产高清高潮精品美女| 老司机成人网| 狂野欧美一区| 久久影视精品| 老司机精品久久| 欧美 日韩 国产一区二区在线视频| 欧美一区二区三区婷婷月色 | av不卡在线看| 亚洲精品影院| 亚洲毛片在线观看.| 日韩午夜激情av| 日韩一级欧洲| 一区二区三区四区国产| 中日韩美女免费视频网址在线观看 | 一区二区三区精密机械公司 | 亚洲无线视频| 亚洲四色影视在线观看| 99精品欧美一区二区蜜桃免费| 91久久国产精品91久久性色| 亚洲国产高清在线观看视频| 尤物在线观看一区| 亚洲日本欧美| 亚洲一区二区三区精品在线| 亚洲综合色噜噜狠狠| 性xx色xx综合久久久xx| 久久精品国产亚洲一区二区三区 | 午夜精品国产更新| 欧美伊人久久久久久久久影院 | 夜夜爽99久久国产综合精品女不卡| 亚洲精品国产精品国自产在线| 99精品热视频只有精品10| 亚洲一区二区三区777| 午夜精品电影| 欧美bbbxxxxx| 日韩一级视频免费观看在线| 午夜精品久久久久久久| 久久午夜视频| 国产精品福利影院| 伊人婷婷欧美激情| 99在线精品视频在线观看| 欧美一区二区三区免费看| 欧美高清hd18日本| 一区二区日韩伦理片| 久久久久久久综合色一本| 欧美日韩国产限制| 国模精品一区二区三区色天香| 亚洲黄色影片| 欧美一区二区三区在线观看| 欧美国产亚洲精品久久久8v| 中文亚洲字幕| 免费在线欧美黄色| 国产午夜精品久久久| 夜夜夜久久久| 欧美1区2区3区| 亚洲影院免费| 欧美精品久久久久久久免费观看 | 久久嫩草精品久久久久| 亚洲精品国产精品乱码不99按摩| 亚洲欧美精品一区| 欧美精品三级日韩久久| 精品999在线播放| 香港久久久电影| 亚洲人成人一区二区在线观看| 久久成人免费网| 国产精品日韩欧美一区二区| 亚洲激情偷拍| 欧美xx视频| 久久精品视频播放|