我相对较不熟悉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命令之一中,但是操纵这些值似乎没有任何效果。
有人可以提供一些关于我从这里可以去哪里的指示或指导吗?
谢谢。