首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以跨平台的方式查找c二进制文件的函数名最简单的方法是什么?

以跨平台的方式查找c二进制文件的函数名最简单的方法是什么?
EN

Stack Overflow用户
提问于 2008-09-15 20:20:28
回答 8查看 540关注 0票数 1

我想写一个小工具来调用C共享库中的任意函数。用户应该能够列出所有导出的函数,类似于objdump或nm所做的。我检查了这些实用程序的源代码,但它们令人生畏。在google上找不到足够的信息,如果dl库也有这个功能的话。

(澄清编辑:我不想只调用一个预先知道的函数。我将非常感谢您的答案中的示例片段。)

EN

回答 8

Stack Overflow用户

发布于 2008-09-15 20:28:41

这可能与您正在寻找的内容很接近:http://python.net/crew/theller/ctypes/

票数 2
EN

Stack Overflow用户

发布于 2008-09-15 20:33:38

好的,我会说一点关于Windows的事情。从DLL导出的C函数不包含有关类型、名称或参数数量的信息--我也不相信您可以确定给定函数的调用约定。

为了进行比较,可以看看National Instrument的LabVIEW编程环境。您可以从DLL导入函数,但在使用给定函数之前,必须手动键入参数的类型和名称。如果这个限制是可以的,请编辑您的问题以反映这一点。

我不知道*nix环境下有什么是可能的。

编辑:关于您的澄清。如果你事先不知道函数是什么,你在Windows上就很糟糕了,因为通常你不能确定函数接受的参数的数量和类型。

票数 2
EN

Stack Overflow用户

发布于 2008-09-15 20:34:08

你可以试试ParaDyn的SymtabAPI。它可以让你抓取共享库(或可执行文件)中的所有符号,并查看它们的类型、偏移量等。所有这些都封装在一个相当不错的C++接口中,可以在很多平台上运行。它还提供了对二进制重写的支持,您可以使用二进制重写在运行时执行您正在讨论的操作。

网页在这里:

http://www.paradyn.org/html/symtab2.1-features.html

文档在这里:

http://ftp.cs.wisc.edu/paradyn/releases/release5.2/doc/symtabProgGuide.21.pdf

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档