我需要将一个c程序的二进制代码添加到c程序的另一个二进制文件中。我该怎么办? 我需要在我的c source中添加二进制内容。并使用该c源将该二进制内容附加到现有二进制文件。
答案 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),然后执行它。
(完整的解决方案取决于操作系统)