是否可以替换嵌入式资源[例如Linux [ELF]二进制文件中的样式,图像,文本]?
我注意到我可以更改文本,但如果我输入更多文本或删除文本,则会出现分段错误。我还没有通过ELF规范,但我想知道是否有可能。
我设法使用mediaextract从二进制文件中提取图像 项目,但我需要做相反的事情而不破坏二进制结构。
答案 0 :(得分:0)
此答案特定于Qt的资源系统(.qrc,rcc)。
当前,Qt始终将数据直接存储在可执行文件中,即使在Windows,macOS和iOS上,操作系统也为资源提供本机支持。这可能会在将来的Qt版本中更改。
是的,Qt资源包含在二进制文件中。
ban
1ban
生成一个.qrc文件会生成一个.cpp文件,该文件包含(主要是)简单的char数组,这些char数组表示资源数据,资源名称和其他一些元数据。
编译这样的.cpp文件会在二进制文件中创建字节字段。
您可以在二进制文件中更改此类资源,但只能使用非常有限的方式。
对于初学者,如果二进制文件包含任何类型的自检(例如,对数据节进行哈希处理并将其与某些预先计算的哈希进行比较),则将无法以合理的方式更改数据。
如果您的数据与原始数据的字节长度不同,则不能简单地替换它,因为这会改变二进制文件的内部布局并使相对地址无效。
如果替换为较短的字符串,则可能会在结尾处加零填充。
默认情况下,资源是压缩的(ZIP格式)。可以关闭压缩。