关于替换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.哪位能给我点提示呢?
...全文
122 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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核心编程》后面部份就这些问题作了一些讨论,可以参考。
  • 打赏
  • 举报
回复
发帖
非技术类

1634

社区成员

VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
帖子事件
创建了帖子
2002-02-28 09:06
社区公告
暂无公告