CN105468661A - 一种查找elf文件中符号信息的方法及系统 - Google Patents
一种查找elf文件中符号信息的方法及系统 Download PDFInfo
- 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
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即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表和字符串表辅助查找符号表中的符号信息。
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)
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)
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 |
-
2014
- 2014-12-31 CN CN201410844838.9A patent/CN105468661A/zh active Pending
Patent Citations (3)
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)
Title |
---|
"《深入Linux内核架构》" * |
Cited By (7)
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 |