2009-06-10 75 views
3

我有一个MFC应用程序,我给(无源代码),它打开一个'更新'按钮,然后单击后执行非常长的更新窗口。修改程序假按钮按

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

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

有什么建议吗?

回答

3

如果你不喜欢使用辅助“宏观”方案的想法发送鼠标点击,您可以修补原始程序的二进制调用按钮的BM_CLICK处理程序。如果您可以为调用找到一些空间(最少5个字节无参数),您可以单独使用OllyDbg(在编辑代码之后,选择它并从右键单击选择“复制到可执行文件” - >“选择”菜单)。否则,您需要使用PE编辑器(例如LordPE或PE Tools)创建一个新的代码段,并在其中添加代码(通常您需要在程序中更改呼叫跳转到您的段,执行原始呼叫加上对按钮的点击处理程序的调用,然后在修补跳转后跳回原来的位置)。

+0

如何/将在哪里放入此修补程序? – samoz 2009-06-10 17:53:16

1

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

-1

只需创建一个第二个程序,将午餐,并会使用SendInput(...)

0

看到这个perl模块win32 :: guitest它可以帮助你做到这一点。你可以用它写一个Perl脚本并嵌入到你的程序中。或者你可以使用包装你所需要的win32 API来使用它。