CN105468477B - 一种Android系统保护方法及装置 - Google Patents
一种Android系统保护方法及装置 Download PDFInfo
- Publication number
- CN105468477B CN105468477B CN201510805466.3A CN201510805466A CN105468477B CN 105468477 B CN105468477 B CN 105468477B CN 201510805466 A CN201510805466 A CN 201510805466A CN 105468477 B CN105468477 B CN 105468477B
- Authority
- CN
- China
- Prior art keywords
- image file
- recovery image
- recovery
- file
- backup
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Abstract
本发明公开了一种Android系统保护方法及装置,该保护方法包括下述步骤:获取recovery镜像文件的备份文件,所述recovery镜像文件的备份文件包含所述Android系统编译时生成的recovery镜像文件及其哈希值和文件大小;判断系统当前recovery镜像文件是否被修改;若是,将所述recovery镜像文件的备份文件升级至recovery分区。本发明的Android系统保护方法及装置,避免装置刷入第三方recovery镜像文件后通过OTA升级包刷机,防止因自行刷机出现无法正常使用甚至变砖情况的发生,提高了装置的安全性,保证用户正常使用和厂商的利益。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种Android系统保护方法及装置。
背景技术
OTA升级是一种常用的终端固件升级方式,用户可通过OTA升级进行终端系统固件的升级操作。
为了增加OTA升级的安全性,防止将第三方的OTA升级包刷到Android终端中,OTA升级前会从recovery镜像文件中加载公钥文件,用公钥文件验证嵌在OTA升级包中的签名信息是否正确,验证成功后才会执行升级,验证失败,则不执行升级操作。
但是,这种机制并不十分安全,因为如果用户通过某些方式将自己的终端刷入第三方的recovery镜像文件,这样与之对应的OTA升级包就能通过签名校验,实现刷机操作。刷机后,终端厂商预置的应用以及后期升级的应用,刷机的用户将无法体验到;同时刷机存在很大风险,非常容易出现机器无法正常使用甚至成砖的情况,不利于用户使用。
发明内容
本发明提供了一种Android系统保护方法及装置,避免装置刷入第三方recovery镜像文件后通过OTA升级包刷机,提高了系统的安全性。
为解决上述技术问题,本发明采用下述技术方案予以实现:
一方面,本发明提出了一种Android系统保护方法,包括下述步骤:
获取recovery镜像文件的备份文件,所述recovery镜像文件的备份文件包含所述Android系统编译时生成的recovery镜像文件及其哈希值和文件大小;
判断系统当前recovery镜像文件是否被修改;
若是,将所述recovery镜像文件的备份文件升级至recovery分区。
另一方面,本发明还提出了一种Android系统保护的装置,包括:
获取模块,用于获取recovery镜像文件的备份文件;
判断模块,用于判断系统当前recovery镜像文件是否被修改;
升级模块,用于将所述recovery镜像文件的备份文件升级至recovery分区。
与现有技术相比,本发明的优点和积极效果是:本发明的Android系统保护方法及装置,判断系统当前recovery镜像文件是否被修改,如果被修改了,则将recovery镜像文件的备份文件升级到recovery分区,因此,即使用户通过某些手段刷入了第三方的recovery镜像文件,也可以将原有的recovery镜像文件还原回去,避免装置刷入第三方recovery镜像文件后通过OTA升级包刷机,防止用户因自行刷机出现的无法正常使用甚至变砖的情况的发生,提高了装置的安全性,既保证了用户的正常使用,也保证了厂商的利益。
结合附图阅读本发明的具体实施方式后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明提出的Android系统保护方法的一个流程图;
图2是本发明提出的Android系统保护方法的另一个流程图;
图3是图2中计算系统当前recovery镜像文件的哈希值的流程图;
图4是本发明提出的Android系统装置的一个实施例的结构示意图;
图5是图4中判断模块的结构示意图;
图6是图4中升级模块的结构示意图。
具体实施方式
本实施例的Android系统保护方法及装置,通过判断recovery分区中的recovery镜像文件是否被修改,如果被修改了,则将recovery镜像文件的备份文件升级到recovery分区,避免装置刷入第三方recovery镜像文件后通过OTA升级包刷机,提高了系统的安全性。
为了使本发明的目的、技术方案及优点更加清楚明白,以下将结合附图和实施例,对本发明作进一步详细说明。
本实施例的Android系统保护方法具体包括下述步骤。
启动bootloader(开机引导程序),检测移动终端触发进入recovery模式的操作。触发移动终端进入recovery模式的触发操作有多种,比如:按下特定的物理按键(比如同时按下power键和音量下键)、选中设置中的恢复出厂设置功能、选中设置中的系统更新功能、执行adb reboot recovery等。
在检测到任一上述触发操作后,执行如图1所示的步骤。
步骤S10:获取recovery镜像文件的备份文件。
recovery镜像文件的备份文件包含有Android系统编译时生成的recovery镜像文件及其哈希值(hash值)和文件大小(size)。优选的,recovery镜像文件的备份文件存储在system分区。
为此,在前期版本制作时,需要修改编译流程,在recovery镜像文件生成后,计算其哈希值及文件大小,并将该哈希值和文件大小追加在recovery镜像文件结尾处,重新打包生成包含有哈希值及文件大小的新的recovery镜像文件,该新的recovery镜像文件称为recovery镜像文件的备份文件。
在出厂对终端装置进行升级时,包含有哈希值和文件大小的recovery镜像文件会被升级到recovery分区,备份文件会被存储到system分区。
将哈希值及文件大小保存在recovery镜像文件的目的是随着系统升级recovery镜像文件中的hash值及size也会随之更新,保证系统升级后用于判断recovery镜像文件是否被篡改的哈希值更新为最新的。如果hash值及size不随着recovery镜像文件的升级而升级,会出现系统升级后,recovery分区中的recovery镜像文件已经升级为新版本,升级后重启过程中在执行本方案的判断recovery镜像文件是否被篡改的判断程序时就会判断错误,因为如果使用旧的size计算recovery分区recovery镜像文件的哈希值,则一定跟旧的hash值不同,而实际上升级的recovery镜像文件是官方的,合法的。
当然,在获取recovery镜像文件的备份文件之前,还应判断该备份文件是否存在,如果存在,则执行步骤S10;如果不存在,说明recovery镜像文件的备份文件被篡改,启动boot(禁止进入recovery模式),进入正常开机模式。
步骤S11:判断系统当前recovery镜像文件是否被修改。
系统当前recovery镜像文件即recovery分区中的recovery镜像文件。在本实施例中,通过判断系统当前recovery镜像文件的哈希值与 recovery镜像文件的备份文件的哈希值是否一致来判断系统当前recovery镜像文件是否被修改。
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的,数据的哈希值可以校验数据是否被修改。
因此,本实施例通过判断系统当前recovery镜像文件的哈希值与 recovery镜像文件的备份文件的哈希值是否一致来判断系统当前recovery镜像文件是否被修改,判断准确率较高。
如图2所示,判断系统当前recovery镜像文件是否被修改的具体步骤如下:
步骤S110:计算系统当前recovery镜像文件的哈希值。
具体步骤参见图3所示:
步骤S110-1:获取系统当前recovery镜像文件的首地址。
步骤S110-2:获取Android系统编译时生成的recovery镜像文件的文件大小。
先获取recovery镜像文件的备份文件,再读取备份文件中的size域,从而获取recovery镜像文件的备份文件的文件大小。
步骤S110-3:根据系统当前recovery镜像文件的首地址和Android系统编译时生成的recovery镜像文件的文件大小计算系统当前recovery镜像文件的哈希值。
在本实施例中,根据系统当前recovery镜像文件的首地址和 recovery镜像文件的备份文件的文件大小用哈希算法计算哈希值。
哈希计算有很多现成的算法,比如MD5(Message Digest Algorithm 5)、SHA(Secure Hash Algorithm)等。在本实施例中,优选使用的是SHA,SHA(Secure HashAlgorithm),即安全哈希算法,主要适用于数字签名标准(Digital Signature StandardDSS)里面定义的数字签名算法。
哈希值的具体计算过程如下:
首先,根据系统当前recovery镜像文件的首地址和 recovery镜像文件的备份文件的文件大小将要计算的数据块读到缓存。
其次,利用SHA算法对缓存中的数据计算sha-1摘要。
再次,格式化sha-1摘要,获取重新分布的十六进制字符串输出。即获得了系统当前recovery镜像文件的哈希值。
步骤S111:读取所述recovery镜像文件的备份文件的哈希值。
获取recovery镜像文件的备份文件,读取备份文件中的hash域,从而获取recovery镜像文件的备份文件的hash值。
步骤S112:判断系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值是否一致;
若不一致,则判断出系统当前recovery镜像文件被修改了,执行步骤S12;
若一致,则判断出系统当前recovery镜像文件没有被修改,执行步骤S13。
步骤S12:将recovery镜像文件的备份文件升级至recovery分区。
由于系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值不一致,说明系统当前recovery镜像文件被修改了,将recovery镜像文件的备份文件升级到recovery分区,从而保证系统安全。
步骤S13:执行升级后recovery镜像文件中的init程序,直到进入recovery模式。
在recovery模式中,可以进行固件升级。
OTA升级是在recovery模式下进行升级。有两种方式:一是OTA完整包升级,通过文件拷贝覆盖进行升级;二是OTA差分升级,是通过打补丁的方式进行升级。
在recovery模式中,进行OTA升级前,首先要获取系统当前recovery镜像文件中(即recovery分区中的recovery镜像文件)的签名文件,与OTA升级包中的签名信息进行匹配;若匹配成功,则进行升级;若匹配失败,则退出升级。
OTA升级recovery分区的recovery镜像文件的升级流程为:OTA升级时将基于boot镜像文件和recovery镜像文件形成的补丁及脚本升级到system分区,下次开机时执行备份在system分区的上述脚本,将所述补丁打到recovery分区,完成recovery分区recovery镜像文件的升级;也就是说,recovery分区的recovery镜像文件的升级需要借助一次开机操作,即OTA升级时recovery分区recovery镜像文件的升级是滞后的。
OTA升级后,system分区中的recovery镜像文件的备份文件已经升级为新版本的,recovery镜像文件中的哈希值及文件大小是与新版本的recovery镜像文件对应的。但是此时,recovery分区的recovery镜像文件还是旧版本的。因此,开机时会误认为recovery镜像文件被篡改,但事实上只是recovery分区的recovery镜像文件升级滞后造成的。
由于OTA升级时recovery分区的recovery镜像文件的升级是滞后的,会造成OTA升级后判断recovery镜像文件是否被篡改出现误判断,为了避免此现象的发生,本实施例在recovery模式的init进程中增加打recovery镜像文件补丁服务和监听服务,监听服务用于监听OTA升级,在监听到OTA升级成功后触发打recovery镜像文件补丁操作,将补丁打到recovery分区,完成recovery分区recovery镜像文件的升级,实现recovery分区recovery镜像文件的即时升级。
本实施例的Android系统保护方法,比较系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值是否相同,如果不相同,说明系统当前recovery镜像文件,即recovery分区中的recovery镜像文件被修改了,则将system分区中recovery镜像文件的备份文件升级到recovery分区,因此,即使用户通过某些手段刷入了第三方的recovery镜像文件,本实施例的方法也可以将原有的recovery镜像文件还原回去,避免装置刷入第三方recovery镜像文件后通过OTA升级包刷机,防止用户因自行刷机出现的无法正常使用甚至变砖的情况的发生,提高了系统的安全性,既保证了用户的正常使用,也保证了厂商的利益。
本实施例还提出了一种Android系统保护的装置,该装置主要包括获取模块40、判断模块50、升级模块60,参见图4所示。
获取模块40用于获取recovery镜像文件的备份文件。
判断模块50用于判断系统当前recovery镜像文件是否被修改。具体地,判断模块50主要包括计算单元501、获取单元502、比较单元503等,参见图5所示,其中,计算单元501用于计算系统当前recovery镜像文件的哈希值;获取单元502用于读取recovery镜像文件的备份文件的哈希值;比较单元503用于比较所述系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值。
其中,计算单元501具体用于:获取系统当前recovery镜像文件的首地址;获取Android系统编译时生成的recovery镜像文件的文件大小; 根据所述系统当前recovery镜像文件的首地址和Android系统编译时生成的recovery镜像文件的文件大小计算系统当前recovery镜像文件的哈希值。
升级模块60用于将所述recovery镜像文件的备份文件升级至recovery分区。具体来说,升级模块60用于当系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值不一致时,将所述recovery镜像文件的备份文件升级至recovery分区;将所述recovery镜像文件的备份文件升级至recovery分区之后,执行升级后recovery镜像文件中的init程序,直到进入recovery模式。
在升级模块60中还设置有打recovery镜像文件补丁单元601和监听单元602,参见图6所示。
监听单元601用于监听OTA升级。
打recovery镜像文件补丁单元602用于打recovery镜像文件补丁,将补丁打到recovery分区。
具体的Android系统保护的装置的工作过程,已经在上述Android系统保护方法中详述,此处不予赘述。
本实施例的Android系统保护的装置,判断系统当前recovery镜像文件是否被修改,如果被修改了,则将system分区中recovery镜像文件的备份文件升级到recovery分区,因此,即使用户通过某些手段刷入了第三方的recovery镜像文件,本实施例的装置也可以将原有的recovery镜像文件还原回去,避免装置刷入第三方recovery镜像文件后通过OTA升级包刷机,防止用户因自行刷机出现的无法正常使用甚至变砖的情况的发生,提高了装置的安全性,既保证了用户的正常使用,也保证了厂商的利益。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,对于本领域的普通技术人员来说,依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明所要求保护的技术方案的精神和范围。
Claims (5)
1.一种Android系统保护方法,其特征在于,包括下述步骤:
获取recovery镜像文件的备份文件,所述recovery镜像文件的备份文件包含所述Android系统编译时生成的recovery镜像文件及其哈希值和文件大小;
判断系统当前recovery镜像文件是否被修改;
若是,将所述recovery镜像文件的备份文件升级至recovery分区;
其中,所述判断系统当前recovery镜像文件是否被修改包括:
计算所述系统当前recovery镜像文件的哈希值;
读取所述recovery镜像文件的备份文件的哈希值;
判断所述系统当前recovery镜像文件的哈希值与所述recovery镜像文件的备份文件的哈希值是否一致;
其中,所述计算系统当前recovery镜像文件的哈希值具体为:
获取所述系统当前recovery镜像文件的首地址;
获取所述Android系统编译时生成的recovery镜像文件的文件大小;
根据所述系统当前recovery镜像文件的首地址和Android系统编译时生成的recovery镜像文件的文件大小计算系统当前recovery镜像文件的哈希值。
2.根据权利要求1所述方法,其特征在于,所述将recovery镜像文件的备份文件升级至recovery分区具体为:
当所述系统当前recovery镜像文件的哈希值与所述recovery镜像文件的备份文件的哈希值不一致时,将所述recovery镜像文件的备份文件升级至recovery分区。
3.根据权利要求1所述方法,其特征在于,所述将recovery镜像文件的备份文件升级至recovery分区之后还包括:
执行升级后recovery镜像文件中的init程序,直到进入recovery模式。
4.一种Android系统保护的装置,其特征在于,包括:
获取模块,用于获取recovery镜像文件的备份文件,所述recovery镜像文件的备份文件包含所述Android系统编译时生成的recovery镜像文件及其哈希值和文件大小;
判断模块,用于判断系统当前recovery镜像文件是否被修改;
升级模块,用于将所述recovery镜像文件的备份文件升级至recovery分区;
其中,所述判断模块包括:
计算单元,用于计算系统当前recovery镜像文件的哈希值;
获取单元,用于读取recovery镜像文件的备份文件的哈希值;
比较单元,用于比较所述系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值;
其中,所述计算单元具体用于:
获取系统当前recovery镜像文件的首地址;
获取Android系统编译时生成的recovery镜像文件的文件大小;
根据所述系统当前recovery镜像文件的首地址和Android系统编译时生成的recovery镜像文件的文件大小计算系统当前recovery镜像文件的哈希值。
5.根据权利要求4所述装置,其特征在于,所述升级模块具体用于:
当系统当前recovery镜像文件的哈希值与recovery镜像文件的备份文件的哈希值不一致时,将所述recovery镜像文件的备份文件升级至recovery分区;
将所述recovery镜像文件的备份文件升级至recovery分区之后,执行升级后recovery镜像文件中的init程序,直到进入recovery模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510805466.3A CN105468477B (zh) | 2015-11-20 | 2015-11-20 | 一种Android系统保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510805466.3A CN105468477B (zh) | 2015-11-20 | 2015-11-20 | 一种Android系统保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468477A CN105468477A (zh) | 2016-04-06 |
CN105468477B true CN105468477B (zh) | 2019-02-26 |
Family
ID=55606211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510805466.3A Active CN105468477B (zh) | 2015-11-20 | 2015-11-20 | 一种Android系统保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468477B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789280A (zh) * | 2016-12-27 | 2017-05-31 | Tcl集团股份有限公司 | 一种基于Android系统的升级保护方法及系统、移动终端 |
CN107168818B (zh) * | 2017-03-30 | 2021-05-04 | 努比亚技术有限公司 | 终端及刷机失败恢复方法 |
CN107301070B (zh) * | 2017-06-20 | 2020-09-29 | 福州汇思博信息技术有限公司 | 一种升级方法及终端 |
CN107346392B (zh) * | 2017-06-27 | 2021-09-21 | 努比亚技术有限公司 | 终端系统更改识别方法、装置及可读存储介质 |
CN109254786B (zh) * | 2018-09-30 | 2022-04-05 | 湖北华联博远科技有限公司 | 一种软件备份还原方法及系统 |
CN110162488B (zh) * | 2018-11-15 | 2022-02-11 | 深圳乐信软件技术有限公司 | 缓存一致性校验方法、装置、服务器和存储介质 |
CN110532813A (zh) * | 2019-09-04 | 2019-12-03 | 四川长虹电器股份有限公司 | 一种Android智能电视系统防刷机的方法 |
CN113504931B (zh) * | 2021-07-29 | 2022-08-16 | 中国第一汽车股份有限公司 | 一种控制器测试方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636171A (zh) * | 2015-03-04 | 2015-05-20 | 深圳市欧珀通信软件有限公司 | 升级的方法、装置及移动终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489266B2 (en) * | 2009-12-11 | 2016-11-08 | Google Inc. | System and method of storing backup image catalog |
CN102609326B (zh) * | 2012-01-17 | 2014-11-12 | 大唐移动通信设备有限公司 | 一种数据下载处理方法及装置 |
CN104899066B (zh) * | 2015-06-19 | 2017-12-05 | 青岛海信移动通信技术股份有限公司 | 一种连续升级的方法及装置 |
-
2015
- 2015-11-20 CN CN201510805466.3A patent/CN105468477B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636171A (zh) * | 2015-03-04 | 2015-05-20 | 深圳市欧珀通信软件有限公司 | 升级的方法、装置及移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN105468477A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468477B (zh) | 一种Android系统保护方法及装置 | |
CN108399339B (zh) | 一种基于安全芯片的可信启动方法 | |
US8296579B2 (en) | System and method for updating a basic input/output system (BIOS) | |
CN106843957B (zh) | 系统固件升级方法及装置 | |
CN104408370B (zh) | 安卓系统安全性验证方法及其验证装置 | |
CN106656502B (zh) | 计算机系统及安全执行的方法 | |
US8108536B1 (en) | Systems and methods for determining the trustworthiness of a server in a streaming environment | |
US7454616B2 (en) | Code authentication upon bootup for cable modems | |
US9749141B2 (en) | Secure boot devices, systems, and methods | |
US8266691B2 (en) | Renewable integrity rooted system | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN111523112A (zh) | 一种服务器安全启动方法、装置、设备及介质 | |
CN104573435A (zh) | 用于终端权限管理的方法和终端 | |
US9519786B1 (en) | Firmware integrity ensurance and update | |
TW201621647A (zh) | 作業系統更新方法 | |
CN106303709B (zh) | 一种机顶盒及其应用程序升级方法、系统 | |
CN106569907B (zh) | 一种系统启动文件的校验及编译方法 | |
JP6861739B2 (ja) | 組み込み装置及びファームウェア更新方法 | |
CN113806811A (zh) | 一种被篡改固件自动恢复方法、装置及存储介质 | |
JP4818824B2 (ja) | プログラム管理システムおよび端末装置 | |
WO2020233044A1 (zh) | 一种插件校验方法、设备、服务器及计算机可读存储介质 | |
CN113127879A (zh) | 一种固件可信启动方法、电子设备及可读存储介质 | |
KR102386614B1 (ko) | IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법 | |
CN110650199B (zh) | 远程连接方法及装置 | |
US11836231B2 (en) | Android system-based smart terminal unlocking method and device, and smart terminal |
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 |