CN104504336B - 防止嵌入式系统被恶意在线调试的方法和装置 - Google Patents

防止嵌入式系统被恶意在线调试的方法和装置 Download PDF

Info

Publication number
CN104504336B
CN104504336B CN201410843435.2A CN201410843435A CN104504336B CN 104504336 B CN104504336 B CN 104504336B CN 201410843435 A CN201410843435 A CN 201410843435A CN 104504336 B CN104504336 B CN 104504336B
Authority
CN
China
Prior art keywords
code
embedded system
chip
key code
malice
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
Application number
CN201410843435.2A
Other languages
English (en)
Other versions
CN104504336A (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.)
Dalian Roiland Technology Co Ltd
Original Assignee
Dalian Roiland 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 Dalian Roiland Technology Co Ltd filed Critical Dalian Roiland Technology Co Ltd
Priority to CN201410843435.2A priority Critical patent/CN104504336B/zh
Publication of CN104504336A publication Critical patent/CN104504336A/zh
Application granted granted Critical
Publication of CN104504336B publication Critical patent/CN104504336B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种防止嵌入式系统被恶意在线调试的方法和装置。包括:按照功能重要程度级别,将嵌入式系统中的原始代码中的子函数划分为普通代码和关键代码;在所述划分后的关键代码处加入加密程序和干扰代码;当所述嵌入式系统中执行到关键代码时,判断所述芯片是否处于加密状态;当检测到芯片处于解密状态,进入异常处理,执行干扰代码;当检测到芯片处于加密状态,执行正常的代码。可以杜绝有人恶意调试。

Description

防止嵌入式系统被恶意在线调试的方法和装置
技术领域
本发明涉及计算机领域,尤其涉及一种防止嵌入式系统被恶意在线调试的方法和装置。
背景技术
很多嵌入式系统开发投入商用后都会采取一定的措施保护自己的软件,从而实现开发的嵌入式系统中的思路及方法不被获取,目前各类嵌入式系统的保护机制各不相同,强度也各有差别,如何保证自己的方法不被获取是一个广泛被关注的问题。
目前主要保护嵌入式系统的方法主要是通过芯片自带的读写禁止的功能来实现,这样可以防止系统的代码被人恶意获取,例如,一个嵌入式系统采用stm32系列芯片,在将代码烧写入芯片后,可以将stm32芯片加密,加密后的stm32芯片可以直接擦除flash内容,不能读出flash内容,这样可以在一定程度上保护自己的代码。但是对代码的保护完全依靠stm32芯片本身,这使得方法具有局限性。而基于单片机的可以在线调试的特性,如果有人突破这道保护之后,就可以采取静态分析和动态调试的方法来分析该嵌入式系统,从而获取相关数据。在整个分析中,由于动态调试过程可以直接的看到单片机各个寄存器及内存中的数值,所以动态调试显得尤为重要。如何防止当前的嵌入式系统被动态调试在目前的系统中还没有成熟的方案。
发明内容
为解决上述技术问题,本发明的目的是提供一种防止嵌入式系统被恶意在线调试的方法和装置。
本发明的防止嵌入式系统被恶意在线调试的方法,包括
按照功能重要程度级别,将嵌入式系统中的原始代码中的子函数划分为 普通代码和关键代码;
在所述划分后的关键代码处加入加密程序和干扰代码;
当所述嵌入式系统中执行到关键代码时,判断所述关键代码是否有加密程序并判断芯片是否处于加密状态;
当检测到芯片处于解密状态,进入异常处理,执行干扰代码;
当检测到芯片处于加密状态,执行正常的代码。
进一步的,所述干扰代码和所述正常的代码相似。
本发明提供一种防止嵌入式系统被恶意在线调试的装置,包括:
划分单元,用于按照功能重要程度级别,将嵌入式系统中的原始代码中的子函数划分为普通代码和关键代码;
加入单元,用于在所述划分后的关键代码处加入加密程序和干扰代码;
判断单元,用于当所述嵌入式系统中执行到关键代码时,判断所述关键代码是否有加密程序并判断芯片是否处于加密状态;
执行单元,当检测到芯片处于解密状态,进入异常处理,执行干扰代码;当检测到芯片处于加密状态,执行正常的代码。
借由上述方案,本发明至少具有以下优点:
在代码中加入自身判断芯片加密状态的内容,让代码执行过程中,去判断此时芯片是否是加密状态,如果不是加密状态的话就跳转到一个错误分支去执行。由于在线调试必须在芯片解密状态下进行,这种做法可以从根本上避免在线调试。本发明通过在代码中加入对芯片加密信息的判断,可以有效防止有人恶意在线调试自己的系统。由于芯片在线调试必须在芯片解密状态下,我们检测到芯片处于解密状态则进入干扰程序,使得即使有人通过一定的技术手段读出了我们系统中的代码,也只能通过一些软件静态的分析而无法通过动态调试的方法快速的定位到指定的代码位置,也无法得知代码执行到一定位置后寄存器及内存中的数值,可以在一定程度上增加自己系统的保密性。将单片机芯片的加密信息放入代码中,代码自己判断单片机是否加密, 从而只要是用户恶意调试,代码就可以检测出来,从而可以杜绝有人恶意调试。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1是本发明防止嵌入式系统被恶意在线调试的方法的流程示意图;
图2是本发明的关键代码和普通代码划分的示意图;
图3是本发明防止嵌入式系统被恶意在线调试的装置结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
参见图1所示,一种防止嵌入式系统被恶意在线调试的方法,包括:
步骤101:按照功能重要程度级别,将原始代码中的子函数区分为普通代码和关键代码。
例如:对于儿童学习点读笔这种装置,使用STM32系列芯片的嵌入式系统。这个系统主要实现的功能包括可以识别专门的图书,识别出图书上的图形之后将点读笔指向的图形内容转化为一个数字序列号,之后按照序列号播放一段音频。如图2所示该嵌入式系统有两个关键的功能,即1,对图形的识别,2,图形与序列号的转化,这两部分的功能对应代码是关键代码,其他为普通功能,其对应的代码是普通的代码。
该此步骤需要确定哪些代码的保密级别更高,如关键步骤或关键算法等,从而对保密级别高的代码采用更高强度的加密保护。如下所示为关键功能“对图像的识别”的处理代码的例子:
步骤102、在嵌入式系统的关键代码处加入加密程序和干扰代码,这样当检测到芯片处于加密状态时,如果能解密就可以直接解密,执行关键代码,如果不能直接解密加密程序,那么就执行干扰代码。这里的干扰代码可以做的和真实的正确代码非常类似,这样调试者即便进入干扰代码,也会误认为仍然是正常处理流程,从而增加分析难度。例如该新增的干扰代码picnumidentification1()如下所示:
上述新增的干扰代码,与真实的picnumidentification()非常相像的处理,使这两个子函数在流程上只有非常细微的差别。
步骤103、当执行上述程序时,当执行到关键代码片段时,判断关键代码 中是否有加密程序并判断芯片是否处于加密状态。当检测到芯片处于解密状态,即可以在线调试的状态,就进入异常处理,执行干扰的代码,当检测到芯片正常加密状态,就执行正常正确的代码。
例如:加密信息如下所示:
通过读取STM32芯片中存储的加密信息的地址,读出加密信息后,就可以判断此时芯片是否处于加密状态。
上述存在示例代码如下所示:
由于两个流程非常相像,这样可以在一定程度迷惑分析者,使之分不清哪里是干扰代码,哪里是真实代码。
在代码中加入自身判断芯片加密状态的内容,让代码执行过程中,去判断此时芯片是否是加密状态,如果不是加密状态的话就跳转到一个错误分支去执行。由于在线调试必须在芯片解密状态下进行,这种做法可以从根本上避免在线调试。本发明通过在代码中加入对芯片加密信息的判断,可以有效防止有人恶意在线调试自己的系统。由于芯片在线调试必须在芯片解密状态下,我们检测到芯片处于解密状态则进入干扰程序,使得即使有人通过一定的技术手段读出了我们系统中的代码,也只能通过一些软件静态的分析而无法通过动态调试的方法快速的定位到指定的代码位置,也无法得知代码执行到一定位置后寄存器及内存中的数值,可以在一定程度上增加自己系统的保密性。将单片机芯片的加密信息放入代码中,代码自己判断单片机是否加密, 从而只要是用户恶意调试,代码就可以检测出来,从而可以杜绝有人恶意调试。
如图3所示,本发明提供了一种防止嵌入式系统被恶意在线调试的装置,包括:
划分单元31,用于按照功能重要程度级别,将嵌入式系统中的原始代码中的子函数划分为普通代码和关键代码;
加入单元32,用于在所述划分后的关键代码处加入加密程序和干扰代码;
判断单元33,用于当所述嵌入式系统中执行到关键代码时,判断所述关键代码是否有加密程序并判断芯片是否处于加密状态;
执行单元34,当检测到芯片处于解密状态,进入异常处理,执行干扰代码;当检测到芯片处于加密状态,执行正常的代码。
以上所述仅是本发明的优选实施方式,并不用于限制本发明,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。

Claims (2)

1.一种防止嵌入式系统被恶意在线调试的方法,其特征在于,包括:
按照功能重要程度级别,将嵌入式系统中的原始代码中的子函数划分为普通代码和关键代码;
在所述划分后的关键代码处加入加密程序和干扰代码;
当所述嵌入式系统中执行到关键代码时,判断所述关键代码是否有加密程序并判断芯片是否处于加密状态;
当关键代码检测到芯片处于解密状态,进入异常处理,执行干扰代码;
当检测到芯片处于加密状态,执行正常的代码。
2.一种防止嵌入式系统被恶意在线调试的装置,其特征在于,包括:
划分单元,用于按照功能重要程度级别,将嵌入式系统中的原始代码中的子函数划分为普通代码和关键代码;
加入单元,用于在所述划分后的关键代码处加入加密程序和干扰代码;
判断单元,用于当所述嵌入式系统中执行到关键代码时,判断所述关键代码是否有加密程序并判断芯片是否处于加密状态;
执行单元,当检测到芯片处于解密状态,进入异常处理,执行干扰代码;当检测到芯片处于加密状态,执行正常的代码。
CN201410843435.2A 2014-12-30 2014-12-30 防止嵌入式系统被恶意在线调试的方法和装置 Active CN104504336B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410843435.2A CN104504336B (zh) 2014-12-30 2014-12-30 防止嵌入式系统被恶意在线调试的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410843435.2A CN104504336B (zh) 2014-12-30 2014-12-30 防止嵌入式系统被恶意在线调试的方法和装置

Publications (2)

Publication Number Publication Date
CN104504336A CN104504336A (zh) 2015-04-08
CN104504336B true CN104504336B (zh) 2018-01-19

Family

ID=52945732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410843435.2A Active CN104504336B (zh) 2014-12-30 2014-12-30 防止嵌入式系统被恶意在线调试的方法和装置

Country Status (1)

Country Link
CN (1) CN104504336B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107784203A (zh) * 2016-08-25 2018-03-09 大连楼兰科技股份有限公司 利用代码自判断芯片加密信息防止在线调试的方法及系统
CN111027057B (zh) * 2019-01-31 2023-12-26 安天科技集团股份有限公司 一种芯片隐藏硬件的检测方法、装置及存储介质
CN110245086B (zh) * 2019-06-19 2023-05-16 北京字节跳动网络技术有限公司 应用程序稳定性测试方法、装置及设备
CN110309644B (zh) * 2019-06-28 2021-03-19 兆讯恒达科技股份有限公司 一种指令信息的处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140600A (zh) * 2006-09-08 2008-03-12 盛趣信息技术(上海)有限公司 服务器端程序保护方法
CN101203859A (zh) * 2005-04-21 2008-06-18 松下电器产业株式会社 程序难破解化装置和难破解化方法
CN103186729A (zh) * 2013-03-26 2013-07-03 北京深思数盾科技有限公司 利用加密锁对软件进行保护的方法及加密锁
CN103413074A (zh) * 2013-07-08 2013-11-27 北京深思数盾科技有限公司 一种通过api实现软件保护的方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8220058B2 (en) * 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7620987B2 (en) * 2005-08-12 2009-11-17 Microsoft Corporation Obfuscating computer code to prevent an attack

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101203859A (zh) * 2005-04-21 2008-06-18 松下电器产业株式会社 程序难破解化装置和难破解化方法
CN101140600A (zh) * 2006-09-08 2008-03-12 盛趣信息技术(上海)有限公司 服务器端程序保护方法
CN103186729A (zh) * 2013-03-26 2013-07-03 北京深思数盾科技有限公司 利用加密锁对软件进行保护的方法及加密锁
CN103413074A (zh) * 2013-07-08 2013-11-27 北京深思数盾科技有限公司 一种通过api实现软件保护的方法和装置

Also Published As

Publication number Publication date
CN104504336A (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
CN104504336B (zh) 防止嵌入式系统被恶意在线调试的方法和装置
CN103164643B (zh) 一种通过硬件进行反调试的方法和装置
CN104156642B (zh) 一种基于安全触控屏控制芯片的安全密码输入系统和方法
US10380349B2 (en) Security analysis using relational abstraction of data structures
Yadegari et al. Bit-level taint analysis
US20110145918A1 (en) Sensitive data tracking using dynamic taint analysis
US20190073473A1 (en) Dynamic security domain data flow analysis via passive monitoring
Tian et al. DKISB: Dynamic key instruction sequence birthmark for software plagiarism detection
CN103069393B (zh) 中央处理运算装置以及异常检查方法
CN111159697B (zh) 一种密钥检测方法、装置及电子设备
KR20100070027A (ko) 제이태그 인증 기능을 구비하는 장치 및 제이태그 인증방법
US11620398B2 (en) Techniques to protect fuses against non-destructive attacks
CN107480068A (zh) 代码完整性检测方法、装置、电子终端及可读存储介质
Goli et al. Security validation of VP-based SoCs using dynamic information flow tracking
CN103810440B (zh) 存取系统及方法
Wang et al. Time and Order: Towards Automatically Identifying {Side-Channel} Vulnerabilities in Enclave Binaries
CN103365772B (zh) 软件测试自动评价装置以及方法
CN107085687A (zh) 基于二进制熵的模糊测试加解密函数定位方法
Yan et al. Semantic GUI Scene Learning and Video Alignment for Detecting Duplicate Video-based Bug Reports
CN107784203A (zh) 利用代码自判断芯片加密信息防止在线调试的方法及系统
US7593258B2 (en) Protection of the flow of a program executed by an integrated circuit or of data contained in this circuit
Wang et al. Invariant based fault localization by analyzing error propagation
US8760947B2 (en) Apparatus protecting software of sentinel logic circuitry against unauthorized access
Jurn et al. A survey of automated root cause analysis of software vulnerability
Ward et al. Identifying Microbenchmark Signatures of Existing Microarchitectural Exploits Using the Unified Side Channel Attack-Model (USCA-M) Four-Phase Testing Process

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