加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Win32 Api函数调试中断

发布时间:2020-12-14 01:43:21 所属栏目:Windows 来源:网络整理
导读:我想在SetTimer功能上休息一下,看看哪些组件用什么值注册什么定时器.这可能吗? 是的,你可以这样做.首先确保您的调试器具有 public symbols设置. SetTimer生活在user32,但这只是它导出的.最简单的方法是使用命令行调试器NTSD.我们需要其真实姓名,因此在user3
我想在SetTimer功能上休息一下,看看哪些组件用什么值注册什么定时器.这可能吗?
是的,你可以这样做.首先确保您的调试器具有 public symbols设置.

SetTimer生活在user32,但这只是它导出的.最简单的方法是使用命令行调试器NTSD.我们需要其真实姓名,因此在user32中查找匹配的符号:

0:000> x user32!*timer*
759992b9 USER32!NtUserValidateTimerCallback = <no type information>
759977d5 USER32!NtUserSetTimer = <no type information>
759e4f13 USER32!NtUserSetSystemTimer = <no type information>
759993bf USER32!NtUserKillTimer = <no type information>

啊,哈!它的调试符号是NtUserSetTimer:

0:000> bp user32!NtUserSetTimer

在Visual Studio中,您可以通过写入一个简单的scratch程序,然后设置断点并右键单击并选择“Go to Disassembly”来确定SetTimer的存在位置:

int _tmain(int argc,_TCHAR* argv[]) {
  SetTimer(NULL,NULL);
004113BE  mov         esi,esp 
004113C0  push        0    
004113C2  push        0    
004113C4  push        0    
004113C6  push        0    
004113C8  call        dword ptr [__imp__SetTimer@16 (418338h)]

如果我们进入那个电话,那我们到这里来:

_NtUserSetTimer@16:
759977D5  mov         eax,123Dh 
759977DA  mov         edx,7FFE0300h 
759977DF  call        dword ptr [edx] 
759977E1  ret         10h

所以在Visual Studio中设置一个断点,你必须在断点中使用context operator.从菜单中选择:Debug – >新断点 – >在功能中断,然后输入:

{,user32.dll}_NtUserSetTimer@16

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读