0

我有一个关于可执行文件和 C 的问题。

如果您必须知道可执行文件的内容(每个 .c 文件在注释中的版本),但您只有可执行文件,那么您没有源代码。你如何进行?

我已经看到“nm”命令,用“cut”剪切我想要的东西,我可以在输出 .c 文件中使用,但我无法读取里面的版本,因为我没有源文件。我也看到了“objdump”命令,但我不能在 AIX 下尝试它(当然......)有没有等价的?objdump 有可能知道我想要什么吗?

感谢您的帮助和关注 :)

4

3 回答 3

0

您无法从已编译的可执行文件中获取源代码。不过,您可以从中获得各种信息。例如,您可以(通过)命令获取databss和部分的大小。您还可以安装适用于 AIX 的 Linux utils,它会为您提供更多工具来了解您的可执行文件(请参阅What is the equivalent command for objdump in IBM AIX)。最近的 AIX 二进制文件采用称为 XCOFF64 或 XCOFF32 的格式(在 wikipedia 上都有很好的文章)。textsize

于 2015-09-16T15:48:20.480 回答
0

听起来您在描述what (1) 和ident (1) 命令,用于查找作为字符串嵌入在可执行文件中的文件版本。

@(#)那些包含or的字符串$Id被旧时代的版本控制系统 SCCS 和 RCS 插入到源代码文件中。

于 2015-09-16T17:04:41.097 回答
0

我找到了一种方法来做我想做的事。使用 '#pragma comment(user, "comment")' 行(我不知道这一行)它在编译时写入并将这个“comment”链接到二进制文件的末尾,所以我在每个 . c 文件。通过解析可执行文件,我能够仅使用二进制文件恢复每个文件的版本。

再次感谢您的帮助和您的时间:)。

于 2015-09-18T09:16:53.850 回答