【问题标题】:Modifying window style by editing binary?通过编辑二进制文件修改窗口样式?
【发布时间】:2012-12-26 01:10:10
【问题描述】:

CyLog 的WildRename 是一个用于对文件执行批量重命名的好程序。它的问题是,虽然主窗口可以调整大小,但它没有最大化框,这使得它的大小和使用有点令人沮丧。而且,他们已经很长时间没有进行任何更新,因此该计划基本上已停止。

我运行 WildRename 并使用 WinSpy++ 修改其窗口的样式以手动包含 WS_MINIMIZEBOX 样式和 bam!,它现在按预期运行。

现在的问题是如何让它永久化。

我的第一反应是启动ResHacker,但问题是需要修改的样式是非对话框应用的主窗口的样式,所以ResHacker没有办法这样做。

接下来我尝试在十六进制编辑器中打开它,找到与标题栏对应的字符串的地址。然后我在 W32Dasm 中打开该文件并找到引用标题栏字符串地址的代码地址。我这样做是为了找到创建主对话框的位置,以便我可以修改传递给CreateWindow() 的样式。不幸的是,我在任何地方都找不到对titelbar 字符串的引用的对CreateWindow 的调用,而且我能找到的对CreateWindowEx 的调用似乎(显然)都不是用于创建主窗口的调用。

是否有一种简单/自动化的方式来修改主窗口的样式(假设是非对话框应用程序)?

【问题讨论】:

    标签: executable binaryfiles window-style


    【解决方案1】:

    您可以使用 OllyDBG 之类的调试器在使用 WinSpy++ 编辑后转储 exe 内存,然后使用该 exe 或比较文件以查看更改的位置,如果您想查看您错过了什么

    【讨论】:

      【解决方案2】:

      必须调用CreateWindow/Ex(),特别是如果它不是来自资源的对话。你只需要更加努力地寻找。我会使用 IDA 而不是 WinDasm。它将程序集反编译成更易于理解的代码,并且它有一个内置的调试器。您可以在标题字符串上放置一个断点,并实时查看哪些代码实际触及它,然后按照它返回访问代码。

      【讨论】:

        猜你喜欢
        • 2015-09-06
        • 2014-01-22
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多