CN116756706A - 一种嵌入式电力设备的固件代码保护方法及装置 - Google Patents
一种嵌入式电力设备的固件代码保护方法及装置 Download PDFInfo
- Publication number
- CN116756706A CN116756706A CN202310657860.1A CN202310657860A CN116756706A CN 116756706 A CN116756706 A CN 116756706A CN 202310657860 A CN202310657860 A CN 202310657860A CN 116756706 A CN116756706 A CN 116756706A
- Authority
- CN
- China
- Prior art keywords
- target
- instruction
- section
- virtual instruction
- virtual
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000006243 chemical reaction Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 12
- 238000013507 mapping Methods 0.000 claims description 37
- 238000010276 construction Methods 0.000 claims description 5
- 230000009191 jumping Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 230000002787 reinforcement Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000002513 implantation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种嵌入式电力设备的固件代码保护方法及装置,涉及电力互联网安全加固技术领域。本申请的主要技术方案为:复制固件文件中的关键代码;将所述关键代码经反编译转换为汇编指令;将所述汇编指令进行虚拟化转换,得到目标字节码;基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令;在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行。本申请应用于利用指令虚拟化实现对固件文件代码保护。
Description
技术领域
本申请涉及电力互联网安全加固技术领域,尤其涉及一种嵌入式电力设备的固件代码保护方法及装置。
背景技术
电力互联网设备终端具备数量大、种类多的特点,且多为嵌入式系统,由于设备的计算能力、通信能力、存储能力等受限,复杂的安全技术通常无法直接应用。固件是专门为嵌入式设备定制的软件,是智能终端设备的核心,但固件的重要部分通常采用不安全的低级语言构建,这些语言携带的脆弱特征给固件埋下了各种安全隐患。
现在,尤其是针对固件,攻击者往往是采用逆向分析技术实施诸如:破解、篡改、恶意代码植入等恶意行为,这都将对电力互联网环境下智能终端设备造成巨大安全隐患。
发明内容
有鉴于此,本申请提供一种嵌入式电力设备的固件代码保护方法及装置,以指令虚拟化实现关键代码重构,将原生指令转化为自定义虚拟指令以实现对逆向分析的有效干扰,提高电力智能终端的固件安全水平,从而实现智能终端内嵌安全防护。
为了达到上述目的,本申请主要提供如下技术方案:
本申请第一方面提供了一种嵌入式电力设备的固件代码保护方法,该方法包括:
复制固件文件中的关键代码;
将所述关键代码经反编译转换为汇编指令;
将所述汇编指令进行虚拟化转换,得到目标字节码;
基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令;
在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行。
本申请第一方面的一些变更实施方式中,在所述将所述关键代码经反编译转换为汇编指令之后,所述方法还包括:
在所述固件文件中增加多个区段,至少包括:第一区段,用于存储跳转地址表,所述跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将所述汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
本申请第一方面的一些变更实施方式中,所述将所述汇编指令进行虚拟化转换,得到目标字节码,包括:
虚拟构建自定义字节码,作为目标字节码;
利用所述目标字节码替换所述汇编指令;
将所述目标字节码存储至所述第三区段内。
本申请第一方面的一些变更实施方式中,所述基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令,包括:
自定义构建虚拟指令,作为目标虚拟指令;
为每个所述目标字节码,分配对应一个所述目标虚拟指令。
本申请第一方面的一些变更实施方式中,所述方法还包括:
获取所述目标字节码的值;
确定所述目标虚拟指令对应的目标虚拟指令地址;
建立所述目标字节码的值和所述目标虚拟指令地址之间的映射关系,存储至所述第一区段内;
将所述目标虚拟指令和所述目标虚拟指令对应的所述目标虚拟指令地址,存储至所述第四区段内。
本申请第一方面的一些变更实施方式中,所述在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行,包括:
当程序执行至所述关键代码的起始处时,基于所述重新定向执行流至获取所述第二区段内的所述虚拟执行系统的配置信息,以构建目标虚拟执行系统并初始化虚拟执行环境;
启动所述目标虚拟执行系统,从所述第三区段内存储的所述字节码信息中读取目标字节码;
基于所述目标字节码的值,从所述第一区段内存储的第一映射关系中获取所述目标字节码的值对应的目标虚拟指令地址;
基于所述目标虚拟指令地址,从所述第四区段内存储的第二映射关系中获取所述目标虚拟指令地址对应的目标虚拟指令;
通过嵌入的虚拟机,对所述目标虚拟指令进行解释执行。
本申请第二方面提供了一种嵌入式电力设备的固件代码保护装置,该装置包括:
复制单元,用于复制固件文件中的关键代码;
第一转换单元,用于将所述关键代码经反编译转换为汇编指令;
第二转换单元,用于将所述汇编指令进行虚拟化转换,得到目标字节码;
构建单元,用于基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令;
执行单元,用于在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行。
本申请第二方面的一些变更实施方式中,在所述将所述关键代码经反编译转换为汇编指令之后,所述装置还包括:
设置单元,用于在所述固件文件中增加多个区段,至少包括:第一区段,用于存储跳转地址表,所述跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将所述汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
本申请第二方面的一些变更实施方式中,所述第二转换单元还具体用于:
虚拟构建自定义字节码,作为目标字节码;
利用所述目标字节码替换所述汇编指令;
将所述目标字节码存储至所述第三区段内。
本申请第二方面的一些变更实施方式中,所述构建单元还具体用于:
自定义构建虚拟指令,作为目标虚拟指令;
为每个所述目标字节码,分配对应一个所述目标虚拟指令。
本申请第二方面的一些变更实施方式中,所述装置还包括:存储单元;
所述存储单元还具体用于:获取所述目标字节码的值;确定所述目标虚拟指令对应的目标虚拟指令地址;建立所述目标字节码的值和所述目标虚拟指令地址之间的映射关系,存储至所述第一区段内;将所述目标虚拟指令和所述目标虚拟指令对应的所述目标虚拟指令地址,存储至所述第四区段内。
本申请第二方面的一些变更实施方式中,所述执行单元还具体用于:
当程序执行至所述关键代码的起始处时,基于所述重新定向执行流至获取所述第二区段内的所述虚拟执行系统的配置信息,以构建目标虚拟执行系统并初始化虚拟执行环境;
启动所述目标虚拟执行系统,从所述第三区段内存储的所述字节码信息中读取目标字节码;
基于所述目标字节码的值,从所述第一区段内存储的第一映射关系中获取所述目标字节码的值对应的目标虚拟指令地址;
基于所述目标虚拟指令地址,从所述第四区段内存储的第二映射关系中获取所述目标虚拟指令地址对应的目标虚拟指令;
通过嵌入的虚拟机,对所述目标虚拟指令进行解释执行。
本申请第三方面提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述的嵌入式电力设备的固件代码保护方法。
本申请第四方面提供了一种电子设备,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、所述存储器通过所述总线完成相互间的通信;
所述处理器用于调用所述存储器中的程序指令,以执行如上述的嵌入式电力设备的固件代码保护方法。
借由上述技术方案,本申请提供的技术方案至少具有下列优点:
本申请提供一种嵌入式电力设备的固件代码保护方法及装置,本申请复制固件文件中的关键代码,并将关键代码反编译转换为汇编指令,以及再将汇编指令进行虚拟化转换得到目标字节码,并且进一步的基于目标字节码再构建自定义的目标虚拟指令,从而通过指令虚拟化实现关键代码重构,这样在运行固件文件的过程中,当程序执行至原关键代码的起始处时,就可以增加基于一个重新定向执行流,跳转对目标虚拟指令进行解释执行了。如此应对于现有采用逆向分析技术进行的恶意行为,本申请在固件文件正常运行的情况下,能够将原生指令转化为自定义虚拟指令,通过重新定向执行流至虚拟执行系统中对目标虚拟指令执行解释,以实现对逆向分析的有效干扰,提高电力智能终端的固件安全水平,从而实现智能终端内嵌安全防护。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例提供的一种嵌入式电力设备的固件代码保护方法流程图;
图2为本申请实施例提供的指令虚拟化重构流程图;
图3为本申请实施例提供的另一种嵌入式电力设备的固件代码保护方法流程图;
图4为本申请实施例提供的重构执行流程示意图;
图5为本申请实施例例举的虚拟指令执行方式示意图;
图6为本申请实施例提供的一种嵌入式电力设备的固件代码保护装置的组成框图;
图7为本申请实施例提供的另一种嵌入式电力设备的固件代码保护装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请实施例提供了一种嵌入式电力设备的固件代码保护方法,如图1所示,对此本发明实施例提供以下具体步骤:
101、复制固件文件中的关键代码。
在研发者角度,如固件文件中实现程序功能的核心代码;在攻击者的角度,如固件文件中某些代码容易被破解、篡改或恶意代码植入等攻击行为,以上所例举代码部分是需要关键保护的,可称为固件文件中的关键代码。
102、将关键代码经反编译转换为汇编指令。
103、将汇编指令进行虚拟化转换,得到目标字节码。
本步骤目的为替换掉汇编指令,具体来说,示例性的,进一步可以包括如下步骤:
步骤A1:虚拟构建自定义字节码,作为目标字节码;步骤A2:利用目标字节码替换汇编指令。
104、基于目标字节码,构建对应可获取到的自定义目标虚拟指令。
本步骤目的为通过指令虚拟化最终实现对关键代码的重构,具体来说,示例性的,进一步可以包括如下步骤:
步骤B1:自定义构建虚拟指令,作为目标虚拟指令;步骤B2:为每个目标字节码,分配对应一个目标虚拟指令。
105、在运行固件文件的过程中,当程序执行至关键代码的起始处时,基于增加的一个重新定向执行流,跳转对目标虚拟指令进行解释执行。
本申请实施例在确保固件文件在能够被正常运行的前提下,还利用增加的重新定向执行流,在程序执行至关键代码起始处时,以跳转对目标虚拟指令进行解释执行,从而将原生指令转化为自定义虚拟指令以实现对逆向分析的有效干扰,提高电力智能终端的固件安全水平,从而实现智能终端内嵌安全防护。
在一些变更实施例中,进一步的,在步骤102将关键代码经反编译转换为汇编指令之后,本申请实施例还在固件文件中预先增加多个区段,以存储为实现基于重新定向执行流所进行跳转操作所需的各种中间数据,示例性的,如下:
在固件文件中增加多个区段,至少包括:第一区段,用于存储跳转地址表,跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
需要说明的是,本申请实施例为区分不同区段,采用了词语“第一”、“第二”、“第三”和“第四”进行标识,但仅作为标识而已不存在排序等其他歧义。
那么,基于“第三区段”的存在,在如步骤103得到目标字节码之后,就将其存储至“第三区段”,并且如果关键代码为多个,则相应的,将按照时间顺序得到多个目标字节码,那么也逐个将它们存储至“第三区段”内。
基于“第一区段”和“第四区段”的存在,在如步骤103得到目标字节码和如步骤104得到目标虚拟指令之后,进一步的,在本申请实施例中,首先,获取目标字节码的值,以及确定目标虚拟指令对应的目标虚拟指令地址;然后,建立目标字节码的值和目标虚拟指令地址之间的映射关系并将它们存储至第一区段内,以及将目标虚拟指令和其对应的目标虚拟指令地址存储至“第四区段”内。
如上“第一区段”、“第三区段”和“第四区段”内各自存储的数据信息,跳转地址表中存储的虚拟指令内存地址,是连通字节码和虚拟指令的桥梁。
另外,对于“第二区段”内存储的虚拟执行系统的配置信息,例如,可以但不限于包括:虚拟机执行相关信息、调度管理等功能指令。基于这些配置信息,本申请实施例可以构建一个虚拟执行系统,以用于在运行固件文件的过程中,基于一个重新定向执行流至虚拟执行系统内去进一步能够解释执行目标虚拟指令。
如步骤101-104,实际为通过指令虚拟化实现关键代码重构,本申请实施例提供如下实例1进行示例性解释说明,并且提供指令虚拟化重构流程图,如图2。
实例1:
步骤C1:复制需保护的固件文件中的关键代码,使用反汇编引擎进行反汇编转换,同时在固件文件头副本后增加四个区段,如下:
第一区段,用于存储跳转地址表,跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
简而言之,四个区段主要应用于各自去存储跳转地址表、虚拟执行系统、字节码信息以及虚拟指令序列。
步骤C2:取回反汇编结果。将汇编指令进行虚拟化转换,将得到的字节码写入重构程序的相应字节码区段,即写入第三区段内。
对于将汇编指令进行虚拟化转换,例如为,使用自定义字节码替换对应汇编指令。
步骤C3:在第三区段内(即虚拟执行系统区段)存放虚拟机执行相关信息、调度管理等功能指令,以用于构建虚拟执行系统以及相当于搭建了虚拟环境。
在第四区段内(即虚拟指令序列区段),随机存放一些虚拟指令,该区段内随机填充无关的虚拟指令,作用是混淆分析,提高逆向分析难度。
步骤C4:在第三区段内将得到的各个字节码按序排列,根据字节码的值和虚拟指令地址之间的第一映射关系来构建跳转地址表,并存储在第一区段内。以及在第四区段内存储为虚拟指令和虚拟指令地址之间的第二映射关系,由此根据第一映射关系和第二映射关系,利用跳转地址表中存储的虚拟指令地址,实现了作为连通字节码和虚拟指令的桥梁。
步骤C5:将原关键代码从重构程序中移除,在原关键代码起始处重新定向执行流,使得程序执行至此处时跳转至虚拟执行系统区段(即第二区段)。
如上步骤C1-C5,将固件文件中关键代码经反编译转换为汇编指令(可存储至汇编指令块),使用自定义字节码替换对应汇报指令,以及利用第一区段内跳转地址表中存储的虚拟指令地址作为连通字节码和虚拟指令的桥梁,以便于在运行固件文件的过程中,当程序执行至关键代码的起始处时,基于增加的一个重新定向执行流至虚拟执行系统中,基于读取字节码的值而在跳转地址表中查找字节码对应的虚拟指令地址,以跳转到该虚拟指令地址去执行虚拟指令,从而实现关键代码保护。
如步骤105,在运行固件文件的过程中,当程序执行至关键代码的起始处时,基于增加的一个重新定向执行流,跳转对目标虚拟指令进行解释执行,实现关键代码保护。在一些变更实施例中,本申请实施例可进一步细化提供重构执行方法的流程示意图,如图3所示,具体包括如下步骤:
201、当程序执行至关键代码的起始处时,基于重新定向执行流至获取第二区段内的虚拟执行系统的配置信息,以构建目标虚拟执行系统并初始化虚拟执行环境。
202、启动目标虚拟执行系统,从第三区段内存储的字节码信息中读取目标字节码。
203、基于目标字节码的值,从第一区段内存储的第一映射关系中获取目标字节码的值对应的目标虚拟指令地址。
204、基于目标虚拟指令地址,从第四区段内存储的第二映射关系中获取目标虚拟指令地址对应的目标虚拟指令。
205、通过嵌入的虚拟机,对目标虚拟指令进行解释执行。
并且,为了更加详细地对重构执行流程进行解释说明,本申请实施例还提供如下实例2和如图4所示的重构执行流程示意图。
实例2:
步骤D1:程序执行push+jmp组合定向执行流至虚拟执行系统。如图4中①。
步骤D2:执行VM_Init指令初始化虚拟执行环境,如将真实寄存器的值对应传递给虚拟寄存器、传递和虚拟执行相关区段信息等。如图4中②。
步骤D3:执行VM_Start指令启动虚拟执行系统,执行VM_Read指令使虚拟执行系统从字节码区段(即第三区段内)开始逐个读取字节码。如图4中③。
步骤D4:根据所读取的字节码,使用VM_Address指令得到存储于跳转地址表区段(即第一区段内)中的虚拟指令地址。如图4中④。
步骤D5:根据得到的虚拟指令地址,虚拟执行系统从虚拟指令序列区段(即第四区段内)的该虚拟指令的地址中得到要执行的虚拟指令。如图4中⑤。
步骤D6:将虚拟机嵌入新的程序,对虚拟指令解释执行。
如图5所示,在本申请实施例中,原生指令集经过如实例1提供的方式形成虚拟指令集,以提升逆向分析难度,而其执行时需通过虚拟机作为解释器还原原生指令以执行,虚拟指令执行方式如图2所示。
进一步的,作为对上述图1、图3所示方法的实现,本申请实施例提供了一种嵌入式电力设备的固件代码保护装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置应用于利用指令虚拟化实现对固件文件代码保护,具体如图6所示,该装置包括:
复制单元31,用于复制固件文件中的关键代码;
第一转换单元32,用于将所述关键代码经反编译转换为汇编指令;
第二转换单元33,用于将所述汇编指令进行虚拟化转换,得到目标字节码;
构建单元34,用于基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令;
执行单元35,用于在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行。
进一步的,如图7所示,在所述将所述关键代码经反编译转换为汇编指令之后,所述装置还包括:
设置单元36,用于在所述固件文件中增加多个区段,至少包括:第一区段,用于存储跳转地址表,所述跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将所述汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
进一步的,在本申请实施例中,所述第二转换单元33还具体用于:虚拟构建自定义字节码,作为目标字节码;利用所述目标字节码替换所述汇编指令;将所述目标字节码存储至所述第三区段内。
进一步的,在本申请实施例中,所述构建单元34还具体用于:自定义构建虚拟指令,作为目标虚拟指令;为每个所述目标字节码,分配对应一个所述目标虚拟指令。
进一步的,如图7所示,所述装置还包括:存储单元37;
所述存储单元37还具体用于:获取所述目标字节码的值;确定所述目标虚拟指令对应的目标虚拟指令地址;建立所述目标字节码的值和所述目标虚拟指令地址之间的映射关系,存储至所述第一区段内;将所述目标虚拟指令和所述目标虚拟指令对应的所述目标虚拟指令地址,存储至所述第四区段内。
进一步的,在本申请实施例中,所述执行单元35还具体用于:当程序执行至所述关键代码的起始处时,基于所述重新定向执行流至获取所述第二区段内的所述虚拟执行系统的配置信息,以构建目标虚拟执行系统并初始化虚拟执行环境;启动所述目标虚拟执行系统,从所述第三区段内存储的所述字节码信息中读取目标字节码;基于所述目标字节码的值,从所述第一区段内存储的第一映射关系中获取所述目标字节码的值对应的目标虚拟指令地址;基于所述目标虚拟指令地址,从所述第四区段内存储的第二映射关系中获取所述目标虚拟指令地址对应的目标虚拟指令;通过嵌入的虚拟机,对所述目标虚拟指令进行解释执行。
综上所述,本申请实施例提供一种嵌入式电力设备的固件代码保护方法及装置,本申请实施例复制固件文件中的关键代码,并将关键代码反编译转换为汇编指令,以及再将汇编指令进行虚拟化转换得到目标字节码,并且进一步的基于目标字节码再构建自定义的目标虚拟指令,从而通过指令虚拟化实现关键代码重构,这样在运行固件文件的过程中,当程序执行至原关键代码的起始处时,就可以增加基于一个重新定向执行流,跳转对目标虚拟指令进行解释执行了。如此应对于现有采用逆向分析技术进行的恶意行为,本申请实施例在固件文件正常运行的情况下,能够将原生指令转化为自定义虚拟指令,通过重新定向执行流至虚拟执行系统中对目标虚拟指令执行解释,以实现对逆向分析的有效干扰,提高电力智能终端的固件安全水平,从而实现智能终端内嵌安全防护。
所述嵌入式电力设备的固件代码保护装置包括处理器和存储器,上述复制单元、第一转换单元、第二转换单元、构建单元和执行单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来以指令虚拟化实现关键代码重构,将原生指令转化为自定义虚拟指令以实现对逆向分析的有效干扰,提高电力智能终端的固件安全水平,从而实现智能终端内嵌安全防护。
本申请实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述嵌入式电力设备的固件代码保护方法。
本申请实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述嵌入式电力设备的固件代码保护方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有上嵌入式电力设备的固件代码保护方法步骤的程序。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种嵌入式电力设备的固件代码保护方法,其特征在于,所述方法包括:
复制固件文件中的关键代码;
将所述关键代码经反编译转换为汇编指令;
将所述汇编指令进行虚拟化转换,得到目标字节码;
基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令;
在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行。
2.根据权利要求1所述的方法,其特征在于,在所述将所述关键代码经反编译转换为汇编指令之后,所述方法还包括:
在所述固件文件中增加多个区段,至少包括:第一区段,用于存储跳转地址表,所述跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将所述汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
3.根据权利要求2所述的方法,其特征在于,所述将所述汇编指令进行虚拟化转换,得到目标字节码,包括:
虚拟构建自定义字节码,作为目标字节码;
利用所述目标字节码替换所述汇编指令;
将所述目标字节码存储至所述第三区段内。
4.根据权利要求2所述的方法,其特征在于,所述基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令,包括:
自定义构建虚拟指令,作为目标虚拟指令;
为每个所述目标字节码,分配对应一个所述目标虚拟指令。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述目标字节码的值;
确定所述目标虚拟指令对应的目标虚拟指令地址;
建立所述目标字节码的值和所述目标虚拟指令地址之间的映射关系,存储至所述第一区段内;
将所述目标虚拟指令和所述目标虚拟指令对应的所述目标虚拟指令地址,存储至所述第四区段内。
6.根据权利要求2所述的方法,其特征在于,所述在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行,包括:
当程序执行至所述关键代码的起始处时,基于所述重新定向执行流至获取所述第二区段内的所述虚拟执行系统的配置信息,以构建目标虚拟执行系统并初始化虚拟执行环境;
启动所述目标虚拟执行系统,从所述第三区段内存储的所述字节码信息中读取目标字节码;
基于所述目标字节码的值,从所述第一区段内存储的第一映射关系中获取所述目标字节码的值对应的目标虚拟指令地址;
基于所述目标虚拟指令地址,从所述第四区段内存储的第二映射关系中获取所述目标虚拟指令地址对应的目标虚拟指令;
通过嵌入的虚拟机,对所述目标虚拟指令进行解释执行。
7.一种嵌入式电力设备的固件代码保护装置,其特征在于,所述装置包括:
复制单元,用于复制固件文件中的关键代码;
第一转换单元,用于将所述关键代码经反编译转换为汇编指令;
第二转换单元,用于将所述汇编指令进行虚拟化转换,得到目标字节码;
构建单元,用于基于所述目标字节码,构建对应可获取到的自定义目标虚拟指令;
执行单元,用于在运行所述固件文件的过程中,当程序执行至所述关键代码的起始处时,基于增加的一个重新定向执行流,跳转对所述目标虚拟指令进行解释执行。
8.根据权利要求7所述的装置,其特征在于,在所述将所述关键代码经反编译转换为汇编指令之后,所述装置还包括:
设置单元,用于在所述固件文件中增加多个区段,至少包括:第一区段,用于存储跳转地址表,所述跳转地址表用于存储字节码的值和虚拟指令地址之间的第一映射关系;第二区段,用于存储虚拟执行系统的配置信息;第三区段,用于存储将所述汇编指令进行虚拟化转换得到的字节码信息;第四区段,用于存储虚拟指令信息,包括:虚拟指令和虚拟地址之间的第二映射关系。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-6中任一项所述的嵌入式电力设备的固件代码保护方法。
10.一种电子设备,其特征在于,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、所述存储器通过所述总线完成相互间的通信;
所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1-6中任一项所述的嵌入式电力设备的固件代码保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310657860.1A CN116756706A (zh) | 2023-06-05 | 2023-06-05 | 一种嵌入式电力设备的固件代码保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310657860.1A CN116756706A (zh) | 2023-06-05 | 2023-06-05 | 一种嵌入式电力设备的固件代码保护方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116756706A true CN116756706A (zh) | 2023-09-15 |
Family
ID=87948909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310657860.1A Pending CN116756706A (zh) | 2023-06-05 | 2023-06-05 | 一种嵌入式电力设备的固件代码保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116756706A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046117A (zh) * | 2015-06-30 | 2015-11-11 | 西北大学 | 一种具有指令集随机化的代码虚拟化软件保护系统 |
CN108664312A (zh) * | 2018-04-04 | 2018-10-16 | 苏州天魂网络科技股份有限公司 | 一种基于虚拟指令集加固的虚拟机保护方法 |
KR102482880B1 (ko) * | 2022-09-05 | 2022-12-29 | 한화시스템(주) | 무기체계 임베디드 sw 보호를 위한 역공학 방지 시스템 및 그 방법 |
-
2023
- 2023-06-05 CN CN202310657860.1A patent/CN116756706A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046117A (zh) * | 2015-06-30 | 2015-11-11 | 西北大学 | 一种具有指令集随机化的代码虚拟化软件保护系统 |
CN108664312A (zh) * | 2018-04-04 | 2018-10-16 | 苏州天魂网络科技股份有限公司 | 一种基于虚拟指令集加固的虚拟机保护方法 |
KR102482880B1 (ko) * | 2022-09-05 | 2022-12-29 | 한화시스템(주) | 무기체계 임베디드 sw 보호를 위한 역공학 방지 시스템 및 그 방법 |
Non-Patent Citations (1)
Title |
---|
杜春来等: "一种基于指令虚拟化的代码保护模型", 信息网络安全, no. 2, pages 22 - 28 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2458394C2 (ru) | Виртуализация для диверсифицированной защиты от несанкционированного вмешательства | |
US8196138B2 (en) | Method and system for migrating virtual machines between hypervisors | |
KR101665219B1 (ko) | 네스티드 에뮬레이션 및 동적 링킹 환경 | |
RU2658132C1 (ru) | Общая распаковка приложений для обнаружения вредоносных программ | |
US10102373B2 (en) | Method and apparatus for capturing operation in a container-based virtualization system | |
EP2897074A1 (en) | Application code obfuscation device based on self-conversion and method therefor | |
CN111381879B (zh) | 一种数据处理方法及装置 | |
JP2016511903A (ja) | 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン | |
CN105303104A (zh) | 用以禁止返回定向编程的动态执行阻止 | |
JP2016525255A (ja) | 仮想マシンにおけるページフォールトインジェクション | |
JP2019506666A (ja) | ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス | |
CN109598107A (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN111930382B (zh) | 应用页面的接入方法、装置及设备 | |
CN104731622B (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN104008060A (zh) | 插件与宿主兼容性的检测方法及检测服务器 | |
CN112308716B (zh) | 区块链智能合约执行方法、装置、设备及计算机存储介质 | |
CN106960140A (zh) | 虚拟机指令的混淆方法及装置、虚拟机保护系统 | |
CN105930694A (zh) | 用于模糊虚拟机的灵活指令集 | |
CN106055375A (zh) | 应用程序安装方法及装置 | |
CN104205049B (zh) | 混合模拟和内核函数处理系统和方法 | |
CN116755713A (zh) | 应用程序的生成方法、装置、设备及存储介质 | |
CN111782334B (zh) | 一种动态链接库文件虚拟化方法、存储介质及终端设备 | |
CN116756706A (zh) | 一种嵌入式电力设备的固件代码保护方法及装置 | |
JP4864287B2 (ja) | 識別方法、記録媒体及びコンピュータシステム | |
CN110633210B (zh) | 文件执行方法、装置、存储介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |