CN105468661A - 一种查找elf文件中符号信息的方法及系统 - Google Patents

一种查找elf文件中符号信息的方法及系统 Download PDF

Info

Publication number
CN105468661A
CN105468661A CN201410844838.9A CN201410844838A CN105468661A CN 105468661 A CN105468661 A CN 105468661A CN 201410844838 A CN201410844838 A CN 201410844838A CN 105468661 A CN105468661 A CN 105468661A
Authority
CN
China
Prior art keywords
file
dynamicsegment
resolving
information
symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410844838.9A
Other languages
English (en)
Inventor
徐浩
袁海涛
潘宣辰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Antian Information Technology Co Ltd
Original Assignee
Wuhan Antian Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Antian Information Technology Co Ltd filed Critical Wuhan Antian Information Technology Co Ltd
Priority to CN201410844838.9A priority Critical patent/CN105468661A/zh
Publication of CN105468661A publication Critical patent/CN105468661A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种查找ELF文件中符号信息的方法及系统,首先读取ELF文件,获取文件头部结构,解析文件头部结构获取Program?Header,根据Program?Header可找到DYNAMIC?Segment,遍历DYNAMIC?Segment获得符号表、Hash表和字符串表,最终解析符号表得到符号名、符号类型、起始偏移及大小信息。通过本方法解决了传统的解析方法只对正常的ELF文件有效,对经过特殊处理,缺失节信息的ELF文件则无法找到其符号信息的技术问题。

Description

一种查找ELF文件中符号信息的方法及系统
技术领域
本发明涉及网络安全技术领域,尤其涉及一种查找ELF文件中符号信息的方法及系统。
背景技术
ELF即ExecutableandLinkableFormat,最初是由UNIX系统实验室开发并发布的,作为应用程序二进制接口的一部分,目前广泛应用在各种Linux系统上,例如目前热门的Android平台。越来越多的Android应用采取了大量的Native开发来保护其核心逻辑,而Native开发的方式即使用C等语言编写一些ELF格式的模块,相比Java代码,Native代码逆向成本较高。
对于正常ELF文件来说,常见的解析节信息的方法十分有效,但越来越多的软件对其ELF文件进行了特殊处理以防逆向,导致了常见的解析方法失效。
发明内容
针对上述技术问题,本发明提供了一种查找ELF文件中符号信息的方法及系统,该方法通过对文件头部结构的深度解析,最终得到符号名、符号类型、起始偏移及大小信息。对于以往的ELF文件来说,常见的解析节信息十分有效,若面对进行了特殊处理以防逆向的ELF文件,常见的解析方法则会失效。本发明针对一般节信息缺失的ELF动态链接库文件,可有效找到其符号表。
一种查找ELF文件中符号信息的方法,包括:
读取ELF文件,获取文件头部结构;
解析文件头部结构,获取ProgramHeader;
解析ProgramHeader,获取DYNAMICSegment;
解析DYNAMICSegment,获取符号表;
解析符号表,得到符号名、符号类型、起始偏移及大小信息。
进一步的,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。
一种查找ELF文件中符号信息的系统,包括:
读取文件模块,用于读取ELF文件,获取文件头部结构;
解析头部结构模块,用于解析文件头部结构,获取ProgramHeader;
解析ProgramHeader模块,用于解析ProgramHeader,获取DYNAMICSegment;
解析DYNAMICSegment模块,用于解析DYNAMICSegment,获取符号表;
解析符号表模块,用于解析符号表,得到符号名、符号类型、起始偏移及大小信息。
进一步的,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。
本发明涉及一种查找ELF文件中符号信息的方法,本方法通过其加载时所必须的ProgramHeader信息找到所需的DYNAMICSegment,再通过DYNAMICSegment找到符号表、Hash表和字符串表,解析符号表得到符号信息。本方法克服了一般缺失节信息的ELF动态链接库文件无法有效的找到其符号表及符号信息的问题,进而提高了快速解析ELF文件找到符号信息的效率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种查找ELF文件中符号信息的方法实施例流程图;
图2为本发明提供的一种查找ELF文件中符号信息的系统实施例结构图。
具体实施方式
本发明给出了一种查找ELF文件中符号信息的方法及系统,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供了一种查找ELF文件中符号信息的方法,如图1所示,包括:
S101读取ELF文件,获取文件头部结构;
S102解析文件头部结构,获取ProgramHeader;
从文件头部结构中获得段偏移、段表节点大小和段表节点个数;
S103解析ProgramHeader,获取DYNAMICSegment;
当ProgramHeader中的p_type为PT_DYNAMIC时,该Segment为DYNAMICSegment,此时ProgramHeader中的p_offset和p_filesz为DYNAMICSegment的段偏移和段大小;
S104解析DYNAMICSegment,获取符号表;
当DYNAMICSegment中节点d_tag为DT_SYMTAB时,该节点联合结构中的d_ptr为符号表偏移;
S105解析符号表,得到符号名、符号类型、起始偏移及大小信息。
优选地,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息;
当DYNAMICSegment中节点d_tag为DT_HASH时,该节点联合结构中的d_ptr为哈希表偏移;
当DYNAMICSegment中节点d_tag为ST_STRTAB时,该节点联合结构中的d_ptr为字符串表;
字符串表中储存符号名,Hash表用于找到符号表大小。
本发明还提供了一种查找ELF文件中符号信息的系统,如图2所示,包括:
读取文件模块201,用于读取ELF文件,获取文件头部结构;
解析头部结构模块202,用于解析文件头部结构,获取ProgramHeader;
解析ProgramHeader模块203,用于解析ProgramHeader,获取DYNAMICSegment;
解析DYNAMICSegment模块204,用于解析DYNAMICSegment,获取符号表;
解析符号表模块205,用于解析符号表,得到符号名、符号类型、起始偏移及大小信息。
优选地,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。
综上所述,本发明涉及一种查找ELF文件中符号信息的方法。本方法通过读取ELF文件的头部结构,从文件的头部结构中提取段偏移、段表节点大小和段表节点个数信息从而找到DYNAMICSegment,再通过遍历DYNAMICSegment找到符号表、Hash表和字符串表,解析符号表,此时可以得到符号名、符号类型、起始偏移及大小信息。传统的解析节信息的方法只能对正常的ELF文件有效,直接解析其头部中描述符号表信息的节信息部分获得符号信息。而经过特殊处理的ELF文件其符号表的节信息部分缺失,则上述方法无法解析到该ELF文件的符号表,导致了常见的解析方法失效。本发明针对一般节信息缺失的ELF文件,可有效的找到其符号表,进而找到其符号信息。
以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。

Claims (4)

1.一种查找ELF文件中符号信息的方法,其特征在于:
读取ELF文件,获取文件头部结构;
解析文件头部结构,获取ProgramHeader;
解析ProgramHeader,获取DYNAMICSegment;
解析DYNAMICSegment,获取符号表;
解析符号表,得到符号名、符号类型、起始偏移及大小信息。
2.如权利要求1所述的方法,其特征在于,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。
3.一种查找ELF文件中符号信息的系统,其特征在于:
读取文件模块,用于读取ELF文件,获取文件头部结构;
解析头部结构模块,用于解析文件头部结构,获取ProgramHeader;
解析ProgramHeader模块,用于解析ProgramHeader,获取DYNAMICSegment;
解析DYNAMICSegment模块,用于解析DYNAMICSegment,获取符号表;
解析符号表模块,用于解析符号表,得到符号名、符号类型、起始偏移及大小信息。
4.如权利要求3所述的系统,其特征在于,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。
CN201410844838.9A 2014-12-31 2014-12-31 一种查找elf文件中符号信息的方法及系统 Pending CN105468661A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410844838.9A CN105468661A (zh) 2014-12-31 2014-12-31 一种查找elf文件中符号信息的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410844838.9A CN105468661A (zh) 2014-12-31 2014-12-31 一种查找elf文件中符号信息的方法及系统

Publications (1)

Publication Number Publication Date
CN105468661A true CN105468661A (zh) 2016-04-06

Family

ID=55606364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410844838.9A Pending CN105468661A (zh) 2014-12-31 2014-12-31 一种查找elf文件中符号信息的方法及系统

Country Status (1)

Country Link
CN (1) CN105468661A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354536A (zh) * 2016-08-31 2017-01-25 北京奇虎科技有限公司 在Windows系统中加载Linux系统ELF文件的方法及装置
CN106528445A (zh) * 2016-08-17 2017-03-22 中国航空工业集团公司西安飞行自动控制研究所 一种飞控计算机分区变量自适应监测与激励方法
CN106650327A (zh) * 2016-11-24 2017-05-10 湖南鼎源蓝剑信息科技有限公司 基于动态恢复so文件的Android应用加固方法
CN109683900A (zh) * 2018-11-14 2019-04-26 浙江零跑科技有限公司 针对elf文件调试信息的通用上位机符号查找与解析方法
CN109828758A (zh) * 2018-12-05 2019-05-31 苏州蜗牛数字科技股份有限公司 一种so文件的解析方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251799A (zh) * 2008-04-16 2008-08-27 中兴通讯股份有限公司 管理实现的方法和装置
CN101271399A (zh) * 2008-05-07 2008-09-24 浙江大学 在嵌入式系统剪裁可重定位的elf文件的方法
US8719808B1 (en) * 2010-01-27 2014-05-06 Altera Corporation Method and apparatus for using object files to provide reliable program operation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251799A (zh) * 2008-04-16 2008-08-27 中兴通讯股份有限公司 管理实现的方法和装置
CN101271399A (zh) * 2008-05-07 2008-09-24 浙江大学 在嵌入式系统剪裁可重定位的elf文件的方法
US8719808B1 (en) * 2010-01-27 2014-05-06 Altera Corporation Method and apparatus for using object files to provide reliable program operation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"《深入Linux内核架构》" *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528445A (zh) * 2016-08-17 2017-03-22 中国航空工业集团公司西安飞行自动控制研究所 一种飞控计算机分区变量自适应监测与激励方法
CN106528445B (zh) * 2016-08-17 2019-10-18 中国航空工业集团公司西安飞行自动控制研究所 一种飞控计算机分区变量自适应监测与激励方法
CN106354536A (zh) * 2016-08-31 2017-01-25 北京奇虎科技有限公司 在Windows系统中加载Linux系统ELF文件的方法及装置
WO2018040270A1 (zh) * 2016-08-31 2018-03-08 北京奇虎科技有限公司 在Windows系统中加载Linux系统ELF文件的方法及装置
CN106650327A (zh) * 2016-11-24 2017-05-10 湖南鼎源蓝剑信息科技有限公司 基于动态恢复so文件的Android应用加固方法
CN109683900A (zh) * 2018-11-14 2019-04-26 浙江零跑科技有限公司 针对elf文件调试信息的通用上位机符号查找与解析方法
CN109828758A (zh) * 2018-12-05 2019-05-31 苏州蜗牛数字科技股份有限公司 一种so文件的解析方法

Similar Documents

Publication Publication Date Title
CN105468661A (zh) 一种查找elf文件中符号信息的方法及系统
WO2017067175A1 (zh) 一种加载elf文件的方法、装置、设备和计算机存储介质
RU2014104582A (ru) Система среды выполнения
CN107766130B (zh) 虚拟机向容器迁移的方法和装置
CN108197440A (zh) 一种代码混淆方法、设备及计算机可读存储介质
CN104008060A (zh) 插件与宿主兼容性的检测方法及检测服务器
JP6672292B2 (ja) 重複ウェブページを除去する方法および装置
CN105574000A (zh) 扩展apk文件应用的方法及装置
CN103902857A (zh) 一种软件程序的保护方法和装置
CN111068336A (zh) 游戏译文版本的生成方法、装置、电子设备及存储介质
CN106547782A (zh) 日志信息的获取方法及装置
CN103593277A (zh) 日志处理方法及系统
CN103294953A (zh) 一种手机恶意代码检测方法及系统
CN104283947A (zh) Java script动态合并服务器及其工作过程
CN104778252A (zh) 索引的存储方法和装置
CN104991810A (zh) 自动添加apk到安卓系统中的方法及处理系统
CN104008124A (zh) 创建复合文件的方法和具有复合文件的数据存储设备
CN111984595B (zh) 一种文件处理方法及装置、存储介质
CN105242932A (zh) 一种基于delphi工具开发的软件的自动翻译方法
CN111240790B (zh) 一种应用的多语言适配方法、装置、客户端和存储介质
CN106126225B (zh) 一种基于程序演进模型的目标代码逆向工程方法
CN104572876A (zh) 一种软件对应配置文件的读取方法和装置
CN104462157A (zh) 一种文本数据二次结构化的方法及装置
CN103678284A (zh) 页面文字翻译方法及装置
CN105335156A (zh) 一种java对象序列化的方法以及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160406

RJ01 Rejection of invention patent application after publication