compiler-construction - 用于编译/反编译二进制数据文件的通用实用程序或库?

标签 compiler-construction binaryfiles binary-data decompiler utility

我有各种二进制文件格式,我需要将其转储为某种文本格式,编辑然后重新编译(可能是二进制格式的稍微不同的版本)。当然我可以用 C/C++ 编写一堆实用程序代码来做这种事情,并且可能利用一个库来处理文本方面的事情(XML 或 JSON 或其他),但这是一个不断出现的任务模式在我的工作中,在我看来,可能应该已经存在某种用于此类工作的通用工具。

显然需要某种方式来描述二进制文件格式 - 模式或类似的方式 - 这需要支持所有明显的数据类型(字符串、各种大小的整数、 bool 值等, float 会很好也),以及计数字段、长度字段、填充/对齐等内容,以处理您在数据文件中找到的所有典型内容。支持字节顺序也很有用,因为二进制文件的字节顺序可能与我们运行的平台不同。

如果这样的东西还不存在,我会感到非常惊讶,但到目前为止,我还没有通过谷歌运气(你如何简洁地描述这样的实用程序或库?)。我记得见过的与此最接近的东西是 Apple 在“经典”Mac OS 时代的资源编译器/反编译器实用程序。它们使用类 C 语法,在头文件中使用资源模板定义来描述各种二进制资源的格式,您可以在这种类 C 源语法和二进制资源之间进行编译/反编译。

最佳答案

BinX ,二进制 XML 描述语言,加上相应的库,似乎符合您的目的。

也可能感兴趣 Chapter 24. Practical: Parsing Binary FilesPractical Common Lisp这本书演示了如何在 150 行 Lisp 代码中编写用于解析(二进制)MP3 文件中的 ID3 标签的库。 *

* 如今,我可能不会使用 Lisp,而是更现代的函数式语言,如 Clojure .见Reading binary data in Clojure举个例子。

附言binary data librarybinary data file library 是 Google 的好关键字。

关于compiler-construction - 用于编译/反编译二进制数据文件的通用实用程序或库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146192/

相关文章:

javascript - 在 JavaScript 跨浏览器中将字符串(UTF-8)编码为二进制数据

c++ - Visual Studio 2010 C++ 编译器为类分配了错误的大小

javascript - ECMA脚本 :Harmony/ES6 to JavaScript compiler

c++ - 使用 clang llvm 检查变量是否在任意源位置具有范围

linux - fedora 29 Linux 上的二进制文件 "Eclipse C/C++ Stand-alone Debugger"在哪里

database - 如何将视频存储在 PostgreSQL 数据库中?

c - 是否有正则表达式为某种编程语言生成所有整数

visual-studio - 为什么TortoiseHg认为Resource.h是二进制文件?

linux - 从流中写入 PDF 二进制文件会产生格式错误的 PDF

android - 将图像转换为文本形式以通过 SMS 发送