代码之家  ›  专栏  ›  技术社区  ›  sud03r

NM+命令[C++]的编写代码

  •  2
  • sud03r  · 技术社区  · 14 年前

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

    我该怎么做呢?

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

    编辑:
    平台linux和我所关心的 a.out 格式化可执行文件。

    2 回复  |  直到 12 年前
        1
  •  3
  •   Bill the Lizard    12 年前

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

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

    编辑:好的,按照你的规格,我 猜测 你可能真的很关心 ELF 二进制文件而不是旧的 a.out 格式,这是相当罕见的。”a.out“仍然是gcc链接器的默认输出名,但是实际的a.out二进制格式在linux中已经很长时间没有被普遍使用了。

    有很多很好的演练 ELF structure 可在线使用,一些快速搜索结果显示 ready-made example of reading the ELF .symtab 也。

    希望这有帮助。

        2
  •  0
  •   Puppy    14 年前

    几乎不可能。这种数据不包含在绝大多数可执行文件中。也许吧。