我有一个命令行可执行的,会改变的一些位于一个文件,我想用我的程序。是否有可能创建自己的可执行的,使用该工具并分发只有一个可执行的?

[编辑]澄清:

命令行的工具,需要一个偏移和某些位和改变比特在这种抵消在一个特定文件。所以我想创建一个补丁的应用程序的变化定位,以一个具体的值,因此我可以做什么,我写的东西喜欢的一批文件做到这一点,但我想创建一个可执行的,它,即嵌入工具到包装程序,要求其与特定价值观。

我可以代码装在(windows)c\c++、asm但没有。净请。

有帮助吗?

解决方案

滚动自己的程序实现比编写包装器更容易;这听起来像是微不足道的 - 只需打开文件,寻找合适的位置,写下你的位,关闭文件,你就完成了。

其他提示

最简单的方法是将此exe嵌入到您自己的exe中并将其写入磁盘以运行它。

您可以将可执行文件作为二进制流资源添加到可执行文件中,当您需要它时,可以将其提取到临时文件夹中,并使用临时文件创建新进程。

执行此操作所需的确切代码取决于您是编写.Net还是C ++代码。

简短回答:不。

简短回答:除非安装程序或自解压存档可执行,否则不会。

更长,更具推测性的答案:如果文件系统支持备用数据流,您可以将包含该实用程序的流添加到您的程序中,然后您的程序可以访问它自己的备用数据流,在您需要时提取该实用程序。 Ahaha。

您可以将一个可执行文件附加到另一个可执行文件的末尾,并编写一些代码以将其解压缩到临时文件夹。

之前我做过类似的事情,但配置文件和一些位图附加到Windows中的EXE。我这样做的方法是首先将我的东西附加到EXE的末尾,然后在其后写一个小结构,其中包含数据的文件偏移量,在您的情况下,它将是第二个exe的偏移量。

运行你的应用程序时,寻找文件的末尾减去结构的大小,提取文件偏移量并将第二个exe文件复制到一个临时文件夹,然后启动它。

好的,这里有一些更详细的请求。这是一些用于创建组合EXE的伪代码。这是在编译主EXE后运行的一个小实用程序:

Open destination file
Open main exe as a binary file
Copy main exe to destination file
offset = size of main exe
Open 2nd exe as a binary file
Copy 2nd exe to the output file
Write the offset to the output file

现在进行提取程序。这将在您的主要EXE中进行:

Find the location of our own EXE file (GetModuleFileName() under Windows)
Open the file in binary mode
Seek to the end minus sizeof(offset) (typically 4 bytes)
Read the offset value
Seek to the offset position
Open a temporary file in binary mode
Read bytes from the main EXE and write to the temporary file
Launch the temporary file

我认为为您的目的执行此操作的最简单方法可能是使用自解压可执行程序包。例如,使用像 Paquet Builder 这样的工具来打包exe(以及任何其他工具)您想要的文件,并且可以配置为在用户解压缩自解压缩的可执行文件时调用exe或批处理文件或其他任何内容。

如果exe构建为可重定位的(essentiall linker flag / fixed:no),你可以在它上面实际加载一个LoadLibrary,获取基地址,设置一个调用链并调用(跳转)到它中。这是不值得的,并且很少有exe这样构建,所以你必须有代码来重建它,此时你不会参加这个练习。

所以......不。

我更喜欢开发人员,他不介意用C / C ++ / asm编写,但是'不是.net' - 但显然是被fopen / fseek / fwrite所阻碍 - 因为那是你描述的所有程序听起来像是在做。

我认为这也是可能的使用 AutoIt的FileInstall功能.为这个你就必须设置AutoIt,创建一个脚本用的FileInstall功能,包括人exe的,然后使用f。i。的 功能RunWait 要执行它们。汇编到一个exe和你应该做的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top