AIX下如何查看可执行内容
How to see executable content under AIX
我有一个关于可执行文件和 C 的问题。
如果您必须知道可执行文件的内容(注释中编写的每个 .c 文件的版本),但您只有可执行文件,却没有源代码。你如何进行?
我看过 "nm" 命令,用 "cut" 剪切我想要的东西 我可以输出 .c 文件,但我无法读取里面的版本,因为我不有源文件。
我也见过 "objdump" 命令,但我不能在 AIX 下尝试它(当然......)是否有等效命令? objdump 是否可以知道我想要什么?
感谢您的帮助和关注:)
您无法从已编译的可执行文件中取回源代码。不过,您可以从中获得各种信息。例如,您可以获得 data
、bss
和 text
部分的大小(通过 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 文件中。通过对可执行文件的解析,我能够仅使用二进制文件恢复每个文件的版本。
再次感谢您的帮助和您的宝贵时间:)。
我有一个关于可执行文件和 C 的问题。
如果您必须知道可执行文件的内容(注释中编写的每个 .c 文件的版本),但您只有可执行文件,却没有源代码。你如何进行?
我看过 "nm" 命令,用 "cut" 剪切我想要的东西 我可以输出 .c 文件,但我无法读取里面的版本,因为我不有源文件。 我也见过 "objdump" 命令,但我不能在 AIX 下尝试它(当然......)是否有等效命令? objdump 是否可以知道我想要什么?
感谢您的帮助和关注:)
您无法从已编译的可执行文件中取回源代码。不过,您可以从中获得各种信息。例如,您可以获得 data
、bss
和 text
部分的大小(通过 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 文件中。通过对可执行文件的解析,我能够仅使用二进制文件恢复每个文件的版本。
再次感谢您的帮助和您的宝贵时间:)。