CN103777966B - 一种从二进制文件中提取代码信息的方法及装置 - Google Patents
一种从二进制文件中提取代码信息的方法及装置 Download PDFInfo
- Publication number
- CN103777966B CN103777966B CN201410073860.8A CN201410073860A CN103777966B CN 103777966 B CN103777966 B CN 103777966B CN 201410073860 A CN201410073860 A CN 201410073860A CN 103777966 B CN103777966 B CN 103777966B
- Authority
- CN
- China
- Prior art keywords
- configuration information
- software
- algorithm
- code
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000002441 reversible effect Effects 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 11
- 230000002829 reductive effect Effects 0.000 claims description 9
- 238000013497 data interchange Methods 0.000 claims description 6
- 230000009467 reduction Effects 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种从二进制文件中提取代码信息的方法和装置,该方法采取预先定义软件的配置信息,与软件其它部分的代码明确区分开,并在编译过程中划分专用空间用于存储经可逆算法得到的配置信息,从而从该专用空间读取该软件配置信息后,就可以通过逆向的方法还原软件的配置代码,这样便可基于原始的代码,重新编写和编译满足其它配置需求的软件,这种提取代码信息的方法灵活方便,且出错风险低。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种从二进制文件中提取代码信息的方法及装置。
背景技术
在计算机软件领域,当我们需要某个功能的软件时,通常是由专业的软件技术开发人员先将软件源代码编写好,然后软件编程人员编写、维护的软件源代码本身不可以直接运行,需要通过编译器将其编译为硬件设备可识别的二进制程序才能运行。这个二进制程序通常是由软件编程语言底层的编译器通过很复杂的算法来转换的,这个过程是一个不可逆过程,也就是我们无法直接基于编译好的二进制软件逆向还原出其原始的软件代码。
然后,人们经常会遇到需要对软件进行小幅度修改的情况,但即使非常小的修改,也无法直接修改可运行的二进制软件程序,通常需要依靠修改其源程序代码来进行。这种方法存在的缺陷是:有些情况下可能找不到与该二进制软件精确匹配的软件源代码,或者找错源代码,因此有出错风险;并且较难在软件技术开发人员相互之间交接程序修改的工作,不方便且工作量较大。因此,现有技术有待改进和提高。
发明内容
本发明实施例提供一种从二进制文件中提取代码信息的方法及装置,以期从二进制文件中还原出源代码信息,从而更方便快捷地对源代码进行修改。
第一方面,本发明实施例提供一种从二进制文件中提取代码信息的方法,所述方法包括:
从二进制存储文件的专用空间中读取第一配置信息;其中,所述专用空间为软件编译过程中设置的用于存储软件第一配置信息的空间,所述第一配置信息为第二配置信息经可逆算法转换得到的配置信息,所述第二配置信息为软件编写过程中定义的与软件功能实现相关的代码;
根据逆向算法将读取的第一配置信息还原为所述第二配置信息。
其中,所述可逆算法包括:可扩展标记语言格式转换算法、数据库格式转换算法、轻量级数据交换格式转换算法。
进一步的,所述方法还包括:基于还原得到的第二配置信息,进行重新编写和编译以满足新的软件需求。
所述第二配置信息包括:软件功能开关和外部资源。
第二方面,本发明实施例还提供一种从二进制文件中提取代码信息的装置,包括:
转换模块,用于将第二配置信息经过可逆算法转换为第一配置信息,其中,所述第二配置信息为软件编写过程中定义的与软件功能实现相关的代码;
设置模块,用于在软件编译过程中在二进制存储文件的存储空间中设置专用空间,所述专用空间用于存储所述第一配置信息;
读取模块,用于从所述专用空间中读取所述第一配置信息;
还原模块,用于根据逆向算法将所述读取模块读取的第一配置信息还原为第二配置信息。
本发明实施例提供的从二进制文件中提取代码信息的方法,采取预先定义软件的配置信息,与软件其它部分的代码明确区分开,并在编译过程中划分专用空间用于存储经逆向算法得到的配置信息,从而从该专用空间读取该软件配置信息后,就可以通过逆向的方法还原软件的配置代码,这样便可基于原始的代码,重新编写和编译满足其它配置需求的软件,这种提取代码信息的方法灵活方便,且出错风险低。
附图说明
图1是本发明实施例提供的一种从二进制文件中提取代码信息的方法流程示意图;
图2是本发明实施例提供的一种从二进制文件中提取代码信息的装置结构示意图。
具体实施方式
本发明实施例提供一种从二进制文件中提取代码信息的方法及装置,以期从二进制文件中还原出源代码信息,从而更方便快捷地对源代码进行修改。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明实施例提供一种从二进制文件中提取代码信息的方法,包括:
从二进制存储文件的专用空间中读取第一配置信息;其中,所述专用空间为软件编译过程中设置的用于存储软件第一配置信息的空间,所述第一配置信息为第二配置信息经可逆算法转换得到的配置信息,所述第二配置信息为软件编写过程中定义的与软件功能实现相关的代码;
根据逆向算法将读取的第一配置信息还原为所述第二配置信息。
其中,所述可逆算法包括:可扩展标记语言格式转换算法、数据库格式转换算法、轻量级数据交换格式转换算法。
进一步的,所述方法还包括:基于还原得到的第二配置信息,进行重新编写和编译以满足新的软件需求。
所述第二配置信息可以包括:软件功能开关和外部资源。
需要说明的是,所述逆向算法为所述可逆算法经过反推得到的算法。
由上可见,本发明实施例提供的从二进制文件中提取代码信息的方法,采取预先定义软件的配置信息,与软件其它部分的代码明确区分开,并在编译过程中划分专用空间用于存储经可逆算法得到的配置信息,从而从该专用空间读取该软件配置信息后,就可以通过逆向的方法还原软件的配置代码,这样便可基于原始的代码,重新编写和编译满足其它配置需求的软件,这种提取代码信息的方法灵活方便,且出错风险低。
本发明实施例还提供一种从二进制文件中提取代码信息的方法,参见图1所示,包括:
S101、定义软件关键配置信息,称为第二配置信息;
在编写软件的时候要明确定义出“关键配置信息”,通常是一些软件功能开关或者必要的外部资源定义,编写软件时需要将这部分代码与其它部分的代码明确区分开。
S102、将所述第二配置信息通过一定的可逆算法,转换为可扩展标记语言(Extensible Markup Language,简称为XML)格式、数据库格式、轻量级的数据交换格式(JavaScript Object Notation,简称为JSON)或者其它形式的数据格式,经格式转换后的配置信息称为第一配置信息;
S103、在软件的编译过程中,在二进制存储文件里为该软件划分一个专用的空间,将第一配置信息存储于这个专用空间中;
例如,软件代码中的关键配置信息如下:
宏配置信息
其它配置信息
在编译过程中对上述配置信息进行格式转换,并存储在二进制文件的专用空间中,如下:
在进行格式转换时,用JSON、XML、数据库或其它形式存储配置信息都可。
S104、从专用空间里读取出第一配置信息,通过逆向的算法将第一配置信息还原为第二配置信息。
这样,便可基于第二配置信息,即原始的代码仓库,重新编写和编译满足其它配置需求的软件。
由上可见,本发明实施例提供的从二进制文件中提取代码信息的方法,采取在二进制文件中划分专用空间,用于存储软件配置信息,通过一定的可逆算法存储软件配置信息,基于逆向算法可以将存储的配置信息回转回相应的部分或全部软件代码,该方法快捷方便。
本发明实施例还提供一种从二进制文件中提取代码信息的装置,参见图2所示,包括:
转换模块201,用于将第二配置信息经过可逆算法转换为第一配置信息,其中,所述第二配置信息为软件编写过程中定义的与软件功能实现相关的代码;
设置模块202,用于在软件编译过程中在二进制存储文件的存储空间中设置专用空间,所述专用空间用于存储所述第一配置信息;
读取模块203,用于从所述专用空间中读取所述第一配置信息;
还原模块204,用于根据逆向算法将所述读取模块读取的第一配置信息还原为第二配置信息。
其中,所述可逆算法包括:可扩展标记语言格式转换算法、数据库格式转换算法、轻量级数据交换格式转换算法。
由上可见,本发明实施例提供的从二进制文件中提取代码信息的装置,采取在软件编写过程中定义配置信息,由转换模块201将配置信息进行格式转换,并存储于设置模块202设置的专用空间中,从而当需要对软件进行修改时,可以直接从专用空间中读取配置信息,并基于逆向算法,将读取到的配置信息还原为原代码,该方法快捷简单。
本领域普通技术人员可以理解上述实施例的各种流程中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
同时,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本发明实施例所提供的从二进制文件中提取代码信息的方法和装置进行了详细介绍,本文中应用了具体个例对交互的本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (4)
1.一种从二进制文件中提取代码信息的方法,其特征在于,所述方法包括:
从二进制存储文件的专用空间中读取第一配置信息;其中,所述专用空间为软件编译过程中设置的用于存储软件第一配置信息的空间,所述第一配置信息为第二配置信息经可逆算法转换得到的配置信息,所述第二配置信息为软件编写过程中定义的与软件功能实现相关的代码;所述第二配置信息包括:软件功能开关和外部资源;
根据逆向算法将读取的第一配置信息还原为所述第二配置信息;
所述方法还包括:基于还原得到的第二配置信息,进行重新编写和编译以满足新的软件需求。
2.根据权利要求1所述的方法,其特征在于,所述可逆算法包括:可扩展标记语言格式转换算法、数据库格式转换算法、轻量级数据交换格式转换算法。
3.一种从二进制文件中提取代码信息的装置,其特征在于,包括:
转换模块,用于将第二配置信息经过可逆算法转换为第一配置信息,其中,所述第二配置信息为软件编写过程中定义的与软件功能实现相关的代码;所述第二配置信息包括:软件功能开关和外部资源;
设置模块,用于在软件编译过程中在二进制存储文件的存储空间中设置专用空间,所述专用空间用于存储所述第一配置信息;
读取模块,用于从所述专用空间中读取所述第一配置信息;
还原模块,用于根据逆向算法将所述读取模块读取的第一配置信息还原为第二配置信息;
所述装置基于还原得到的第二配置信息,进行重新编写和编译以满足新的软件需求。
4.根据权利要求3所述的装置,其特征在于,所述可逆算法包括:可扩展标记语言格式转换算法、数据库格式转换算法、轻量级数据交换格式转换算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410073860.8A CN103777966B (zh) | 2014-02-28 | 2014-02-28 | 一种从二进制文件中提取代码信息的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410073860.8A CN103777966B (zh) | 2014-02-28 | 2014-02-28 | 一种从二进制文件中提取代码信息的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103777966A CN103777966A (zh) | 2014-05-07 |
CN103777966B true CN103777966B (zh) | 2017-05-31 |
Family
ID=50570248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410073860.8A Active CN103777966B (zh) | 2014-02-28 | 2014-02-28 | 一种从二进制文件中提取代码信息的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103777966B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501378B (zh) * | 2023-06-27 | 2023-09-12 | 武汉大数据产业发展有限公司 | 一种逆向工程还原源代码的实现方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387984A (zh) * | 2007-09-10 | 2009-03-18 | 施耐德电器工业公司 | 存储管理方法和设备 |
CN102291591A (zh) * | 2011-06-24 | 2011-12-21 | 广州视源电子科技有限公司 | 电视软件功能免编译配置方法及其装置 |
CN203086514U (zh) * | 2013-01-25 | 2013-07-24 | 深圳市网购科技有限公司 | 移动开放交互系统 |
CN103246605A (zh) * | 2013-04-10 | 2013-08-14 | 深圳创维数字技术股份有限公司 | 一种基于xml的遥控器键值配置方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050004893A1 (en) * | 2003-07-02 | 2005-01-06 | Sangroniz James M. | Workflow management devices and systems, and workflow assignment and management methods |
US20070168872A1 (en) * | 2006-01-19 | 2007-07-19 | Raytheon Company | Multi-monitor, multi-JVM java GUI infrastructure with layout via XML |
-
2014
- 2014-02-28 CN CN201410073860.8A patent/CN103777966B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387984A (zh) * | 2007-09-10 | 2009-03-18 | 施耐德电器工业公司 | 存储管理方法和设备 |
CN102291591A (zh) * | 2011-06-24 | 2011-12-21 | 广州视源电子科技有限公司 | 电视软件功能免编译配置方法及其装置 |
CN203086514U (zh) * | 2013-01-25 | 2013-07-24 | 深圳市网购科技有限公司 | 移动开放交互系统 |
CN103246605A (zh) * | 2013-04-10 | 2013-08-14 | 深圳创维数字技术股份有限公司 | 一种基于xml的遥控器键值配置方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103777966A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200104102A1 (en) | Automated content editor | |
JP4940973B2 (ja) | 論理構造認識処理プログラム、論理構造認識処理方法および論理構造認識処理装置 | |
CN103999035A (zh) | 用于状态机中的数据分析的方法及系统 | |
KR101986288B1 (ko) | 전자문서 내 표 데이터의 음성 변환 장치 및 방법 | |
CN106598922A (zh) | 一种字符串转换方法及系统 | |
CN103677786A (zh) | 用于辅助图形化用户界面设计的方法和装置 | |
CN109145055A (zh) | 一种基于Flink的数据同步方法和系统 | |
EP3462388A1 (en) | Method and system for processing engineering objects in an industrial automation environment | |
CN105446986A (zh) | 用于处理web页面的方法和装置 | |
WO2023078053A1 (zh) | 一种代码生成方法、装置、计算机设备及存储介质 | |
Poore | PythonTeX: reproducible documents with LaTeX, Python, and more | |
CN103777966B (zh) | 一种从二进制文件中提取代码信息的方法及装置 | |
CN105528334A (zh) | 一种文档操作处理的方法以及终端 | |
CN105718434A (zh) | 一种自然语言公式编辑方法和系统 | |
CN105630744A (zh) | 一种基于审阅文档的阅读方法及阅读装置 | |
CN107864073B (zh) | 一种swift报文批量发送方法和装置 | |
CN104657340A (zh) | 可扩展基于脚本的Word报告生成系统及方法 | |
KR102610431B1 (ko) | 인공지능 분석 기반 프로그램 소스코드의 요약문 생성 장치 및 방법 | |
CN106909570B (zh) | 一种数据转换方法及装置 | |
CN111401032B (zh) | 文本处理方法、装置、计算机设备和存储介质 | |
CN104239064B (zh) | 一种提取和组织arm程序重定位信息的方法 | |
US20160170628A1 (en) | Visual effects for scientific workflow editors | |
CN103713864B (zh) | 帐票输出装置和帐票输出方法 | |
CN103810312B (zh) | 用于人机接口动画图形元素的计算机辅助设计的方法及装置 | |
EP3271830A1 (en) | Declarative cascade reordering for styles |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |