我知道这似乎是一个非常明显的问题,但请耐心等待。
我有这个用 Borland Delphi 2010 编写的编译游戏可执行文件,它基于 Win32 平台并在 x86 中编译。它使用 Windows 窗体作为 UI。
我大量搜索并使用 Resource Hacker 和 IDR 来完成该程序。两者似乎都能很好地检测所有 Windows 窗体(IDR 好一点),我可以在这里查看原始结构:
这里有两种类型的定义:Picture.Data& Bitmap。尽管它们仍然是位图,但似乎两者的格式略有不同。
这是一个带有位图的示例表单(form_menu):https ://pastebin.com/raw/r81sJRyq
这是一个带有 Picture.Data (form_submenu) 的示例表单:https ://gist.githubusercontent.com/sjain882/d33e261480d0f13c442ffb4b84d1d1ed/raw/0d188b2ed1673757e512236672/c6736672c8882c673c675c670csubmend
向下滚动到Bitmap或Picture.Data区域。这里有十六进制图像的 ASCII 表示。事实证明,Delphi 有自己的自定义图像标题,这在 Bitmap 和 Picture.Data(后者是07 54 42 69 74 6D 61 70)之间有所不同。
然而,这是整个事情的标题,它似乎是一堆位图聚集在一起,在一个 {} 括号区域中。位图本身具有42 4D.
所以...考虑到所有这些信息,我在 IDA Pro 中打开了程序集并搜索了这些标题,许多不同的类型,不同的长度。但我发现的只是这个:
鉴于这个“标题”之后是什么,我相信它只是一些字符串,高度怀疑它是一个实际的位图。
所以,这让我认为 Windows 窗体在某处有自己的编码,而不仅仅是存储原始位图。
有什么好的方法可以代替这些吗?我真的很感激任何想法。我遇到了如何在 exe 中替换位图(图像)?,但没有什么结果......
如果我可以更改整个窗口形式(如框的尺寸等)和图像格式,以允许透明度/alpha,那也太棒了!
提前致谢!


