如何修补exe安装文件

时间:2010-01-26 17:02:25

标签: patch

如何从安装文件中提取exe,修改其内容然后再次组装。 是否有工具或某种东西,或者有没有办法以编程方式执行此操作?

3 个答案:

答案 0 :(得分:1)

根据安装程序包的类型,可能有一些安装程序包编辑器。 (参见Josh Stodola对ORCA的建议,对于MSI类型包)。

否则,简而言之......

不容易......


安装文件通常具有CRC或其他摘要/校验和,使其能够在运行其设置逻辑本身之前断言其完整性。因此,一旦更改了安装程序包,其计算的CRC与存储的CRC不同,并且设置过程将中止。

假设上述问题不是问题,通常也可以限制可以应用于exe或更一般地应用于二进制文件的更改。最安全的变化是这些不会修改文件大小并基本上替换几个字节;有时补丁可能需要在文件的末尾(或在已知未使用的文件中的某个位置)添加一段逻辑,并从需要更改的现有逻辑的某个区域提供分支/跳转指令

一旦修补后的二进制文件可用(或者可能是一个全新的exe文件,例如,如果一个反编译了原始版本,修改了源代码并重新构建它),在安装程序中替换它的方式会有所不同,具体取决于安装类型包。再一般地说,安装程序/包通常包括各种“清单”,其中各种部分以某种类型的偏移或引用列出,接着是通常用ZIP或类似压缩格式压缩的各种部分。

替代方法......

而不是修改安装包,可能更容易引入一个额外的安装包,在原始安装包之后运行(这样的设置可以在整个安装包中“链接”),并且它改变了需要它的exe和其他二进制文件 这种方法可能无法通过确定修补二进制文件本身的正确方法来解决问题,但它消除了与原始安装程序包的结构和完整性控制设备相关的所有困难。

答案 1 :(得分:1)

本身不是.exe编辑器,但是我使用Orca对MSI安装程序文件进行了类似的操作(最值得注意的是,在XP 64位上成功安装了iTunes)。

答案 2 :(得分:0)

通常取决于如何构造安装文件。查看提供创建安装文件的软件的人提供的工具。当您查看这些工具时,您还应该检查它们用于修补的选项 - 通常更喜欢发布补丁而不是完整的工具包。

或者,如果你真的必须发布一个完整的工具包,为什么不重建整个工具包,然后发布呢?