CN104462885A - 防止原始代码被获取的方法 - Google Patents
防止原始代码被获取的方法 Download PDFInfo
- Publication number
- CN104462885A CN104462885A CN201410842205.4A CN201410842205A CN104462885A CN 104462885 A CN104462885 A CN 104462885A CN 201410842205 A CN201410842205 A CN 201410842205A CN 104462885 A CN104462885 A CN 104462885A
- Authority
- CN
- China
- Prior art keywords
- code
- important
- binary file
- subfunction
- important code
- 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 32
- 230000008569 process Effects 0.000 description 12
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000033772 system development 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
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种防止原始代码被获取的方法。包括:按照保密级别,将原始代码中的子函数划分为普通代码和重要代码;提取上述划分的重要代码,生成子函数,放入新的工程中,并指定此生成的子函数存放地址;编译上述工程,得到可执行的二进制文件,该二进制文件是重要代码源码;利用私有加密方式加密得到的二进制文件,并将二进制文件放入原系统;在原工程中调用所述重要代码,并将解密后的所述重要代码放置到所述指定地址,并调用所述重要代码。可以杜绝原始代码被获取。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种防止原始代码被获取的方法。
背景技术
对一个嵌入式系统而言,只要读出主控芯片中的软件代码就很容易分析这些代码,从而可以分析得出此嵌入式系统的一些关键处理方法,基于嵌入式系统的这个特点,很多嵌入式系统开发投入商用后都会利用主控芯片自带的防止读flash的机制保护自己的软件,从而实现开发的嵌入式系统中的代码不被获取。
目前的系统中对防止原始代码被恶意读取的方法主要依靠主控芯片自带的读保护的措施。
例如,一个嵌入式系统采用stm32系列芯片,在将代码烧写入芯片后,可以将stm32芯片加密,加密后的stm32芯片可以直接擦除flash内容,不能读出flash内容,这样可以在一定程度上保护自己的代码,这种方法在stm32系列芯片刚刚问世时是一种非常有效的方法,但是随着stm32芯片的普及,对该类芯片的解密变得越来越容易。如果对代码的保护完全依靠stm32芯片本身,则显得有些不足。
发明内容
为解决上述技术问题,本发明的目的是提供一种防止原始代码被获取的方法。
本发明提供的防止原始代码被获取的方法,包括:
按照保密级别,将原始代码中的子函数划分为普通代码和重要代码;
提取上述划分的重要代码,生成子函数,放入新的工程中,并指定此生成的子函数存放地址;
编译上述工程,得到可执行的二进制文件,该二进制文件是重要代码源 码;
利用私有加密方式加密得到的二进制文件,并将二进制文件放入原系统;
在原工程中调用所述重要代码,并将解密后的所述重要代码放置到所述指定地址,并调用所述重要代码。
借由上述方案,本发明至少具有以下优点:
本发明升级的应用程序是被非对称算法RSA公钥加密算法来加密,由于此算法的秘钥分为公钥和私钥,即公钥用来解密,存于嵌入式系统中,私钥用来加密,只保存在开发者手中,可以保证不会有人能够复制加密应用程序的过程。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1是本发明的嵌入式系统结构图;
图2是本发明防止原始代码被获取的方法的流程示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
在本发明实施例采用的一个具体例子为嵌入式串口读取器,一个使用STM32系列芯片的嵌入式系统。整个系统只有一个关键的处理,即是对串口数据的处理。这个系统的主要功能在于通过串口从外部获取一些数据,进行处理,之后将处理的结果在液晶屏上显示。
请参阅图1,图1揭示了本文采用的例子嵌入式串口读取器系统的结构图,此系统包含以下几个模块:模块1:串口接口,这个模块主要作用是完成本系统与串口数据来源接口的硬件连接;模块2:液晶屏模块,这个模块主要 作用是显示出经主控模块处理之后的数据;模块3:主控模块,这个模块是整个系统的核心,其中的对从串口接收到的数据处理成可以用来显示的数据的过程为本系统的关键处理过程。
请参阅图2,本发明揭示了一种防止原始代码被获取的方法:
步骤201、按照保密级别,将原始代码中的子函数划分为普通代码和重要代码。此步骤需要确定哪些代码的保密级别更高,如关键步骤或关键算法等,从而对保密级别高的代码采用更高强度的加密保护。
步骤202、提取上述划分的重要代码,生成子函数,放入新的工程中,并指定此生成的子函数存放地址。该存放地址用于存放编译之后这段代码。
将会在指定的地址处执行,这个地址非常重要,后面解密这段代码之后要放到指定地址,这段代码才能正常运行。
这里从串口收到数据之后需要对数据进行一次处理,之后显示到液晶屏中。这次处理为串口接收到的数据data,自身乘以5,再亦或0x56,得到要显示在液晶屏上的内容,代码为(data*5)^0x56。
如下所示,该重要代码的一个例子为:
步骤203、编译上述工程,得到可执行的二进制文件,该二进制文件是重要代码源码。
步骤204、利用私有加密方式加密得到的二进制文件,并将二进制文件放入原系统。
这个步骤需要提前确定一种加密方式,为了提高系统的安全性,这个加密方式的加密算法需要复杂一些,但是基于系统及时响应的速度考虑,这个加密算法又要简单一些,这里选择加密算法需要综合考虑各个方面的需求,在综合考虑的基础上确定一个加密算法。利用确定的加密算法,来加密上一步得到的重要代码的二进制文件,生成一个数组的格式,放入原系统。
步骤205、在原工程中调用此重要代码处加上解密重要代码并放置到上述指定地址,并调用此重要代码子函数。
如下所示,为原系统中调用重要代码子函数的处理过程,原系统中直接调用关键代码子函数。
如下所示,为新系统中对重要代码子函数函数类型的定义。
//调用的重要代码子函数的函数定义
typedef unsigned char(*pdatacale)(unsigned char datain)
pdatacale datacale;
如下所示,为新系统中对重要代码子函数的调用过程。假设重要代码存放地址为0x20000000(RAM区域首地址)。
本发明通过对系统中的关键代码的加密存储,从而可以更好地保护自身的代码不被恶意获取;另外,使用此方法保护自己的系统没有任何的硬件成本的增加,从实现上也非常容易。
采用此方法的嵌入式的软件系统包括如下几个模块:
模块A:特殊代码模块,此模块为加密级别较高的代码的集合,由于这些代码包括关键算法或关键处理,因此为了防止有人恶意分析此嵌入式系统,需要更高级别的防护。
模块B:普通代码模块,此模块为加密级别不高的代码的集合,这些代码不用采用特殊的方式处理,直接存在flash中,靠主控芯片本身的读保护措施方式代码的读取。此模块中还要包含对关键代码的解密过程,由于关键代码是以加密的方式存储在flash中的,系统运行起来之后需要调用关键代码的时候需要将关键代码解密写入特定位置,这个解密过程需要普通代码模块完成。
本发明的有益效果在于:本发明通过对关键算法和关键过程代码的加密保护,使得即使有人通过解密主控芯片的方式读出嵌入式系统的代码,对于关键的处理过程,也只能得到一个经过加密的代码,要想知道真正处理过程,还需要经过解密,从而实现无法真正读出所有的代码。在主控芯片原有加密读保护的基础上,增加一层保护措施,可以更加有效的保护自己的代码。
本发明最重要的改进点在于将关键代码以加密的形式存入flash中,使得即使有人通过特殊途径突破主控芯片自身的读保护的防护,也无法立刻得到整个系统的所有的原始代码。
以上所述仅是本发明的优选实施方式,并不用于限制本发明,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
Claims (1)
1.一种防止原始代码被获取的方法,其特征在于,包括:
按照保密级别,将原始代码中的子函数划分为普通代码和重要代码;
提取上述划分的重要代码,生成子函数,放入新的工程中,并指定此生成的子函数存放地址;
编译上述工程,得到可执行的二进制文件,该二进制文件是重要代码源码;
利用私有加密方式加密得到的二进制文件,并将二进制文件放入原系统;
在原工程中调用所述重要代码,并将解密后的所述重要代码放置到所述指定地址,并调用所述重要代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410842205.4A CN104462885A (zh) | 2014-12-30 | 2014-12-30 | 防止原始代码被获取的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410842205.4A CN104462885A (zh) | 2014-12-30 | 2014-12-30 | 防止原始代码被获取的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104462885A true CN104462885A (zh) | 2015-03-25 |
Family
ID=52908912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410842205.4A Pending CN104462885A (zh) | 2014-12-30 | 2014-12-30 | 防止原始代码被获取的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104462885A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784202A (zh) * | 2016-08-25 | 2018-03-09 | 大连楼兰科技股份有限公司 | 利用加密存储技术防止获取原始代码的方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236590A (zh) * | 2008-03-07 | 2008-08-06 | 北京邮电大学 | 一种基于门限密码体制的软件分割保护的实现方法 |
CN103455764A (zh) * | 2013-08-27 | 2013-12-18 | 无锡华御信息技术有限公司 | 一种基于文件分割合并技术的文件加密以及解密系统 |
CN103617128A (zh) * | 2013-12-11 | 2014-03-05 | 长城信息产业股份有限公司 | 一种嵌入式系统及安全操作系统的实现方法 |
CN103679037A (zh) * | 2013-12-05 | 2014-03-26 | 长城信息产业股份有限公司 | 非对称加密认证方法和基于非对称加密认证的嵌入式设备 |
-
2014
- 2014-12-30 CN CN201410842205.4A patent/CN104462885A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236590A (zh) * | 2008-03-07 | 2008-08-06 | 北京邮电大学 | 一种基于门限密码体制的软件分割保护的实现方法 |
CN103455764A (zh) * | 2013-08-27 | 2013-12-18 | 无锡华御信息技术有限公司 | 一种基于文件分割合并技术的文件加密以及解密系统 |
CN103679037A (zh) * | 2013-12-05 | 2014-03-26 | 长城信息产业股份有限公司 | 非对称加密认证方法和基于非对称加密认证的嵌入式设备 |
CN103617128A (zh) * | 2013-12-11 | 2014-03-05 | 长城信息产业股份有限公司 | 一种嵌入式系统及安全操作系统的实现方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784202A (zh) * | 2016-08-25 | 2018-03-09 | 大连楼兰科技股份有限公司 | 利用加密存储技术防止获取原始代码的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112005237B (zh) | 安全区中的处理器与处理加速器之间的安全协作 | |
CN104156642B (zh) | 一种基于安全触控屏控制芯片的安全密码输入系统和方法 | |
US9514285B2 (en) | Creating stack position dependent cryptographic return address to mitigate return oriented programming attacks | |
KR101608510B1 (ko) | 글로벌 플랫폼 규격을 사용하는 발행자 보안 도메인에 대한 키 관리 시스템 및 방법 | |
US9584311B2 (en) | Decrypting data | |
US20170206174A1 (en) | Secure memory storage | |
US9571280B2 (en) | Application integrity protection via secure interaction and processing | |
US20120079282A1 (en) | Seamless end-to-end data obfuscation and encryption | |
US20100088523A1 (en) | Trusted platform module security | |
CN104268444A (zh) | 一种云OS Java源代码保护方法 | |
CN204242180U (zh) | 一种基于安全触控屏控制芯片的安全密码输入系统 | |
US7636441B2 (en) | Method for secure key exchange | |
CN114124364B (zh) | 密钥安全处理方法、装置、设备及计算机可读存储介质 | |
CN104023009B (zh) | 一种Web系统许可证验证方法 | |
CN113569248A (zh) | 数据处理的方法以及计算设备 | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
CN103745170A (zh) | 磁盘数据的处理方法及装置 | |
CN104462885A (zh) | 防止原始代码被获取的方法 | |
CN113542303B (zh) | 秘钥在非可信环境的软件导入系统及方法 | |
US9507955B2 (en) | System and method for executing code securely in general purpose computer | |
US11595201B2 (en) | System and method for generation of a disposable software module for cryptographic material protection | |
US20170134379A1 (en) | Method for securing an application and data | |
EP3193274B1 (en) | Secure memory storage | |
CN107784202A (zh) | 利用加密存储技术防止获取原始代码的方法及系统 | |
EP3009952A1 (en) | System and method for protecting a device against attacks on procedure calls by encrypting arguments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150325 |
|
RJ01 | Rejection of invention patent application after publication |