【发布时间】:2011-01-23 19:55:06
【问题描述】:
所以,我有一个由可执行 (exe) 文件和 DLL 组成的应用程序。有没有办法可以找出用于开发此软件的特定语言。我尝试在反汇编程序中打开它,但内容似乎是乱码。有什么想法吗?
【问题讨论】:
标签: reverse-engineering disassembly
所以,我有一个由可执行 (exe) 文件和 DLL 组成的应用程序。有没有办法可以找出用于开发此软件的特定语言。我尝试在反汇编程序中打开它,但内容似乎是乱码。有什么想法吗?
【问题讨论】:
标签: reverse-engineering disassembly
不太可能,除非它有一个重要的运行时库来提供它。例如VB 应用程序过去需要一个名称为 VB 的巨大 DLL,Visual C++ 应用程序通常需要安装 C++ 运行时。但是现代语言的目标是独立于语言的运行时。甚至 Java .class 文件也可能来自多种源语言。
【讨论】:
在十六进制编辑器中打开 .dll 或 .exe 并搜索“版权”一词。大多数编译器将运行时库的版权信息以明文形式放入可执行文件中。
获取 IDA 专业版。 http://www.hex-rays.com/idapro/ 这是处理二进制文件或进行逆向工程的 工具。它将能够找到运行时库,也可能找到语言。
可以在此处找到该工具的评估和免费软件版本:https://www.hex-rays.com/products/ida/support/download.shtml
【讨论】:
原则上,答案是否定的。然而,在实践中,只有几个选择:
something.dll,它可能是原生 dll 映像,这意味着它可能是用 C 或 C++ 编写的。Namespace.Something.dll,它可能是托管 dll,这意味着它是用某种 .NET 语言(C#、VB.NET 等)编写的mscoree.dll,那么它就是一个 .NET dll(即使它不遵循标准的 .NET 命名约定)。它还可能使用其他提供额外线索的特定于语言的 dll。【讨论】: