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

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>
            亚洲免费精彩视频| 午夜精品亚洲| 欧美激情aaaa| 美女精品国产| 亚洲人成网在线播放| 亚洲国产精品精华液2区45| 久久综合狠狠| 一区二区三区久久精品| 这里只有精品视频在线| 国产亚洲视频在线观看| 久久在线视频在线| 欧美久久视频| 久久久综合网| 欧美剧在线观看| 久久www成人_看片免费不卡| 久久这里只精品最新地址| 99视频一区二区三区| 亚洲香蕉在线观看| 亚洲国产精品va| 亚洲图色在线| 亚洲国产精品国自产拍av秋霞| 夜夜嗨av一区二区三区四区 | 一区二区电影免费在线观看| 国产欧美丝祙| 亚洲三级视频| 韩曰欧美视频免费观看| 亚洲精品欧美在线| 狠狠色丁香婷综合久久| 日韩一区二区精品视频| 一区二区自拍| 亚洲中字黄色| 国产精品99久久不卡二区| 久久gogo国模啪啪人体图| 一区二区三区欧美| 老司机凹凸av亚洲导航| 欧美一区二区三区在线视频| 欧美精品国产一区| 狂野欧美激情性xxxx| 国产精品视频导航| 日韩视频永久免费| 亚洲人成在线免费观看| 久久精品欧洲| 久久成人国产精品| 国产精品二区二区三区| 亚洲精品免费电影| 亚洲激情成人| 久久香蕉国产线看观看av| 久久狠狠婷婷| 国产精品一香蕉国产线看观看| 亚洲精品视频免费在线观看| 亚洲国产色一区| 久热re这里精品视频在线6| 久久免费高清视频| 国产一级久久| 午夜精品亚洲一区二区三区嫩草| 亚洲天堂成人| 欧美日韩中文精品| 亚洲精品自在久久| 国产精品99久久久久久久vr| 欧美精品123区| 亚洲国产精品久久人人爱蜜臀| 亚洲福利视频网站| 六月婷婷久久| 亚洲国产三级在线| 日韩视频不卡中文| 欧美日韩国产一中文字不卡| 亚洲精品一区中文| 在线视频免费在线观看一区二区| 欧美日韩精品欧美日韩精品一| 亚洲精品欧美日韩| 亚洲男人的天堂在线观看| 国产精品久久久久久亚洲调教| 亚洲在线一区二区三区| 久久久精品日韩欧美| 一区二区三区在线免费播放| 久久一区二区精品| 亚洲黄网站黄| 亚洲午夜久久久| 国产精品色午夜在线观看| 欧美一级成年大片在线观看| 免费国产自线拍一欧美视频| 最近中文字幕日韩精品| 欧美激情一区二区三区| 99精品免费视频| 久久av一区二区| 亚洲国产精品久久| 欧美日韩三级电影在线| 午夜精品免费| 欧美二区视频| 亚洲视频一区在线观看| 国产亚洲一区在线| 免费观看一区| 亚洲欧美激情四射在线日| 美女视频黄免费的久久| 99re66热这里只有精品3直播| 国产精品美女诱惑| 久久国产精品99精品国产| 亚洲承认在线| 伊人狠狠色丁香综合尤物| 久久精品国产综合精品| 最新精品在线| 欧美一区二区三区日韩| 国产欧美一区视频| 欧美va亚洲va国产综合| aaa亚洲精品一二三区| 久久琪琪电影院| 一区二区三区 在线观看视频 | 一区二区三区偷拍| 国产一区二区三区日韩欧美| 欧美激情综合网| 久久国产精品高清| 亚洲精品国产精品国自产在线| 欧美在线一级视频| 一区二区三区欧美亚洲| 国内综合精品午夜久久资源| 国产精品video| 欧美黄污视频| 看欧美日韩国产| 欧美在线视频播放| 亚洲一区二区免费视频| 亚洲美女尤物影院| 亚洲电影免费在线观看| 久久久国产一区二区三区| 亚洲一区二区高清| 日韩五码在线| 尤物yw午夜国产精品视频| 国产欧美一区二区三区久久| 欧美三级视频在线| 欧美日韩国产精品专区| 你懂的国产精品永久在线| 久久精品视频一| 欧美一区二区三区免费视| 亚洲网站视频福利| 亚洲欧洲一区| 欧美激情aaaa| 欧美承认网站| 欧美福利视频网站| 麻豆成人综合网| 欧美成人蜜桃| 欧美激情一区二区久久久| 久久免费国产| 久久综合999| 理论片一区二区在线| 久久久久.com| 免播放器亚洲| 欧美激情一区二区三区蜜桃视频| 欧美不卡高清| 亚洲日本一区二区三区| 亚洲精品一区二区三区婷婷月| 欧美激情二区三区| 亚洲七七久久综合桃花剧情介绍| 亚洲精品国精品久久99热| 亚洲人成高清| 一区二区电影免费观看| 亚洲免费网址| 久久久久99| 免费看亚洲片| 欧美日韩亚洲视频一区| 国产精品成人观看视频国产奇米| 国产精品视频yy9299一区| 国产人成精品一区二区三| 狠狠色综合网| 日韩午夜在线| 午夜精品一区二区三区四区| 久久精品麻豆| 亚洲国产精品黑人久久久| 一区二区三区久久网| 欧美亚洲一区二区三区| 久久―日本道色综合久久| 欧美福利一区二区三区| 国产精品高清一区二区三区| 国产婷婷成人久久av免费高清| 国语自产精品视频在线看| 99av国产精品欲麻豆| 久久成人国产| 亚洲精品免费在线播放| 性亚洲最疯狂xxxx高清| 欧美黄色免费| 国产自产2019最新不卡| 亚洲欧洲午夜| 久久精品99| 亚洲精品无人区| 久久久91精品国产一区二区精品| 欧美区高清在线| 狠狠色伊人亚洲综合网站色| 亚洲免费视频一区二区| 欧美国产亚洲另类动漫| 午夜精品偷拍| 国产精品国产a级| 亚洲免费久久| 美女尤物久久精品| 亚洲欧美成人一区二区三区| 欧美激情区在线播放| 韩国三级电影久久久久久| 中文国产一区| 欧美成人免费视频| 欧美一级黄色录像| 欧美日韩视频| 最新国产乱人伦偷精品免费网站 | 一本大道久久a久久综合婷婷|