如何在c源中存储c可执行二进制文件?

时间:2018-05-02 06:44:20

标签: c

我需要将一个c程序的二进制代码添加到c程序的另一个二进制文件中。我该怎么办? 我需要在我的c source中添加二进制内容。并使用该c源将该二进制内容附加到现有二进制文件。

2 个答案:

答案 0 :(得分:1)

在类Unix(包括Linux)上,您可以使用xxd

xxd -i program

这会生成一个头文件,文件内容为char数组,并将其嵌入到程序中。

在Windows上,您可以将程序作为资源嵌入。在.rc中,使用200作为资源ID:

200 RDCDATA "program.exe"

然后在你的程序中:

HANDLE resinfo = FindResource(instance, MAKEINTRESOURCE(200), RT_RCDATA);
HANDLE reshandle = LoadResource(instance, resinfo);
void *data = LockResource(reshandle);
DWORD datasz = SizeOfResource(instance, resinfo);

在任何一种情况下,您都需要将文件写出到某个位置才能运行它。别忘了在Unix上设置可执行位。

答案 1 :(得分:0)

我确信可以指示链接器二进制文件是可执行文件的资源,因此它将包含在图像中。

我也确信可执行文件可以访问资源并将其写出来,将其命名为操作系统的可执行文件(Windows / Linux / Mac),然后执行它。

(完整的解决方案取决于操作系统)