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

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 閱讀(681) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产乱码精品1区2区3区| 一本久久综合| 中文在线一区| 一区二区三区免费在线观看| 99国内精品久久久久久久软件| 亚洲电影有码| 最新中文字幕亚洲| 一区二区三区四区国产精品| 亚洲一区二区三| 欧美一区二区在线播放| 久久久久久久一区二区三区| 欧美va亚洲va国产综合| 亚洲美女性视频| 午夜免费久久久久| 奶水喷射视频一区| 欧美视频在线观看 亚洲欧| 国产精品一区二区三区乱码| 精品va天堂亚洲国产| 一个色综合av| 久久九九久久九九| 亚洲人体影院| 亚洲欧美电影院| 老色鬼精品视频在线观看播放| 欧美久久电影| 国产专区欧美精品| 在线亚洲美日韩| 美女任你摸久久| 夜夜狂射影院欧美极品| 欧美日本视频在线| 亚洲一区二区精品在线| 久久精品国产2020观看福利| 欧美成人综合一区| 国产自产精品| 亚洲欧美在线观看| 亚洲高清毛片| 久久成人精品一区二区三区| 欧美日韩八区| 亚洲风情亚aⅴ在线发布| 亚洲欧美日韩国产成人精品影院| 欧美88av| 久久精品国产亚洲一区二区三区| 夜夜嗨一区二区三区| 久久久久久久久久久一区| 99视频精品在线| 美女诱惑黄网站一区| 国产亚洲在线观看| 国产一区 二区 三区一级| 一区二区三区久久| 欧美激情影音先锋| 久久久久国产精品一区三寸| 国产精品久久久久久久久免费樱桃| 亚洲国产精品v| 久久婷婷国产麻豆91天堂| 亚洲男女毛片无遮挡| 国产精品国码视频| 亚洲性夜色噜噜噜7777| 亚洲毛片在线| 欧美色123| 亚洲婷婷在线| 夜夜嗨av一区二区三区| 欧美另类人妖| 亚洲最快最全在线视频| 亚洲日本欧美在线| 欧美人与禽猛交乱配| 一二美女精品欧洲| 一区二区三区视频在线| 欧美体内谢she精2性欧美| 亚洲一区精品电影| aa日韩免费精品视频一| 欧美丝袜第一区| 亚洲自拍偷拍福利| 亚洲欧美一区二区原创| 国产亚洲综合在线| 免费视频一区| 欧美激情精品久久久久久蜜臀| 日韩五码在线| 亚洲视频在线观看免费| 国产午夜一区二区三区| 美女主播精品视频一二三四| 欧美r片在线| 亚洲欧美激情一区| 久久国产视频网| 99re66热这里只有精品3直播 | 久久久精彩视频| 亚洲高清av| 韩国在线视频一区| 性欧美超级视频| 亚洲视频一区| 国产午夜精品久久久久久久| 久久久久在线| 欧美精品一卡二卡| 欧美亚洲免费电影| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲精品久久嫩草网站秘色| 亚洲视频网在线直播| 亚洲第一精品影视| 99riav1国产精品视频| 国产午夜精品久久| 亚洲伦理自拍| 亚洲第一精品福利| 亚洲一区视频在线观看视频| 1204国产成人精品视频| 亚洲最黄网站| 亚洲国产美女| 欧美一区二区三区的| 99国产精品久久久久久久久久| 欧美一激情一区二区三区| 99精品国产99久久久久久福利| 午夜精品剧场| 一区二区三区av| 久久综合九色99| 欧美主播一区二区三区美女 久久精品人 | 亚洲国产日韩一区| 性亚洲最疯狂xxxx高清| 亚洲精品久久久久久久久久久久久 | 亚洲自拍偷拍视频| 日韩系列在线| 老色鬼精品视频在线观看播放| 午夜精品av| 欧美日韩视频第一区| 欧美成人亚洲| 韩国v欧美v日本v亚洲v| 亚洲一区二区在线观看视频| 一本色道久久综合亚洲精品小说| 欧美专区在线观看| 先锋影音一区二区三区| 欧美天堂亚洲电影院在线观看| 亚洲高清免费在线| 亚洲国产你懂的| 老司机精品导航| 美女免费视频一区| 一区二区三区自拍| 久久久久久亚洲精品中文字幕| 久久久久国内| 国内精品**久久毛片app| 欧美一区二区三区电影在线观看| 性欧美精品高清| 国产女主播一区二区三区| 亚洲综合日韩中文字幕v在线| 亚洲欧美日韩爽爽影院| 国产精品区一区二区三区| 亚洲一区二区不卡免费| 免费成人高清| 午夜欧美大片免费观看| 国产精品乱码一区二区三区| 宅男噜噜噜66一区二区| 亚洲欧美制服另类日韩| 国产日韩欧美一区| 欧美一区二区三区视频在线| 久久国产精品色婷婷| 国产综合欧美在线看| 久久在精品线影院精品国产| 亚洲第一中文字幕| 亚洲一区二区三区高清 | 国产精品成人一区二区三区吃奶| 亚洲乱码一区二区| 性欧美超级视频| 韩国av一区二区三区四区| 狼狼综合久久久久综合网| 亚洲国产毛片完整版| 亚洲在线免费视频| 狠狠噜噜久久| 免费成人高清视频| 一区二区三区精品久久久| 欧美一级专区| 亚洲国产福利在线| 欧美日韩一区在线播放| 欧美一区91| 最新成人在线| 久久精品观看| 99精品热视频| 国产日产亚洲精品| 欧美成人精品一区二区三区| 亚洲尤物在线| 亚洲国产婷婷香蕉久久久久久99| 亚洲伊人观看| 亚洲国产精品www| 国产精品男人爽免费视频1 | 久久久久久尹人网香蕉| 亚洲日本乱码在线观看| 久久久91精品| 亚洲自啪免费| 亚洲免费黄色| 黄色成人小视频| 欧美午夜宅男影院在线观看| 久久精品一区蜜桃臀影院| 夜色激情一区二区| 欧美黑人多人双交| 久久久久国产一区二区三区| 亚洲午夜电影| 最新中文字幕一区二区三区| 国内精品嫩模av私拍在线观看| 欧美午夜电影在线观看| 欧美激情一区二区三区成人| 久久精品女人天堂| 性欧美暴力猛交69hd| 亚洲天堂男人| 一区二区三区导航| 日韩一区二区精品视频| 亚洲精品一区二区网址 |