如何将DLL转换为C++代码?

如何将DLL转换为C++代码?

问题描述:

我知道将dll转换为C++代码是不可能的,所以我想尽可能多地收集它的细节。 这不是我的dll,所以我当然没有源代码。我应该使用哪个程序?如何将DLL转换为C++代码?

+1

一个流行的二进制逆向工程工具是IDA Pro - 有一个免费版本,它足以满足大多数基本需求。 – datenwolf 2013-03-01 01:36:29

+2

你对DLL的功能有一些了解吗?它有多大?你知道它原来写的是什么语言吗?你究竟在努力实现什么? – 2013-03-01 01:36:42

+1

我添加了一些“关键短语”作为标签。看看他们。 – 2013-03-01 01:48:28

好吧,如果你是熟练的,你可以拆卸的DLL和了解它的全部功能。这需要大量的时间,但如果你这样做,你可以通过手工将其反转回来。

否则,您可以通过使用类似的Dependency Walker工具来获取DLL和功能,这取决于和它导出的功能开始。从那里你可以找到你感兴趣的功能,并使用像IDA这样的反汇编程序来查看它们的功能。

+3

除了愚蠢的人在他们手上花费太多时间之外,没有人会扭转*一切*。你总是会喜欢IDA,并遵循你感兴趣的呼叫路径。此外,您可以在IDA中看到出口。不需要中介。 +1仍然 – 0xC0000022L 2013-03-01 02:30:54

+2

并非每个人都有IDA,或者想学习它。所以,我建议Dependency Walker作为获取有用信息的一种非常简单的方法。 (当然,如果你擅长IDA,你当然可以做任何事情:)) – nneonneo 2013-03-01 02:32:49

你需要一个PE文件查看器。这将告诉你从DLL中导出,你可以在.text部分获取数据来查看机器码。

您可以通过使用dumpbin工具中看到的导出的函数列表。如果C++函数被导出,您可以通过名称修改来推断参数。

你可以只是“开放”成为资源观看在Visual Studio中的文件从DLL中提取所有资源。如果该DLL是一个基于COM的DLL,那么类型库作为资源嵌入它的可能性很小。如果你有类型库,你可以#导入它来重建公共接口的头文件。

这是因为它得到一样好。

+1

我不同意这种说法就像它的效果一样好 - 这一切都取决于你有多少时间/技能/努力。见nneonneo的答案。 – JBentley 2013-03-01 01:49:47