关于替换API的问题

LJN 2002-02-28 09:06:00
替换一个API需要定义其原型以接受参数输入和处理完后调用原系统函数于是每hook一个API
我们都要做以下几步:
BOOL WINAPI MyTextOutA(HDC hdc,int x,int y,LPCTSTR str,int nLen);
typedef BOOL (WINAPI * SysTextOutA)(HDC,int,int,LPCTSTR,int);
SysTextOutA SysFun = (PROC)GetProcAddress(GetModuleHandle("gdi32.dll"),"TextOutA");
BOOL WINAPI MyTextOutA(HDC hdc,int x,int y,LPCTSTR str,int nLen)
{ return ((SysTextOutA)(PROC)SysFun)(hdc,x,y,str,nLen);}
如果想要hook一个DLL下的所有函数,就需要定义所有原型吗?我看见一些工具似乎
能hook很多DLL下的所有函数,甚至包括我自己作的DLL.哪位能给我点提示呢?
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowCan 2002-03-02
  • 打赏
  • 举报
回复
他那个方法不是很好,很多文件都用了upx这类东西压缩过,引入表都已经面目全非了。
NowCan 2002-02-28
  • 打赏
  • 举报
回复
好像和问题的要求不一样。那个例子也只是hook一个api,而问题时要hook所有api。
masterz 2002-02-28
  • 打赏
  • 举报
回复
You don't have to do that. I think the following page is helpful.
http://codeguru.earthweb.com/dll/apihijack.shtml
APIHijack - A Library for Easy DLL Function Hooking.
jackal123 2002-02-28
  • 打赏
  • 举报
回复
是不是hookapi的问题??
crazybit 2002-02-28
  • 打赏
  • 举报
回复
< WINDOWS核心编程》封装了一个很好的函数,
通过修改import table实现
admireO 2002-02-28
  • 打赏
  • 举报
回复
我觉得应该是每个api都要自己定义
Lightest 2002-02-28
  • 打赏
  • 举报
回复
请问LJN (没有人) :能hook dll中所有函数的工具是什么,在哪里下载的
LJN 2002-02-28
  • 打赏
  • 举报
回复

实际上问题似乎就在于能不能设计一个默认的类型定义,并可以应用于所有
的api.

DefaultType DefaultFunction(.../*be decide at runtime*/)
{
DoMyTask();

return BeInsteadSysFun();
}
ky640 2002-02-28
  • 打赏
  • 举报
回复
<WINDOWS核心编程》后面部份就这些问题作了一些讨论,可以参考。

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧