当前位置:  开发笔记 > 编程语言 > 正文

查找使用的编程语言

如何解决《查找使用的编程语言》经验,为你挑选了3个好方法。

什么是找出应用程序编写的编程语言的最简单方法?我想从程序exe文件中知道它的vb或c ++或delphi或.net等.



1> John T..:

试试PEiD

当然,如果他们使用包装工,首先需要进行一些拆包:)



2> Ed Guiness..:

启动它并检查它与Process Explorer一起使用的运行时DLL.

如果这不能立即显现,请在Web上搜索对这些DLL的引用.

大多数反汇编程序(包括我认为的Olly)可以很容易地向您显示EXE或DLL中包含的文本,这有时也可以提供线索.Delphi类型通常以T为前缀,如TMyClass.

如果它是一个没有DLL引用且没有文本的小型可执行文件,那么您可能是SOL.那时你需要寻找特定编译器的习语,而且主要是猜测.



3> Blue Toque..:

有一种艺术可以检测程序编写的语言.有可能但没有严格的规则.它需要很多经验(并且它还会导致问题"你为什么要...",但这里有一些关于如何去做的想法.

您正在寻找的是"签名".签名可以是编译器包含的某个字符串,对正在使用的编程工具中非常常见的API的引用,或者甚至是正在使用的工具所共有的编程风格,在包含的字符串中可见在申请中.

此外,还有部署应用程序的样式:部署目录中的各种配置文件,dll和程序集,甚至图像,目录或图标.

包含在自启动可执行文件中的Java应用程序将包含对java库的引用,并且可能在同一目录中包含某些库或文件,这些库或文件指示它是java.

如其他答案中所示,托管程序集也会显示某些符号:您可以在Reflector等中打开它.虽然编译后c#和VB是"可互换的"是正确的,但它们是完全相同的.如果您使用Reflector反汇编VB代码,您将经常看到程序集引用Microsoft.VisualBasic.dll程序集.您将能够区分Mono应用程序,因为它们很可能包含对单声道程序集的引用.

许多编译器以某种方式汇编和链接代码,并留下足迹.例如,使用Process Explorer中的 "strings:tab"检查窗口可执行文件,您将看到很多字符串.使用这些字符串,您可以确定编程样式,调用方法,错误或跟踪方法.

一个例子是编译器使用不同的本地化机制:Microsoft将本地化的字符串存储在XML文件或资源文件中.其他编译器将使用不同的策略.

另一个例子是c ++ 名称修改.该CodeWarrior的编译器使用不同的算法来裂伤比Visual Studio中调用的成员变量和函数的名称.

我想你可以写一本关于准确确定任何可执行文件的血统的书.这个主题可能被称为"编程考古学".

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有