修改程序以假按下按钮

时间:2009-06-10 17:30:36

标签: reverse-engineering ida ollydbg

我有一个MFC应用程序(没有源代码)打开一个带有“更新”按钮的窗口,然后在单击后执行很长的更新。

我想修改程序,以便在创建窗口时(或其他地方,如DoModal),会向程序发送一条消息,让它认为按钮已被按下。

我在Ida Pro和OllyDbg上玩了一段时间,但无济于事。我看了可能使用PumpMessage,但这并没有带来任何成功。

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

如果您不喜欢使用辅助“宏”程序,可以修补原始程序的二进制文件以调用按钮的BM_CLICK处理程序。如果你可以为调用找到一些空间(最少5个字节没有参数),你可以单独使用OllyDbg(在编辑代码后选择它,然后选择“复制到可执行文件” - >从右边选择“选择” - 点击菜单)。否则,您需要使用PE编辑器(例如LordPE或PE Tools)创建一个新的代码部分并在那里添加您的代码(通常您需要更改程序中的调用以跳转到您的部分,在那里您执行原始调用以及对按钮的单击处理程序的调用,然后在修补跳转后跳回到旧位置。

答案 1 :(得分:1)

使用测试自动化技术有几种方法可以做到这一点,但最简单的方法是简单地获取所需按钮的窗口句柄并发送BM_CLICK message。这假设您具有Windows上的C / C ++应用知识。如果没有,还有其他方法使用.NET或其他技术。我不熟悉ida-pro或ollydbg。

答案 2 :(得分:0)

请参阅此perl模块win32 :: guitest它可以帮助您执行此操作。您可以使用它编写perl脚本并将其嵌入到您的程序中。或者您可以使用win32 api来满足您的需求并使用它。

答案 3 :(得分:-1)

只需创建一个将要午餐的第二个程序,然后使用SendInput(...)

发送鼠标