Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为nm-like命令[C+;+;]编写代码_C++_Linux_Reverse Engineering - Fatal编程技术网

C++ 为nm-like命令[C+;+;]编写代码

C++ 为nm-like命令[C+;+;]编写代码,c++,linux,reverse-engineering,C++,Linux,Reverse Engineering,出于对逆向工程的好奇,我正在考虑编写一个简单的程序(用C++编写),它将一个可执行文件作为输入,并生成作为该可执行文件源程序一部分的所有函数的名称 我该怎么做有什么建议吗 一步一步的方法将不胜感激 编辑: 平台linux和我关心可执行文件的格式。很大程度上取决于您的平台和您正在检查的代码的来源。如果要从中获取函数名,需要为正在反转的二进制文件创建一个符号表。有时,该表嵌入在二进制文件中(例如DLL中的导出查找表),但很多时候信息根本不存在 这个问题没有通用的解决方案。您至少需要将问题缩小到特定的

出于对逆向工程的好奇,我正在考虑编写一个简单的程序(用C++编写),它将一个可执行文件作为输入,并生成作为该可执行文件源程序一部分的所有函数的名称

我该怎么做有什么建议吗

一步一步的方法将不胜感激

编辑:

平台linux和我关心可执行文件的格式。

很大程度上取决于您的平台和您正在检查的代码的来源。如果要从中获取函数名,需要为正在反转的二进制文件创建一个符号表。有时,该表嵌入在二进制文件中(例如DLL中的导出查找表),但很多时候信息根本不存在

这个问题没有通用的解决方案。您至少需要将问题缩小到特定的平台,最好是特定的目标二进制类型

编辑:好的,根据您给出的规范,我猜您可能实际上关心的是二进制文件,而不是较旧的格式,这是相当罕见的。“a.out”仍然是GCC链接器的默认输出名称,但是实际的a.out二进制格式在Linux中已经很长时间没有被广泛使用了

在线上有很多很好的演练,也有一些快速搜索


希望这有帮助。

几乎不可能。这类数据不包含在绝大多数可执行文件中。可能是DLL。

为什么不直接查看nm命令的源代码呢?嗨,尼尔!,我在哪里可以搜索nm命令的来源..我试着用谷歌搜索。。也许任何人都可以告诉我应该是任何Linux发行版的源代码的一部分。nm属于gnu binutils,可以在这里查找源代码。但是我仍然更喜欢普通的纯英语而不是庞大的2K行源代码,因此,任何指导性的答案都不仅仅是受欢迎的:)这取决于他们是否被剥夺了权利——我想,正如你所说,绝大多数人都会被剥夺权利。事实证明,OP对这里并不感兴趣。