AIX下如何查看可执行内容

How to see executable content under AIX

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

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

我看过 "nm" 命令,用 "cut" 剪切我想要的东西 我可以输出 .c 文件,但我无法读取里面的版本,因为我不有源文件。 我也见过 "objdump" 命令,但我不能在 AIX 下尝试它(当然......)是否有等效命令? objdump 是否可以知道我想要什么?

感谢您的帮助和关注:)

您无法从已编译的可执行文件中取回源代码。不过,您可以从中获得各种信息。例如,您可以获得 databsstext 部分的大小(通过 size)命令。您还可以为 AIX 安装 Linux 实用程序,这将为您提供更多可以阐明可执行文件的工具(请参阅 What is the equivalent command for objdump in IBM AIX)。最近的 AIX 二进制文件采用称为 XCOFF64 或 XCOFF32 的格式(两者在维基百科上都有很好的文章)。

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

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

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

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