How can I determine which开发者_如何学Python platform or programming language was used to build a particular Windows desktop application?
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.
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.
There are some options for specific situations, but in general, no, there is no one single and reliable way to do that.
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.
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?
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.
精彩评论