分享
 
 
 

想在你的程序中截住API函数吗?那就快看吧!

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在你的程序中做一个函数func(...)

调用 func1 = ApiSpy(NULL,"GDI32.DLL","TextOutA",(PROC)func)

那么你的程序没次调用TextOut时,就会调用func 为了不破坏原有功能

请在func中调用func1。如果想截获整个系统的api,你需要做一个全局HOOK

在HOOK的DLL里的初始化时调用本函数。主要代码如下:

PROC WINAPI

ApiSpy(PSTR pDllUse,PSTR pDllName,PSTR pApiName,PROC pNewPorc)

{

PIMAGE_DOS_HEADER pDosHeader;

PIMAGE_NT_HEADERS pNTHeader;

PIMAGE_IMPORT_DESCRIPTOR pImportDesc;

PIMAGE_THUNK_DATA pThunk;

PROC pOldProc;

DWORD oldpr;

static int Layer = 0;

if ( pDllUse == NULL )

Layer = 0;

pOldProc = GetProcAddress( GetModuleHandle(pDllName),pApiName );

if ( pOldProc == NULL )

return NULL;

pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandle(pDllUse);

if ( IsBadReadPtr(pDosHeader, sizeof(IMAGE_DOS_HEADER)) )

return NULL;

if ( pDosHeader->e_magic != IMAGE_DOS_SIGNATURE )

return NULL;

pNTHeader = MakePtr(PIMAGE_NT_HEADERS, pDosHeader, pDosHeader->e_lfanew);

if ( IsBadReadPtr(pNTHeader, sizeof(IMAGE_NT_HEADERS)) )

return NULL;

if ( pNTHeader->Signature != IMAGE_NT_SIGNATURE )

return NULL;

pImportDesc = MakePtr(PIMAGE_IMPORT_DESCRIPTOR, pDosHeader,

pNTHeader->OptionalHeader.

DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].

VirtualAddress);

if ( pImportDesc == (PIMAGE_IMPORT_DESCRIPTOR)pNTHeader )

return NULL;

__try{

while ( pImportDesc->Name ){

PSTR pszModName = MakePtr(PSTR, pDosHeader, pImportDesc->Name);

REM[url=file://REM][/url]("[%s]",pszModName);

if ( stricmp(pszModName, pDllName) == 0 ){

pThunk = MakePtr(PIMAGE_THUNK_DATA, pDosHeader, pImportDesc->FirstThunk);

while ( pThunk->u1.Function ){

REM("[%s:%s] ? %s %8x ==> %8x",pDllName,pApiName,pszModName,

// (DWORD)pOldProc,(DWORD)pThunk->u1.Function);

if ( pThunk->u1.Function == (PDWORD)pOldProc ){

if (!VirtualProtect(pThunk, 16, PAGE_READWRITE,&oldpr)){

REM("VirtualProtect False");

}

REM("ApiSpy [%s:%s] OK !",pDllName,pApiName);

pThunk->u1.Function=(PDWORD)pNewPorc;

return pOldProc;

}

pThunk++;

}

return NULL;

}

else{

if ( Layer < __Layer ){

Layer ++;

ApiSpy(pszModName,pDllName,pApiName,pNewPorc);

}

}

pImportDesc++;

}

}

__except(TRUE){

return NULL;

}

return NULL;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有