CN105354009A - 一种用于固件的保护方法 - Google Patents

一种用于固件的保护方法 Download PDF

Info

Publication number
CN105354009A
CN105354009A CN201510662037.5A CN201510662037A CN105354009A CN 105354009 A CN105354009 A CN 105354009A CN 201510662037 A CN201510662037 A CN 201510662037A CN 105354009 A CN105354009 A CN 105354009A
Authority
CN
China
Prior art keywords
instruction
firmware
lists
offset
code segment
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.)
Granted
Application number
CN201510662037.5A
Other languages
English (en)
Other versions
CN105354009B (zh
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.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield 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 Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201510662037.5A priority Critical patent/CN105354009B/zh
Publication of CN105354009A publication Critical patent/CN105354009A/zh
Application granted granted Critical
Publication of CN105354009B publication Critical patent/CN105354009B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种用于固件的保护方法,所述固件存储在硬件设备中,所述保护方法包括:将所述固件的待保护的代码段中的各条指令打乱顺序;将每条指令与实际应当执行的下一条指令之间的偏移量保存到偏移量表中,将偏移量表保存在所述硬件设备的外部;在每条指令末尾添加跳转指令,所述跳转指令用于根据所述偏移量表在指令顺序打乱后的所述代码段内执行从每条指令到实际应当执行的下一条指令的跳转。通过本发明的用于固件的保护方法,可以保护固件中的关键代码段,增加破解固件的难度,从而提高固件的安全性。

Description

一种用于固件的保护方法
技术领域
本发明涉及软件保护领域,特别涉及一种用于固件的保护方法。
背景技术
固件(Firmware,固件程序)是固化在硬件设备中的软件程序,一般由硬件设备的开发商提供,在硬件设备出厂前下载到硬件中。固件一般存储于硬件设备中的电可擦除只读存储器EEPROM(ElectricallyProgrammableROM)或FLASH芯片中。
固件是担任着硬件设备系统最基础最底层工作的软件。在硬件设备中,固件就是硬件设备的灵魂。一些硬件设备除了固件以外没有存储其他软件,因此固件也就决定着硬件设备的功能及性能,其重要性不言而喻。
为保护固件安全,有些硬件设备开发商会采用安全芯片,将固件程序存储在安全芯片中,通过高强度的安全芯片来保护技术秘密和数据安全。但是,由于安全芯片成本较高,并且在使用上相对来说较为复杂(例如加密等操作)等原因,目前安全芯片更多地应用在软件保护行业(如加密锁产品)或其他对技术保密有要求的安全产品上,而市场上大部分硬件设备基本上采用的都还是非安全芯片。
一般来讲,对于固件程序,通常可以通过专门的固件读取工具或一些硬件设备来读取固件的二进制代码,之后再反编译成汇编语言,很容易就能获得固件的源码,这样一来,采用非安全芯片存储的固件基本上就没有安全性可言。
发明内容
有鉴于此,本发明提供了一种用于固件的保护方法,以解决目前用单片机或ARM等非安全芯片存储的固件的安全问题。
在本发明提供的用于固件的保护方法中,所述固件存储在硬件设备中,所述保护方法包括:将所述固件的待保护的代码段中的各条指令打乱顺序;将每条指令与实际应当执行的下一条指令之间的偏移量保存到偏移量表中,将偏移量表保存在所述硬件设备的外部;在每条指令末尾添加跳转指令,所述跳转指令用于根据所述偏移量表在指令顺序打乱后的所述代码段内执行从每条指令到实际应当执行的下一条指令的跳转。
作为优选,所述偏移量表还包括入口点信息,所述入口点信息为关联于指令顺序打乱后的所述代码段中实际应当首先执行的指令的偏移量。
作为优选,在紧接所述代码段之前添加入口点跳转指令,其用于根据偏移量表中的所述入口点信息跳转到所述代码段中实际应当首先执行的指令。
作为优选,预先生成所述偏移量表并根据所述偏移量表将固件的所述待保护的代码段中的各条指令打乱顺序。
作为优选,在将所述待保护的代码段中的各条指令打乱顺序之后生成所述偏移量表。
作为优选,根据自定义算法或随机乱序算法自动将所述各条指令打乱顺序。
作为优选,根据用户指令将所述各条指令打乱顺序。
作为优选,所述偏移量表通过文件的方式存储或通过变量的方式记录。
作为优选,将所述偏移量表经过加密后保存在所述硬件设备外部。
作为优选,所述偏移量表中还包括指令顺序打乱后的所述代码段中各指令的实际执行顺序信息。
本发明提供的固件保护方法,通过将固件待保护代码段中的指令打乱顺序,给各指令增加跳转指令,并将其偏移量等信息存储在硬件设备外部,运行时从外部载入偏移量表,根据偏移量表中的偏移量找到正确的指令执行顺序并执行指令,因此,即使非法破解者绕过硬件设备芯片的内存保护获取到存储在芯片内部的固件的二进制代码,由于受保护代码段中的指令已经完全无序打乱,在没有偏移量表的情况下,即使翻译出指令代码,也无法获得指令正确的执行顺序,由此可以增加破解的难度,保护关键代码,提高安全性。
附图说明
图1为本发明的用于固件的保护方法的第一实施例的流程图;
图2为本发明的用于固件的保护方法的第二实施例的流程图;
图3为本发明的用于固件的保护方法的第三实施例的流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图1为本发明的用于固件的保护方法的第一实施例的流程图。其中,固件存储在硬件设备的EEPROM中或者FLASH芯片中。
如图1所示,本实施例的用于固件的保护方法包括如下步骤:首先,将固件的待保护的代码段中的各条指令打乱顺序;其次,将已打乱指令顺序的代码段中的每条指令与实际应当执行的下一条指令之间的偏移量保存到偏移量表中,并将偏移量表保存在硬件设备的外部;最后,在每条指令末尾添加跳转指令,该跳转指令用于根据偏移量表在指令顺序打乱的代码段内执行指令间的正确跳转。
例如,当固件中的待保护的代码段按正常执行顺序包括指令1、指令2、指令3和指令4时,将汇编后的指令1-4打乱顺序,假定打乱后的指令顺序为指令1、指令4、指令3和指令2。打乱指令顺序的步骤可以由计算机通过自定义算法或随机乱序算法来自动执行,或者计算机也可以根据用户指令进行指定方式的顺序打乱。
将上述指令1、指令4、指令3和指令2中每条指令语句与实际应当执行的下一条指令语句之间的偏移量进行保存。例如从指令1跳转到指令2的偏移量记作A,从指令2跳转到指令3的偏移量记作B,从指令3跳转到指令4的偏移量记作C。将与各指令对应的偏移量以文件的方式存储为偏移量表或以变量的方式记录为偏移量表,并将偏移量表存储在存储了上述固件的硬件设备之外的其他位置,例如存储在客户端软件中或者服务器上等,但存储的位置不限于此,还可以是移动存储设备等。当需要提高安全等级时,还可以将偏移量表加密后再进行存储。
在以上过程中,待保护的代码段的指令正常执行顺序是默认知晓的,代码段中的指令在打乱顺序后其实际的执行顺序也默认知晓。
之后,在上述指令1、指令4、指令3和指令2中每条指令末尾添加跳转指令,跳转指令用于从偏移量表中获得从当前指令跳转到实际应当执行的下一条指令的偏移量并由此跳转到该下一条指令处。
跳转指令代码可以为:JmpPC+OFFSET,其中PC为程序执行的当前位置,OFFSET为偏移量表中的具体偏移量。
固件程序运行时,从硬件设备外部载入上述偏移量表并保存到硬件设备内存的某个固定位置,运行到受保护代码段时,根据偏移量表中记录的与每条指令末尾的跳转指令对应的偏移量进行跳转执行。在指令1执行后通过其末尾增加的跳转指令从保存在上述固定位置处的偏移量表中获取对应的具体偏移量(即:偏移量A),即可计算出实际下条指令的位置(jmp+A),从而正确地跳转到指令2处执行。后续指令3、指令4采用同样的方式根据偏移量表中的偏移量信息跳转执行。
本实施例通过将固件待保护代码段中的指令打乱顺序,给各指令增加跳转指令,并将其偏移量等信息存储在硬件设备外部,运行时从外部载入偏移量表保存到硬件设备内存的某个固定位置,根据偏移量表中的偏移量找到正确的指令执行顺序并执行指令,因此,即使非法破解者绕过硬件设备芯片的内存保护获取到存储在芯片内部的固件的二进制代码,由于受保护代码段中的指令已经完全无序打乱,在没有偏移量表的情况下,即使翻译出指令代码,也无法获得指令正确的执行顺序,由此可以增加破解的难度,保护关键代码,提高安全性。
图2为本发明的用于固件的保护方法的第二实施例的流程图。
本实施例不同于上述第一实施例之处在于,在固件的待保护代码段打乱指令顺序后,应当首先被执行的第一条指令并不一定位于最前面。
仍以指令1-4为例,打乱后的指令顺序例如为指令2、指令4、指令3和指令1。由于在固件运行到受保护代码段时,顺序错乱的四条指令中的最后一条指令是实际应当首先执行的指令,因此本实施例中将关联于该第一条指令的位置的入口点信息存储在偏移量表中,该入口点信息可以是特定的偏移量。
可以将入口点跳转指令添加到紧接所述待保护代码段之前,即受保护代码的前一代码段的末尾处,在固件运行到受保护代码段处时,该跳转指令用于直接跳转到受保护代码段中的指令1处执行。具体而言,固件程序运行时,从硬件设备外部载入偏移量表并保存到硬件设备内存的某个固定位置,在运行完受保护代码段的前一段代码后,添加在该前一段代码末尾处的入口点跳转指令根据存储在该固定位置处的偏移量表中的入口点信息(如上述特定偏移量)找到受保护代码段的程序入口点(即受保护代码段中应当首先被执行的指令1的位置)并跳转执行(即在乱序后的指令2、4、3、1中跳转到最后一条),指令1执行后通过其末尾增加的跳转指令以及偏移量表中的偏移量A,即可计算出实际下条指令2的位置(jmp+A),从而跳转到指令2处执行。后续指令3、指令4采用同样的方式根据偏移量表中的偏移量信息跳转执行。
本实施例通过混淆和隐藏受保护代码段中的应当首先执行的第一条指令的位置,同时混淆其他指令的排布顺序,使得非法破解者难以获知正确的指令顺序,进一步增加了固件的破解难度,提高了安全性。
图3为本发明的用于固件的保护方法的第三实施例的流程图。
本实施例不同于第一实施例之处在于,偏移量表的生成在指令打乱顺序之前执行。
具体为,先设计好每条指令打乱后的顺序,将所设计的顺序中每条指令与下一条指令间的预定偏移量保存到偏移量表中,然后根据设计好的偏移量表将固件的待保护的代码段中的各条指令打乱顺序,再在各条指令末尾添加跳转指令。其他与第一实施例相同部分的描述在此省略。
通过本实施例的方式,能够在固件的保护中对如何打乱指令顺序进行规划安排,减轻程序操作人员的负担,尤其适用于受保护代码段中指令较多的情况。
在一些实施例中,存储在硬件设备外部的上述偏移量表中还可以存储有受保护的代码段中指令的实际执行顺序等附加信息,以便于程序操作人员查看。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种用于固件的保护方法,所述固件存储在硬件设备中,所述保护方法包括:
将所述固件的待保护的代码段中的各条指令打乱顺序;
将每条指令与实际应当执行的下一条指令之间的偏移量保存到偏移量表中,将偏移量表保存在所述硬件设备的外部;
在每条指令末尾添加跳转指令,所述跳转指令用于根据所述偏移量表在指令顺序打乱后的所述代码段内执行从每条指令到实际应当执行的下一条指令的跳转。
2.如权利要求1所述的固件保护方法,其特征在于,
所述偏移量表还包括入口点信息,所述入口点信息为关联于指令顺序打乱后的所述代码段中实际应当首先执行的指令的偏移量。
3.如权利要求2所述的固件保护方法,其特征在于,
在紧接所述代码段之前添加入口点跳转指令,其用于根据偏移量表中的所述入口点信息跳转到所述待保护代码段中实际应当首先执行的指令。
4.如权利要求1至3中任一项所述的固件保护方法,其特征在于,预先生成所述偏移量表并根据所述偏移量表将固件的所述待保护的代码段中的各条指令打乱顺序。
5.如权利要求1至3中任一项所述的固件保护方法,其特征在于,在将所述待保护的代码段中的各条指令打乱顺序之后生成所述偏移量表。
6.如权利要求1至3中任一项所述的固件保护方法,其特征在于,根据自定义算法或随机乱序算法自动将所述各条指令打乱顺序。
7.如权利要求1至3中任一项所述的固件保护方法,其特征在于,根据用户指令将所述各条指令打乱顺序。
8.如权利要求1至3中任一项所述的固件保护方法,其特征在于,所述偏移量表通过文件的方式存储或通过变量的方式记录。
9.如权利要求1至3中任一项所述的固件保护方法,其特征在于,将所述偏移量表经过加密后保存在所述硬件设备外部。
10.如权利要求1至3中任一项所述的固件保护方法,其特征在于,所述偏移量表中还包括指令顺序打乱后的所述代码段中各指令的实际执行顺序信息。
CN201510662037.5A 2015-10-14 2015-10-14 一种用于固件的保护方法 Active CN105354009B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510662037.5A CN105354009B (zh) 2015-10-14 2015-10-14 一种用于固件的保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510662037.5A CN105354009B (zh) 2015-10-14 2015-10-14 一种用于固件的保护方法

Publications (2)

Publication Number Publication Date
CN105354009A true CN105354009A (zh) 2016-02-24
CN105354009B CN105354009B (zh) 2021-01-01

Family

ID=55329986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510662037.5A Active CN105354009B (zh) 2015-10-14 2015-10-14 一种用于固件的保护方法

Country Status (1)

Country Link
CN (1) CN105354009B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529225A (zh) * 2016-10-27 2017-03-22 努比亚技术有限公司 一种应用程序源代码保护装置及方法
CN106951744A (zh) * 2017-03-15 2017-07-14 北京深思数盾科技股份有限公司 可执行程序的保护方法及装置
CN106951745A (zh) * 2017-03-31 2017-07-14 北京深思数盾科技股份有限公司 一种指令重组方法和装置
CN108334756A (zh) * 2017-01-20 2018-07-27 武汉斗鱼网络科技有限公司 一种对递归下降式分析器反编译的干扰方法及装置
CN108363911A (zh) * 2018-02-11 2018-08-03 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
CN111783162A (zh) * 2020-06-30 2020-10-16 联想(北京)有限公司 数据保护实现方法、装置及计算机设备
CN113541922A (zh) * 2021-07-20 2021-10-22 山东大学 交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779114B1 (en) * 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
CN101939749A (zh) * 2008-02-11 2011-01-05 Nxp股份有限公司 程序模糊方法和用于执行模糊程序的处理设备
CN101939724A (zh) * 2008-02-06 2011-01-05 Nxp股份有限公司 数据处理设备及用于执行混淆程序的方法
CN103279693A (zh) * 2013-05-30 2013-09-04 付弦 一种文件加密方法
US20130232343A1 (en) * 1999-07-29 2013-09-05 Intertrust Technologies Corporation Software self-defense systems and methods
CN104517044A (zh) * 2013-09-27 2015-04-15 腾讯科技(深圳)有限公司 一种防止二进制文件被反编译的方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130232343A1 (en) * 1999-07-29 2013-09-05 Intertrust Technologies Corporation Software self-defense systems and methods
US6779114B1 (en) * 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
CN101939724A (zh) * 2008-02-06 2011-01-05 Nxp股份有限公司 数据处理设备及用于执行混淆程序的方法
CN101939749A (zh) * 2008-02-11 2011-01-05 Nxp股份有限公司 程序模糊方法和用于执行模糊程序的处理设备
CN103279693A (zh) * 2013-05-30 2013-09-04 付弦 一种文件加密方法
CN104517044A (zh) * 2013-09-27 2015-04-15 腾讯科技(深圳)有限公司 一种防止二进制文件被反编译的方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529225A (zh) * 2016-10-27 2017-03-22 努比亚技术有限公司 一种应用程序源代码保护装置及方法
CN108334756A (zh) * 2017-01-20 2018-07-27 武汉斗鱼网络科技有限公司 一种对递归下降式分析器反编译的干扰方法及装置
CN108334756B (zh) * 2017-01-20 2020-05-12 武汉斗鱼网络科技有限公司 一种对递归下降式分析器反编译的干扰方法及装置
CN106951744A (zh) * 2017-03-15 2017-07-14 北京深思数盾科技股份有限公司 可执行程序的保护方法及装置
CN106951744B (zh) * 2017-03-15 2019-12-13 北京深思数盾科技股份有限公司 可执行程序的保护方法及装置
CN106951745A (zh) * 2017-03-31 2017-07-14 北京深思数盾科技股份有限公司 一种指令重组方法和装置
CN106951745B (zh) * 2017-03-31 2019-10-18 北京深思数盾科技股份有限公司 一种指令重组方法和装置
CN108363911A (zh) * 2018-02-11 2018-08-03 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
CN108363911B (zh) * 2018-02-11 2021-10-29 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
CN111783162A (zh) * 2020-06-30 2020-10-16 联想(北京)有限公司 数据保护实现方法、装置及计算机设备
CN113541922A (zh) * 2021-07-20 2021-10-22 山东大学 交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统

Also Published As

Publication number Publication date
CN105354009B (zh) 2021-01-01

Similar Documents

Publication Publication Date Title
CN105354009A (zh) 一种用于固件的保护方法
US11113384B2 (en) Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes
EP2958044B1 (en) A computer implemented method and a system for controlling dynamically the execution of a code
US10599820B2 (en) Control flow flattening for code obfuscation where the next block calculation needs run-time information
EP3654215B1 (en) Applying control flow integrity verification in intermediate code files
US20110191848A1 (en) Preventing malicious just-in-time spraying attacks
CN105683990A (zh) 用于保护动态库的方法和装置
US11250110B2 (en) Method to secure a software code
US10417412B2 (en) Protecting computer code against ROP attacks
US20110271350A1 (en) method for protecting software
US9576138B1 (en) Mitigating ROP attacks
EP3035228B1 (en) Code integrity protection by computing target addresses from checksums
US11269988B2 (en) Automated software application verification system
US20160171213A1 (en) Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer
EP2937803B1 (en) Control flow flattening for code obfuscation where the next block calculation needs run-time information
US20200074077A1 (en) Method for Providing a Security-Critical Software Application on a Computer Unit
Ahmadvand et al. Practical integrity protection with oblivious hashing
CN107209815B (zh) 用于使用返回导向编程的代码混淆的方法
EP3574425B1 (en) Method to secure a software code
CN107545174B (zh) 一种基于llvm的抵御控制流劫持的系统和方法
JP2009104589A (ja) 情報処理装置及びその方法、プログラム、記録媒体
US11783013B2 (en) Protected processing of operations
WO2017030548A1 (en) Loading custom code into binary code
KR20150003451A (ko) 메모리 데이터 보호 시스템 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.