【发布时间】:2010-05-29 10:45:52
【问题描述】:
c++ 的可执行文件将包含链接器、模块和其他内容,我想看看它的内容, 我正在使用 linux,如何查看 a.out 的内容? 浏览a.out应该使用哪个命令,文本编辑器不会显示内容......
【问题讨论】:
标签: c++ linux executable
c++ 的可执行文件将包含链接器、模块和其他内容,我想看看它的内容, 我正在使用 linux,如何查看 a.out 的内容? 浏览a.out应该使用哪个命令,文本编辑器不会显示内容......
【问题讨论】:
标签: c++ linux executable
您可以使用nm查看内部符号,使用objdump进行反汇编。举例:
objdump -D a.out | less
但是请注意,在将目标文件最终链接到可执行文件的过程中,许多符号和内部数据都会被删除,因此您将无法像处理目标文件那样理解结构。
如果你想编辑和修改可执行文件,我建议你使用hte 编辑器,它可以作为x86 可执行文件的反汇编程序。如果您是 debian/ubuntu 用户,则软件包名称为“ht”(不是“hte”)。
我还写了一个little elf disassembly library,它仍然不完整但很有趣。但是,您可以找到其他(更完整且可能更好)的实现!
【讨论】:
使用nm 命令,您可以检查二进制文件并查看定义了哪些符号。如果您想查看用于创建二进制文件的实际代码,您将需要一个反编译器,它只能部分重建原始代码,因为在编译过程中部分会固有地丢失。
【讨论】: