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

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>
            午夜精品一区二区三区电影天堂| 影音先锋亚洲一区| 在线一区日本视频| 亚洲另类自拍| 一区二区三区日韩精品视频| 一区二区三区成人精品| 亚洲一区二区动漫| 久久精品一二三| 欧美+日本+国产+在线a∨观看| 欧美aⅴ一区二区三区视频| 欧美黄色一级视频| 国产精品久久久久免费a∨大胸| 欧美性片在线观看| 国产精品影音先锋| 国内成人精品2018免费看| 亚洲国产精品久久久久秋霞影院| 亚洲欧洲中文日韩久久av乱码| 亚洲国产日韩欧美在线99| 亚洲视频免费在线观看| 亚洲视频在线看| 久久久久国产成人精品亚洲午夜| 欧美久久一级| 欧美激情国产日韩| 国产精品久久二区二区| 欧美日韩中文在线观看| 欧美视频一区二区三区在线观看| 欧美日韩在线三区| 久久精品91久久香蕉加勒比 | 亚洲欧美日韩国产另类专区| 亚洲国产高潮在线观看| 午夜久久久久久| 久久本道综合色狠狠五月| 亚洲国产精品日韩| 亚洲人成在线观看网站高清| 性欧美videos另类喷潮| 另类天堂视频在线观看| 久久大逼视频| 国产精品捆绑调教| 国产有码在线一区二区视频| 亚洲综合精品| 欧美sm重口味系列视频在线观看| 亚洲天堂av图片| 久久久精品久久久久| 国产精品乱码| 在线播放亚洲| 亚洲在线免费视频| 日韩视频在线观看免费| 久久久精品欧美丰满| 国产视频精品xxxx| 99精品免费视频| 亚洲高清在线| 欧美有码视频| 国产日韩欧美综合一区| 亚洲伦理精品| 亚洲午夜一区二区| 99精品欧美一区二区三区| 欧美有码在线视频| 国产欧美日韩综合一区在线观看 | 一区二区三区精品国产| 久久影音先锋| 亚洲福利国产精品| 欧美在线亚洲综合一区| 亚洲毛片av| 欧美婷婷在线| 99精品99久久久久久宅男| 亚洲黄色av| 美女视频一区免费观看| 1769国产精品| 久久久久久网址| 久久久精品网| 国内精品视频666| 99在线|亚洲一区二区| 亚洲另类在线视频| 黄色免费成人| 久久综合九色| 亚洲精品一区二区三区婷婷月| 久久精品亚洲精品国产欧美kt∨| 亚洲欧美日韩一区二区三区在线| 欧美日韩黄色一区二区| 午夜精品影院在线观看| 一本色道久久88综合日韩精品| 欧美视频一区在线| 一区二区三区三区在线| 亚洲国产精品一区二区第一页| 欧美乱在线观看| 亚洲人体1000| 亚洲视频一区在线观看| 欧美婷婷六月丁香综合色| 久久福利精品| 久久国产精品久久久久久电车| 亚洲第一二三四五区| 美日韩丰满少妇在线观看| 亚洲欧美另类在线| 亚洲韩国精品一区| 亚洲精品欧美日韩专区| 国产日本亚洲高清| 久久亚洲私人国产精品va| 欧美国产亚洲精品久久久8v| 日韩视频―中文字幕| 午夜免费久久久久| 影音先锋久久久| 亚洲一区二区在线观看视频| 国产一区二区三区视频在线观看| 99视频在线观看一区三区| 欧美在线免费观看视频| 亚洲国产高清自拍| 欧美一区二区三区日韩视频| 在线观看国产日韩| 午夜精品影院| 亚洲啪啪91| 久久激情视频免费观看| 亚洲免费激情| 美女黄网久久| 欧美一级黄色录像| 欧美日本在线播放| 久久性色av| 性欧美xxxx大乳国产app| 一本色道久久综合亚洲精品不 | 亚洲午夜激情免费视频| 亚洲欧洲精品一区二区三区不卡 | 久久综合一区| 欧美日韩第一区| 欧美激情一二三区| 国产精品日韩在线一区| 亚洲精品美女91| 欧美在线观看www| 欧美精品日本| 老司机免费视频一区二区| 欧美日本在线视频| 亚洲国产精品久久精品怡红院| 国产精品你懂得| 宅男精品视频| 99国内精品久久| 欧美一级电影久久| 欧美在线|欧美| 欧美国产日韩亚洲一区| 亚洲福利精品| 国产亚洲综合精品| 欧美亚洲免费在线| 亚洲欧美精品伊人久久| 国产精品国产三级国产专区53 | 亚洲动漫精品| 亚洲激情校园春色| 欧美一区二区三区视频在线观看 | 最新国产成人在线观看| 韩日精品视频| 久久亚洲图片| 久久在线免费视频| 亚洲电影免费观看高清| 欧美一级专区免费大片| 另类成人小视频在线| 国产专区欧美精品| 麻豆成人在线观看| 浪潮色综合久久天堂| 亚洲精品久久视频| 亚洲永久免费精品| 欧美日韩美女在线| 亚洲免费视频成人| 午夜精品网站| 黄色成人av网站| 久久午夜精品一区二区| 亚洲精选一区| 亚洲午夜精品一区二区三区他趣| 国产精品免费在线 | 亚洲黄色成人久久久| 亚洲一区二区三区久久| 欧美性色视频在线| 久久久久成人网| 欧美激情1区2区3区| 中文精品在线| 国产欧美日韩激情| 欧美成人黄色小视频| 亚洲黄一区二区三区| 香蕉乱码成人久久天堂爱免费| 国产精品免费一区二区三区在线观看| 久久国产主播| 欧美黄污视频| 亚洲国内在线| 国产精品视频网| 欧美一区二视频| 在线观看日韩av先锋影音电影院| 蜜臀99久久精品久久久久久软件 | 欧美福利一区二区| 99v久久综合狠狠综合久久| 欧美午夜在线视频| 久久久久久精| 亚洲第一页中文字幕| 一区二区三区日韩在线观看| 欧美精品一二三| 香蕉成人啪国产精品视频综合网| 亚洲黄色有码视频| 午夜亚洲福利在线老司机| 亚洲第一精品夜夜躁人人躁| 欧美精品二区| 麻豆精品视频在线观看| 日韩视频永久免费| 欧美jizzhd精品欧美巨大免费| 一本色道久久综合亚洲精品小说| 在线看日韩欧美| 国产精品嫩草影院av蜜臀|