pengxiao_007
驱动牛犊
驱动牛犊
  • 注册日期2004-04-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1519回复:3

有人知道如何将一个已经被HOOK了的API函数的地址还原吗?

楼主#
更多 发布于:2004-10-18 14:58
如果一个系统API函数已经被某个程序HOOK了,有办法绕过HOOK程序直接调用原API函数吗?
pengxiao_007
驱动牛犊
驱动牛犊
  • 注册日期2004-04-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-19 10:08
我也不知道别人的软件是采用什么方式hook的api,比如象瑞星这种杀毒软件就是hook了TerminateProcess()等api
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-18 22:40
可以的,不过要对系统很熟,apihook的一般过程:
扫描dll文件的head,得到需要挂接的api入口地址,把这个地址的前几个字节改为 jmp之类的命令,转到自己的模块中执行,退出时回写api入口的几个字节,再转跳回来,ok,当然实际过程要复杂一些,比如环境的还原之类的!

如何恢复?
有点麻烦,不过只要对系统熟,不是不可以!我想到的思路:
由于一般api的入口几个字节都是相同的,即使不同,window操作系统只有几个版本,很容易就可以得出来,然后检查api得入口几个字节是否被改写,如果是,回写即可!


其实挂接函数又好多种,上述是改写函数的地址,
通用的是采用API函数,SetWindowsHookEx和UnhookWindowsHookEx

不知道楼主采用的是那种?
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-18 17:59
可以的,不过要对系统很熟,apihook的一般过程:
扫描dll文件的head,得到需要挂接的api入口地址,把这个地址的前几个字节改为 jmp之类的命令,转到自己的模块中执行,退出时回写api入口的几个字节,再转跳回来,ok,当然实际过程要复杂一些,比如环境的还原之类的!

如何恢复?
有点麻烦,不过只要对系统熟,不是不可以!我想到的思路:
由于一般api的入口几个字节都是相同的,即使不同,window操作系统只有几个版本,很容易就可以得出来,然后检查api得入口几个字节是否被改写,如果是,回写即可!
游客

返回顶部