How can I determine which framework was used to bu

2019-03-30 10:26发布

问题:

How can I determine which platform or programming language was used to build a particular Windows desktop application?

回答1:

There are several ways to try and detect in which language a particular software was written. Usually, the tools that do that examine the PE Header and try to make an educated guess.

Sometimes authors compress/encrypt the PE in such way that makes this detection next to impossible.

There is an old tool called PEiD which can help you identify in which language was the software written.

PEiD http://i37.tinypic.com/ekqo1z.png



回答2:

The Dependency walker may also shed some light by showing all the dlls the application depends on, as well as the names of the exported methods.

alt text http://dependencywalker.com/snapshot.png



回答3:

There are some options for specific situations, but in general, no, there is no one single and reliable way to do that.



回答4:

ProcessExplorer from SysInternals can be useful. It can detect .NET applications, and it lists loaded DLLs, which can help if some of them are runtime support for a language or framework.

I happen to have Nokia PC Suite installed, and ProcessExplorer says it is not a .NET application. It has loaded MFC71U.DLL and MSVCR71.DLL, which I believe are from MFC - of course Nokia PC Suite could simply be using a component written in MFC. Also there are some strings inside the EXE which look like C printf strings to me.



回答5:

There are ways to narrow down the list to what language is used, but you cannot know all the 'hows'. Plus what if there are a number of developers on different platforms? ;)

Or better yet the app is a combination of languages?



回答6:

I wonder if techniques developed for natural language identification and authorship identification can be adapted to this problem. It seems to me an interesting enough research problem.

A somewhat similar question has already been posed.