通过编辑二进制来修改窗口样式?

时间:2012-12-26 01:10:11

标签: executable binaryfiles window-style

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

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

现在的问题是如何使这个永久化。

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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