The invention provides a method and a system using the runtime compiler identification, extraction of known binary files of different types and versions of the compiler runtime code, and the compiler structure become recognition database; access to identify the binary executable file; binary detection to identify the executable file is near the entrance point contains the compiler identifies the feature database runtime code, if it is, then the input binary executable file for the compiler type recognition of the output of a compiler to identify information; otherwise the binary executable file may be compressed if the type of encryption, encryption type, is to identify a binary executable file decryption after the treatment, then the compiler or recognition; to identify the binary executable file compiler does not recognize. The invention does not need to carry out a detailed analysis of the binary executable file, and only need to look at the entry point of the program, so as to confirm the detailed compiler type and version information.
【技术实现步骤摘要】
本专利技术涉及计算机网络安全领域,特别涉及一种利用运行时库识别编译器的方法及系统。
技术介绍
在计算机程序设计领域,运行时库是一种被编译器用来实现编程语言内置函数,以提供该语言程序运行时(执行)支持的一种特殊的计算机程序库。运行时库一般包括基本的输入输出或是内存管理等支持。运行时库由编译器决定,以面向编程语言,提供其最基本的执行时需要,比如VisualC++需要复杂的运行时库支持而C的运行时库则相对简单。运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于新观念。所以这个时期的C运行时库都是单线程的。随着操作系统多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使用了多个全局变量(例如errno)和静态变量,这可能在多线程程序中引起冲突。假设两个线程都同时设置errno,其结果是后设置的errno会将先前的覆盖,用户得不到正确的错误信息。因此,后续各个编译器的生产商在不同平台上都开发了对应的运行时库,但大部分实现都是与各个平台有关的。如VisualC++提供了两种版本的C运行时库。一个版本供单线程应用程序调用,另一个版本供多线程应用程序调用。VisualC++提供的多线程运行时库又分为静态链接库和动态链接库两类,而每一类运行时库又可再分为debug版和release版,因此VisualC++共提供了6个运行时库。目前对于可执行文件的编译器的识别主要依靠在可执行文件中提取一段特征,如从入口 ...
【技术保护点】
一种利用运行时库识别编译器的方法,其特征在于,包括:提取已知不同类型及版本编译器编译出的二进制文件的运行时库特征码;将提取到的运行时库特征码构造成为编译器识别特征库;获取待识别的二进制可执行文件;检测待识别的二进制可执行文件入口点附近是否包含编译器识别特征库中的运行时库特征码,如果是,则所述待识别的二进制可执行文件编译器类型为可识别的,输出编译器信息;否则判断所述待识别的二进制可执行文件是否为压缩加密类型;判断所述待识别的二进制可执行文件是否为压缩加密类型;如果是,则对待识别的二进制可执行文件进行解密处理后,再进行编译器识别;否则所述待识别的二进制可执行文件的编译器无法识别。
【技术特征摘要】
1.一种利用运行时库识别编译器的方法,其特征在于,包括:提取已知不同类型及版本编译器编译出的二进制文件的运行时库特征码;将提取到的运行时库特征码构造成为编译器识别特征库;获取待识别的二进制可执行文件;检测待识别的二进制可执行文件入口点附近是否包含编译器识别特征库中的运行时库特征码,如果是,则所述待识别的二进制可执行文件编译器类型为可识别的,输出编译器信息;否则判断所述待识别的二进制可执行文件是否为压缩加密类型;判断所述待识别的二进制可执行文件是否为压缩加密类型;如果是,则对待识别的二进制可执行文件进行解密处理后,再进行编译器识别;否则所述待识别的二进制可执行文件的编译器无法识别。2.如权利要求1所述的方法,其特征在于,所述编译器识别特征库中包括:运行时库特征码、偏移位置、编译器类型、编译器版本及编译器选项。3.如权利要求2所述的方法,其特征在于,所述检测待识别的二进制可执行文件入口点附近是否包含编译器识别特征库中的运行时库特征码具体为:检测待识别的二进制可执行文件中入口点偏移位置中是否包含运行时库特征码。4.如权利要求1所述的方法,其特征在于,所述输出的编译信息包括:编译器类型、编译器版本及编译器选项。5.一种利用运行时库识别编译器的系统,其特征...
【专利技术属性】
技术研发人员:黄磊,贺磊钢,童志明,何公道,
申请(专利权)人:哈尔滨安天科技股份有限公司,
类型:发明
国别省市:黑龙江;23
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。