15 旧 2013-12-14, 12:01:37 默认
justlovemm 当前离线

能在xp(32位?)上运行,说明是32位程序?
请确认你要hook的dll的路径。32位程序在64位下运行的时候,hook的dll的位置并不是system32下的那些dll,同时注册表的位置也不一样的。
搞定了这些,32位程序在64位os下的hook,和32位os下是完全一样的。 

 

 

http://bbs.pediy.com/showthread.php?p=1246968

1 旧 2013-12-13, 22:21:32 默认 【求助】WIN7系统上关于API HOOK的问题,郁闷一天了。
winampme 当前离线


在WIN7系统上,使用的是inline hook,修改函数的前五个字节来HOOK。其它程序都可以Hook住,但就是我想HOOK的那个程序使终无法跳转到我的函数中来。并且用一些工具软件也查看到DLL中前面五个字节已经改为了跳转代码了(因为该软件加壳了,所以无法用OD进行调试),但执行的时候,却始终没有执行到我的函数中来。但是那个软件也能够正常运行,就好像是那五个字节没有修改过一样。 我把软件运行在XP系统上却能够成功HOOK到。

我看到一个同类软件在WIN7系统上也能够HOOK到,但那个软件要求自身这个软件先运行,然后那个被HOOK再运行才可以。如果被HOOK的软件先运行的话,就也同样HOOK不到。 
 
 
回复时引用此帖 返回顶端
 

phpskycn 的头像

普通会员
普通会员

资 料:
注册日期: Dec 2011
帖子: 381 phpskycn 品行端正
精华: 1
现金: 103 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
2 旧 2013-12-13, 22:29:27 默认
phpskycn 当前离线

请确认你hook的位置会被执行到 
 
 
回复时引用此帖 返回顶端
 

菠萝柚 的头像

初级会员
初级会员

资 料:
注册日期: Feb 2012
帖子: 70 菠萝柚 品行端正
精华: 0
现金: 133 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
3 旧 2013-12-13, 22:31:21 默认
菠萝柚 当前离线

SSDT HOOK肯定能勾到 
 
 
回复时引用此帖 返回顶端
 

winampme 的头像

初级会员
初级会员

资 料:
注册日期: Oct 2010
帖子: 63 winampme 品行端正
精华: 0
现金: 19 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
4 旧 2013-12-13, 22:40:55 默认
winampme 当前离线

引用:
最初由 phpskycn发布 查看帖子
请确认你hook的位置会被执行到
我想应该可以执行到啊。因为XP系统上是可以HOOK到的。除非是那个软件会判断现在是什么系统,是WIN7系统就执行另外的代码。

我想这种可能性较小,不过明天也可以试试。 
 
 
回复时引用此帖 返回顶端
 

winampme 的头像

初级会员
初级会员

资 料:
注册日期: Oct 2010
帖子: 63 winampme 品行端正
精华: 0
现金: 19 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
5 旧 2013-12-13, 22:50:48 默认
winampme 当前离线

引用:
最初由 菠萝柚发布 查看帖子
SSDT HOOK肯定能勾到
我对这个不太了解。如果实在没办法了的话,我会去研究一下这个的。 
 
 
回复时引用此帖 返回顶端
 

phpskycn 的头像

普通会员
普通会员

资 料:
注册日期: Dec 2011
帖子: 381 phpskycn 品行端正
精华: 1
现金: 103 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
6 旧 2013-12-13, 22:53:41 默认
phpskycn 当前离线

OD在该位置下断试试 
 
 
回复时引用此帖 返回顶端
 

winampme 的头像

初级会员
初级会员

资 料:
注册日期: Oct 2010
帖子: 63 winampme 品行端正
精华: 0
现金: 19 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
7 旧 2013-12-13, 22:55:14 默认
winampme 当前离线

引用:
最初由 phpskycn发布 查看帖子
请确认你hook的位置会被执行到
这个软件无法调试,因为加壳了。有什么软件能够检测到执行了哪些DLL中的哪些函数吗? 
 
 
回复时引用此帖 返回顶端
 

winampme 的头像

初级会员
初级会员

资 料:
注册日期: Oct 2010
帖子: 63 winampme 品行端正
精华: 0
现金: 19 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
8 旧 2013-12-13, 22:57:01 默认
winampme 当前离线

引用:
最初由 phpskycn发布 查看帖子
OD在该位置下断试试
OD调试不了啊。加壳了。我不会脱壳。 
 
 
回复时引用此帖 返回顶端
 

菠萝柚 的头像

初级会员
初级会员

资 料:
注册日期: Feb 2012
帖子: 70 菠萝柚 品行端正
精华: 0
现金: 133 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
9 旧 2013-12-13, 22:58:50 默认
菠萝柚 当前离线

R.的钩子很容易绕过的,都过时了=.= 
 
 
回复时引用此帖 返回顶端
 

phpskycn 的头像

普通会员
普通会员

资 料:
注册日期: Dec 2011
帖子: 381 phpskycn 品行端正
精华: 1
现金: 103 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
10 旧 2013-12-14, 00:01:15 默认
phpskycn 当前离线

SOD啥的呢
既然你能hook,肯定能在同样的位置下断 
 
 
回复时引用此帖 返回顶端
 

初级会员
初级会员

资 料:
注册日期: Aug 2011
帖子: 121 暗月之魂 品行端正
精华: 0
现金: 91 Kx
致谢数: 2
获感谢文章数:0
获会员感谢数:0
11 旧 2013-12-14, 03:31:32 默认
暗月之魂 当前离线

你hook了哪个函数?
有些API要区分 A版和W版 
 
 
回复时引用此帖 返回顶端
 

winampme 的头像

初级会员
初级会员

资 料:
注册日期: Oct 2010
帖子: 63 winampme 品行端正
精华: 0
现金: 19 Kx
致谢数: 0
获感谢文章数:1
获会员感谢数:1
12 旧 2013-12-14, 09:18:44 默认
winampme 当前离线

引用:
最初由 暗月之魂发布 查看帖子
你hook了哪个函数?
有些API要区分 A版和W版
我hook的函数没有a版和w版。我hook的是winmm.dll中的waveInOpen函数。 
 
 
回复时引用此帖 返回顶端
 

IDGHOST 的头像

初级会员
初级会员

资 料:
注册日期: Nov 2012
帖子: 172 IDGHOST 品行端正
精华: 0
现金: 100 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
13 旧 2013-12-14, 09:52:11 默认
IDGHOST 当前离线

Win7的Dll有的打了IAT补丁,函数开头变成了jmp [xxx.NewFunction] 
 
 
回复时引用此帖 返回顶端
 

Aker 的头像

『软件调试论坛』版主
『软件调试论坛』版主

资 料:
注册日期: Jul 2005
帖子: 739 Aker 品行端正
精华: 4
现金: 2053 Kx
致谢数: 3
获感谢文章数:7
获会员感谢数:7
14 旧 2013-12-14, 10:26:48 默认
Aker 当前离线

引用:
最初由 winampme发布 查看帖子
我hook的函数没有a版和w版。我hook的是winmm.dll中的waveInOpen函数。
还真有可能不同系统用不一样的api,你是要获取采集的声音么,有可能在xp用waveXX,在其他win os上用Dsound,xaudio2,coreaudio等都有可能的 
 
 
回复时引用此帖 返回顶端
 

初级会员
初级会员

资 料:
注册日期: Oct 2005
帖子: 589 justlovemm 品行端正
精华: 0
现金: 157 Kx
致谢数: 11
获感谢文章数:5
获会员感谢数:5
15 旧 2013-12-14, 12:01:37 默认
justlovemm 当前离线

能在xp(32位?)上运行,说明是32位程序?
请确认你要hook的dll的路径。32位程序在64位下运行的时候,hook的dll的位置并不是system32下的那些dll,同时注册表的位置也不一样的。
搞定了这些,32位程序在64位os下的hook,和32位os下是完全一样的。