在DLL中打印函数的代码

时间:2011-04-14 23:21:23

标签: c++ dll printing

我想在DLL中打印函数的代码。

我加载了dll,我有所需功能的名称,下一步是什么?

谢谢!

4 个答案:

答案 0 :(得分:3)

实际上,接下来是获取代码。你在DLL中拥有的是 object 代码 - 处理器执行的形式的二进制代码,不准备打印。

可以反汇编DLL中的内容。如果你习惯使用汇编语言,这可能很有用,但它肯定原始源代码(也可能是非常接近它的任何东西)。如果你想拆卸它,在你的程序中加载它不是(通常)一个非常好的起点。尝试打开VS命令行并使用dumpbin /disasm yourfile.dll。准备好输出 lot ,除非相关的DLL 真的很小。

答案 1 :(得分:1)

在DLL中检索有关所述函数的实际实现功能的提示的唯一选择是对组装的二进制表示形式进行逆向工程。这意味着您几乎必须使用反汇编程序(IDA Pro或调试程序,例如OllyDbg)将操作码转换为实际的程序集助记符,然后只需按照它运行并尝试了解其运行方式的详细信息。

请注意,由于它是从C / C ++编译的,因为优化和流程的性质,流程中会丢失大量的数据;由此产生的程序集可能(并且可能会)看起来神秘而且毫无意义,但它的工作方式与程序员用更高级语言编程的方式完全相同。这并不容易。需要花时间。你需要运气和神经。但这是可行的。 :)

答案 2 :(得分:0)

无。 DLL是编译的二进制代码;你只能通过下载它并知道函数的名称来获取源代码。

如果这是一个.NET程序集,您可以使用反射来获取源代码。但是,你提到了C ++,所以这是值得怀疑的。

答案 3 :(得分:-1)

查看此http://www.cprogramming.com/challenges/solutions/self_print.html以及此Program that prints its own code?和此http://en.wikipedia.org/wiki/Quine_%28computing%29

我不确定它是否会做你想要的,但我想它可能对你有所帮助。