OlyDbg中的Win32 SetTimer调试

时间:2019-07-03 18:15:50

标签: assembly x86

我相对较不熟悉OlyDbg中的逆向工程,但是我正在尝试调试我在Vb.Net中制作的使用计时器的小型应用程序。

本质上,当应用程序加载时,会有一个计时器从7倒数到0,当它达到0时,会启用一个按钮,允许应用程序加载。

我正在Olydbg中对此进行逆向工程,以了解SetTimer的工作原理,但是我很挣扎。我的目标是修改程序集,使其能够操纵起始值(硬编码为7)。

我相信我已经追踪了SetTimer的调用位置:

0040E316 | FF15 74A54E00            | call dword ptr ds:[<&SetTimer>]         |

跟随OlyDBG中的这个位置,将我带到这里:

76A1F190 | 8BFF                     | mov edi,edi                             |
76A1F192 | 55                       | push ebp                                |
76A1F193 | 8BEC                     | mov ebp,esp                             |
76A1F195 | 6A 00                    | push 0                                  |
76A1F197 | FF75 14                  | push dword ptr ss:[ebp+14]              |
76A1F19A | FF75 10                  | push dword ptr ss:[ebp+10]              |
76A1F19D | FF75 0C                  | push dword ptr ss:[ebp+C]               |
76A1F1A0 | FF75 08                  | push dword ptr ss:[ebp+8]               |
76A1F1A3 | FF15 8C3BA976            | call dword ptr ds:[<&NtUserSetTimer>]   |
76A1F1A9 | 5D                       | pop ebp                                 |
76A1F1AA | C2 1000                  | ret 10                                  |

我查看了有关SetTimer的Microsoft文档,以了解需要哪些参数,但此时我有点迷失了。我假设interval参数(我猜是十进制的毫秒数为1000,以毫秒为单位)将在这些PUSH命令之一中,但是操纵这些值似乎没有任何效果。

有人可以提供一些关于我从这里可以去哪里的指示或指导吗?

谢谢。

0 个答案:

没有答案