如何从可执行文件中提取数组?
我想做这个问题的相反问题。
我将文件作为数组嵌入到可执行文件中,稍后我想从可执行文件中提取嵌入文件。
看起来 objcopy 在这里可能有用,但我还没有找到正确的咒语。
(编辑:澄清问题,我在最初的编辑中以某种方式删除了它的症结......)
I want to do the inverse of this question.
I am embedding a file into an executable as an array, and I would later like to extract the embedded file from the executable.
It seems like objcopy might be useful here but I haven't figured out the proper incantation yet.
(Edit: clarify question, I somehow removed the crux of it in editing originally...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为,如果将嵌入文件放在其自己的部分中,则可以使用 objcopy 将该部分提取到原始输出文件中。
查看 gcc 的
__attribute__((section("embedded_file") ))
或者,如果您使用链接器以其他方式将文件放入 exe 中,您应该能够以另一种方式将其放入另一个部分,但我不熟悉这样做。
If you place the embedded file within its own section you can use objcopy to extract that section into a raw output file, I think.
Look into gcc's
__attribute__((section("embedded_file") ))
Or if you are getting the file into the exe some other way using the linker you should be able to get it into another section another way, but I'm not familiar with doing that.
在数组的开头放置一个可识别的模式,以帮助您查找文件中的数据。
如果您要创建 Windows 可执行文件,请将数据放入可执行文件中的二进制资源中,而不仅仅是将其编码到数组中 - 然后您可以使用普通的 Windows 资源函数 (
FindResource
,LoadResource
等)来获取数据(尽管要正确工作比最初看起来应该要困难一些)。Put a recognizable pattern at the beginning of the array to help you find the data in the file.
If you're creating a Windows executable, put the data into a binary resource in the executable instead of just encoding it into an array -- you can then use normal Windows resource functions (
FindResource
,LoadResource
, etc.) to get the data (though this is a bit trickier to get working correctly than it initially seems like it should be).