CN117390702B - 一种分体式驱动加壳方法、装置、电子设备及存储介质 - Google Patents

一种分体式驱动加壳方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117390702B
CN117390702B CN202311690760.5A CN202311690760A CN117390702B CN 117390702 B CN117390702 B CN 117390702B CN 202311690760 A CN202311690760 A CN 202311690760A CN 117390702 B CN117390702 B CN 117390702B
Authority
CN
China
Prior art keywords
driver
shell
loaded
target driver
target
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
CN202311690760.5A
Other languages
English (en)
Other versions
CN117390702A (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.)
XIAMEN TIPRAY TECHNOLOGY CO LTD
Original Assignee
XIAMEN TIPRAY 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 XIAMEN TIPRAY TECHNOLOGY CO LTD filed Critical XIAMEN TIPRAY TECHNOLOGY CO LTD
Priority to CN202311690760.5A priority Critical patent/CN117390702B/zh
Publication of CN117390702A publication Critical patent/CN117390702A/zh
Application granted granted Critical
Publication of CN117390702B publication Critical patent/CN117390702B/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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种分体式驱动加壳方法、装置、电子设备及存储介质,涉及计算机技术领域。方法包括:接收加壳请求,加壳请求中包括待加壳的目标驱动程序;根据目标驱动程序的体量大小编写一个无意义函数;确定用于装载目标驱动程序的壳驱动,在壳驱动的代码中加入所述无意义函数,向签名机构提交进行数字签名;获取一对私钥和公钥,采用私钥对目标驱动程序进行加密保护并生成校验信息,打包成待装载部件,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;在所述目标驱动程序重新编译后,重新打包产生新的待装载部件,与现有技术相比,本申请对驱动程序采用分体式加壳保护,不需要重新签名,可以节省时间。

Description

一种分体式驱动加壳方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种分体式驱动加壳方法、装置、电子设备及存储介质。
背景技术
目前版本的电脑操作系统中,驱动程序要运行就必需得给驱动程序带上相关机构的驱动签名了,或者在系统启动时选择忽略数字签名验证,这使得当需要对替换的新编译的驱动程序进行测试观察时,都需要先等待十几二十分钟,以便新编译的驱动程序通过相关机构签名,或者客户计算机水平较高,可以协助关闭系统签名验证,在需要多次重新编译、替换驱动文件进行测试观察时,这个过程就更加的费时费力。
通常都是应用层程序有用到加壳,实际也可以用于驱动程序上,但驱动程序因为运行在系统内核层,安全检测等更复杂,在驱动程序上实际使用加壳的例子很少,并且常见的加壳方案都是一体式的,即把需要保护的可执行程序打包包含到壳程序内部形成一个单一文件。
一体式的加壳方案,目前找到的加壳方案都是这种,将原文件与壳程序一起打包成一个新的文件,一旦原文件有修改则重新打包后的新文件必定也发生变化,其侧重的是对可执行程序的保护,将可执行程序打包到壳程序内部,必定因为可执行程序发生变化而造成打包出来的带壳文件内容发生变化,如果应用于应用层程序,可以直接使用自己的数字证书签名或者不签名都可以运行,几乎不需要花费额外的时间,但对于驱动程序来说,需要带有相关机构的数字签名才能正常运行。这种方案加壳形成的新文件必需重新提交到相关机构网站上进行签名后才能使用,从成功提交到完成约需要二十分钟。所以一体式加壳方案只能保护驱动程序,但无法减少维护过程中提交相关机构签名的时间和人力的开销。
发明内容
本申请的目的是提供一种分体式驱动加壳方法、装置、电子设备及存储介质。
第一方面,本申请实施例提供了 一种分体式驱动加壳方法,包括:
接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序;
根据所述目标驱动程序的体量大小编写一个无意义函数;
确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名;
获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于所述壳程序解密所述待装载部件
设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;
在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件。
一种可能的实现方式中,所述根据所述目标驱动程序的体量大小编写一个无意义函数,包括:
确定所述目标驱动程序的体量大小;
编写一个体量超过所述目标驱动程序体量两倍的无意义函数。
一种可能的实现方式中,所述在所述壳驱动的代码中加入所述无意义函数,包括:
在所述壳驱动的代码节中产生一段长度足以容纳所述目标驱动程序文件展开后大小的连续空间;
修改所述壳驱动的代码节的权限,增加写权限,并重新计算及更新因修改代码节权限导致变化的壳驱动可执行文件头上的校验值。
一种可能的实现方式中,所述采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,包括:
获取所述目标驱动程序的体量、明文内容哈希值后,使用所述私钥对该目标驱动程序进行加密,计算加密后的密文内容哈希值,将待装载部件版本、所述目标驱动程序的体量、明文内容哈希值、密文内容哈希值、密文内容长度、待装载部件头部校验值作为校验信息写入待装载部件头部,将所述待装载部件头部与加密后的所述目标驱动程序一起组合成待装载部件。
第二方面,本申请实施例提供了一种分体式驱动加壳装置,包括:
接收模块,用于接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序;
编写模块,用于根据所述目标驱动程序的体量大小编写一个无意义函数;
签名模块,用于确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名;
加密模块,用于获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于所述壳程序解密所述待装载部件
设置模块,用于设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;
打包模块,用于在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件。
一种可能的实现方式中,所述编写模块,具体用于:
确定所述目标驱动程序的体量大小;
编写一个体量超过所述目标驱动程序体量两倍的无意义函数。
一种可能的实现方式中,所述签名模块,具体用于:
在所述壳驱动的代码节中产生一段长度足以容纳所述目标驱动程序文件展开后大小的连续空间;
修改所述壳驱动的代码节的权限,增加写权限,并重新计算及更新因修改代码节权限导致变化的壳驱动可执行文件头上的校验值。
一种可能的实现方式中,所述加密模块,具体用于:
获取所述目标驱动程序的体量、明文内容哈希值后,使用所述私钥对该目标驱动程序进行加密,计算加密后的密文内容哈希值,将待装载部件版本、所述目标驱动程序的体量、明文内容哈希值、密文内容哈希值、密文内容长度、待装载部件头部校验值作为校验信息写入待装载部件头部,将所述待装载部件头部与加密后的所述目标驱动程序一起组合成待装载部件。
第三方面,本申请提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行以实现如第一方面所述的方法。
第四方面,本申请实提供了一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如第一方面所述的方法。
相较于现有技术,本申请提供的分体式驱动加壳方法,通过接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序;根据所述目标驱动程序的体量大小编写一个无意义函数;确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名;获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于所述壳程序解密所述待装载部件;设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件,与现有技术相比,本申请对驱动程序采用分体式加壳保护,将壳驱动和驱动程序保持为两个文件,驱动注册表上对应该驱动程序的文件路径指向壳驱动,因为修改代码只改变原驱动程序,不会改变壳驱动,所以不需要重新签名,可以节省时间。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例所提供的一种分体式驱动加壳方法的流程图;
图2示出了本申请实施例所提供的一种分体式驱动加壳装置的示意图;
图3示出了本申请实施例所提供的一种电子设备的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
另外,术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请提供一种分体式驱动加壳方法、装置、电子设备及存储介质,下面结合附图进行详细介绍。
请参考图1,图1是本申请实施例提供的一种分体式驱动加壳方法的流程图,包括以下步骤S101~S106:
S101、接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序。
目标驱动程序是需要加壳保护的驱动程序。
本申请中,用于装载受保护驱动程序的驱动称为壳驱动,包含受保护驱动程序及校验信息的包文件称为待装载部件,打包受保护驱动程序到待装载部件的程序称为打包部件。
S102、根据所述目标驱动程序的体量大小编写一个无意义函数。
具体的,步骤S102可以实现为:确定所述目标驱动程序的体量大小;编写一个体量超过所述目标驱动程序体量两倍的无意义函数。
S103、确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名。
具体的,上述步骤S103中在所述壳驱动的代码中加入所述无意义函数的步骤可以实现为:在所述壳驱动的代码节中产生一段长度足以容纳所述目标驱动程序文件展开后大小的连续空间;修改所述壳驱动的代码节的权限,增加写权限,并重新计算及更新因修改代码节权限导致变化的壳驱动可执行文件头上的校验值。
具体的,在壳驱动代码中,编写一个无意义但体量巨大的函数(记为FRaw),使得在编译后,在壳驱动代码节(.text节)中产生一段长度很大足以容纳受保护驱动程序文件展开后大小的连续空间,控制FRaw的体量,使得其大小为当前受保护驱动程序的2倍以上,以使得壳驱动尽可能久的不需要更新,修改.text节的权限,增加写权限,并重新计算及更新因修改.text节权限导致变化的壳驱动可执行文件头(PE头)上的校验值,提交该壳驱动进行数字签名。
S104、获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于所述壳程序解密所述待装载部件。
具体的,上述步骤S104中采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤可以实现为:获取所述目标驱动程序的体量、明文内容哈希值后,使用所述私钥对该目标驱动程序进行加密,计算加密后的密文内容哈希值,将待装载部件版本、所述目标驱动程序的体量、明文内容哈希值、密文内容哈希值、密文内容长度、待装载部件头部校验值作为校验信息写入待装载部件头部,将所述待装载部件头部与加密后的所述目标驱动程序一起组合成待装载部件。
具体的,可以获取一对2048位的RSA私钥和公钥,保留私钥用于打包部件加密受保护驱动程序成待装载部件,公钥用于壳驱动解密待装载部件。私钥和公钥的获取可从任意来源或自行计算生成。
哈希值可以由MD5算法生成,本申请中对驱动程序文件进行加密,可以增加逆向分析的难度。
打包部件获取受保护驱动程序文件的大小、明文内容MD5后,使用私钥对该受保护驱动程序进行RSA加密,计算密文内容MD5,将待装载部件版本、受保护驱动程序文件大小、明文内容MD5、密文内容MD5、密文内容长度、待装载部件头部校验值写入待装载部件头部,与RSA加密后的受保护驱动文件内容一起组合成待装载部件。
S105、设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径。
具体的,在所述壳驱动的驱动服务注册表中添加文本类型注册表项OrgContent,其值设置为待装载部件路径。壳驱动启动时,获取自身驱动服务注册表中的OrgContent,读取待装载部件,使用公钥对待装载部件头部进行解密,计算头部内容校验值对比头部存储的校验值,按头部中存储的受保护驱动程序文件大小,计算受保护驱动程序密文内容的MD5,对比头部中存储的密文内容MD5,使用公钥解密受保护驱动程序密文内容,计算受保护驱动程序明文内容的MD5,对比头部中存储的明文内容MD5,以上数项对比内容均相同则认为这是一个有效的待装载部件,否则认为是一个恶意的伪冒文件,停止装载过程。本申请结合文件大小、明文MD5、密文MD5对文件进行验证以防止篡改伪造待装载部件。
若验证通过,选择FRaw中一地址为0x10000倍数的位置为受保护驱动程序的基地址BaseAddr,按解密后的受保护驱动程序文件内容的PE头,将受保护驱动程序的各节展开到以BaseAddr为起始位置的内存中,按其重定向节(Relocate节)中各节点值与BaseAddr值修正Relocate节中对应的各变量、内部函数地址等值。枚举当前系统各模块信息,修正展开后的受保护驱动程序的导入表中各函数地址,调用受保护驱动程序的入口函数完成受保护驱动程序的初始化。
可见,本申请中在驱动程序体量大小及明文MD5、密文MD5都匹配后,展开明文的受保护驱动程序到壳驱动的.text节,按Relocate节修复内部函数参数等地址并按当前系统环境修复导入表中函数地址后,调用受保护驱动程序的入口函数以进行初始化。
S106、在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件。
具体的,在受保护的驱动程序因调整代码增加代码等原因重新编译后,按步骤S104重新打包产生新的待装载部件,因壳驱动完全无变更,无需重新提交进行驱动文件签名,只需替换原待装载部件,重启系统即可完成新驱动程序的替换,可以减少问题排查期间频繁替换驱动程序所需的时间浪费,以及降低客户配合操作的难度。
本申请实施例提供的分体式驱动加壳方法具有以下有益效果:
按照本申请提供的分体式驱动加壳方法,即壳驱动与加密后的原驱动程序保持为两个独立文件,壳驱动本身在带数字签名后,就无需再改动,会变化的只有加密后原驱动程序本身,对于壳驱动来说不管要加载的受保护的驱动程序如何变化,由于对于操作系统来说加载的是壳驱动本身,系统只校验壳驱动本身的微软签名是否有效,而壳驱动在每次产生新的加密的原驱动程序时都不需要修改,其数字签名都是有效状态,无需重新签名。壳驱动启动后,获取其驱动服务所在注册表上配置要装载的加密状态受保护驱动程序路径及校验信息,将受保护驱动程序读取到壳驱动内部展开并进行初始化,以实现加载运行该驱动程序的目的。这个方案在需要频繁通过远程进行技术支持的客户环境下替换新驱动程序进行测试时,可以节省大量原本等待数字签名的时间。
简单的说,系统启动一个驱动时按注册表上该驱动服务所设置的文件路径去检测该文件的数字签名是否有效,对于其他的一体式的加壳方案来说,会将壳与原文件打包成同一个文件,这样它每次代码有修改,打包出来的文件就有变化需要重新提交进行数字签名。而本申请采用的分体式加壳方法,将壳和原文件保持为两个文件,驱动注册表上对应该驱动服务的文件路径指向壳程序,因为修改代码只改变原文件,不会改变壳程序,所以不需要重新签名,可以节省时间。
在上述的实施例中,提供了一种分体式驱动加壳方法,与之相对应的,本申请还提供一种分体式驱动加壳装置10。本申请实施例提供的分体式驱动加壳装置可以实施上述分体式驱动加壳方法,该分体式驱动加壳装置可以通过软件、硬件或软硬结合的方式来实现。例如,该分体式驱动加壳装置可以包括集成的或分开的功能模块或单元来执行上述各方法中的对应步骤。请参考图2所示,包括:
接收模块101,用于接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序;
编写模块102,用于根据所述目标驱动程序的体量大小编写一个无意义函数;
签名模块103,用于确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名;
加密模块104,用于获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于所述壳程序解密所述待装载部件
设置模块105,用于设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;
打包模块106,用于在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件。
一种可能的实现方式中,所述编写模块102,具体用于:
确定所述目标驱动程序的体量大小;
编写一个体量超过所述目标驱动程序体量两倍的无意义函数。
一种可能的实现方式中,所述签名模块103,具体用于:
在所述壳驱动的代码节中产生一段长度足以容纳所述目标驱动程序文件展开后大小的连续空间;
修改所述壳驱动的代码节的权限,增加写权限,并重新计算及更新因修改代码节权限导致变化的壳驱动可执行文件头上的校验值。
一种可能的实现方式中,所述加密模块104,具体用于:
获取所述目标驱动程序的体量、明文内容哈希值后,使用所述私钥对该目标驱动程序进行加密,计算加密后的密文内容哈希值,将待装载部件版本、所述目标驱动程序的体量、明文内容哈希值、密文内容哈希值、密文内容长度、待装载部件头部校验值作为校验信息写入待装载部件头部,将所述待装载部件头部与加密后的所述目标驱动程序一起组合成待装载部件。
本申请实施例提供的分体式驱动加壳装置与本申请实施例提供的分体式驱动加壳方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的方法对应的电子设备,所述电子设备可以是用于客户端的电子设备,例如手机、笔记本电脑、平板电脑、台式机电脑等,以执行上述分体式驱动加壳方法。
请参考图3,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图3所示,所述电子设备20包括:处理器200,存储器201,总线202和通信接口203,所述处理器200、通信接口203和存储器201通过总线202连接;所述存储器201中存储有可在所述处理器200上运行的计算机程序,所述处理器200运行所述计算机程序时执行本申请前述任一实施方式所提供的分体式驱动加壳方法。
其中,存储器201可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口203(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线202可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器201用于存储程序,所述处理器200在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的所述分体式驱动加壳方法可以应用于处理器200中,或者由处理器200实现。
处理器200可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器200中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器200可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器201,处理器200读取存储器201中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的电子设备与本申请实施例提供的分体式驱动加壳方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的分体式驱动加壳方法对应的计算机可读存储介质,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的分体式驱动加壳方法。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的分体式驱动加壳方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,其均应涵盖在本申请的权利要求和说明书的范围当中。

Claims (6)

1.一种分体式驱动加壳方法,其特征在于,包括:
接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序;
根据所述目标驱动程序的体量大小编写一个无意义函数;
确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名;
获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于壳程序解密所述待装载部件;
设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;
在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件;
所述根据所述目标驱动程序的体量大小编写一个无意义函数,包括:
确定所述目标驱动程序的体量大小;
编写一个体量超过所述目标驱动程序体量两倍的无意义函数;
所述在所述壳驱动的代码中加入所述无意义函数,包括:
在所述壳驱动的代码节中产生一段长度足以容纳所述目标驱动程序文件展开后大小的连续空间;
修改所述壳驱动的代码节的权限,增加写权限,并重新计算及更新因修改代码节 权限导致变化的壳驱动可执行文件头上的校验值。
2.根据权利要求1所述的方法,其特征在于,所述采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,包括:
获取所述目标驱动程序的体量、明文内容哈希值后,使用所述私钥对该目标驱动程序进行加密,计算加密后的密文内容哈希值,将待装载部件版本、所述目标驱动程序的体量、明文内容哈希值、密文内容哈希值、密文内容长度、待装载部件头部校验值作为校验信息写入待装载部件头部,将所述待装载部件头部与加密后的所述目标驱动程序一起组合成待装载部件。
3.一种分体式驱动加壳装置,其特征在于,包括:
接收模块,用于接收加壳请求,所述加壳请求中包括待加壳的目标驱动程序;
编写模块,用于根据所述目标驱动程序的体量大小编写一个无意义函数;
签名模块,用于确定用于装载所述目标驱动程序的壳驱动,在所述壳驱动的代码中加入所述无意义函数,向签名机构提交加入所述无意义函数的壳驱动进行数字签名;
加密模块,用于获取一对私钥和公钥,采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件,设置所述公钥用于壳程序解密所述待装载部件;
设置模块,用于设置驱动注册表上对应所述目标驱动程序的文件路径指向所述壳驱动,在所述壳驱动的驱动服务注册表中添加文本类型注册表项,其值设置为所述待装载部件路径;
打包模块,用于在所述目标驱动程序重新编译后,按照采用所述私钥对所述目标驱动程序进行加密保护并生成校验信息,将加密后的目标驱动程序和所述校验信息打包成待装载部件的步骤,重新打包产生新的待装载部件;
所述编写模块,具体用于:
确定所述目标驱动程序的体量大小;
编写一个体量超过所述目标驱动程序体量两倍的无意义函数;
所述签名模块,具体用于:
在所述壳驱动的代码节中产生一段长度足以容纳所述目标驱动程序文件展开后大小的连续空间;
修改所述壳驱动的代码节的权限,增加写权限,并重新计算及更新因修改代码节权限导致变化的壳驱动可执行文件头上的校验值。
4.根据权利要求3所述的装置,其特征在于,所述加密模块,具体用于:
获取所述目标驱动程序的体量、明文内容哈希值后,使用所述私钥对该目标驱动程序进行加密,计算加密后的密文内容哈希值,将待装载部件版本、所述目标驱动程序的体量、明文内容哈希值、密文内容哈希值、密文内容长度、待装载部件头部校验值作为校验信息写入待装载部件头部,将所述待装载部件头部与加密后的所述目标驱动程序一起组合成待装载部件。
5.一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时以实现如权利要求1至2任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如权利要求1至2任一项所述的方法。
CN202311690760.5A 2023-12-11 2023-12-11 一种分体式驱动加壳方法、装置、电子设备及存储介质 Active CN117390702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311690760.5A CN117390702B (zh) 2023-12-11 2023-12-11 一种分体式驱动加壳方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311690760.5A CN117390702B (zh) 2023-12-11 2023-12-11 一种分体式驱动加壳方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117390702A CN117390702A (zh) 2024-01-12
CN117390702B true CN117390702B (zh) 2024-03-15

Family

ID=89463470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311690760.5A Active CN117390702B (zh) 2023-12-11 2023-12-11 一种分体式驱动加壳方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117390702B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016127516A1 (zh) * 2015-02-13 2016-08-18 中兴通讯股份有限公司 操作系统的文件签名方法、文件校验方法及装置
CN108304700A (zh) * 2017-12-19 2018-07-20 浙江泰米电子科技有限公司 基于mcu的软件防反编译加密方法
WO2021218331A1 (zh) * 2020-04-28 2021-11-04 深圳壹账通智能科技有限公司 离线软件授权方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4518541B2 (ja) * 2004-01-16 2010-08-04 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016127516A1 (zh) * 2015-02-13 2016-08-18 中兴通讯股份有限公司 操作系统的文件签名方法、文件校验方法及装置
CN108304700A (zh) * 2017-12-19 2018-07-20 浙江泰米电子科技有限公司 基于mcu的软件防反编译加密方法
WO2021218331A1 (zh) * 2020-04-28 2021-11-04 深圳壹账通智能科技有限公司 离线软件授权方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种驱动类软件的保护方法;朱静轩;刘贵全;;计算机工程与应用(08);全文 *

Also Published As

Publication number Publication date
CN117390702A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US8150039B2 (en) Single security model in booting a computing device
KR101393307B1 (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
CN109784007B (zh) 一种字节码加密的方法、字节码解密的方法及终端
US20220075873A1 (en) Firmware security verification method and device
US8745407B2 (en) Virtual machine or hardware processor for IC-card portable electronic devices
JP2013232219A (ja) マイクロコントローラにおけるデータの安全な取扱いのための方法および装置
WO2009129192A1 (en) Code image personalization for a computing device
US8369526B2 (en) Device, system, and method of securely executing applications
JP4074620B2 (ja) メモリ管理ユニット
JP2010510574A (ja) セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法
EP2874091A1 (en) Partition-based apparatus and method for securing bios in a trusted computing system during execution
EP2874092A1 (en) Recurrent BIOS verification with embedded encrypted hash
US20150134974A1 (en) Apparatus and method for securing bios in a trusted computing system
CN111201553B (zh) 一种安全元件及相关设备
CN111191195A (zh) 一种用于保护apk的方法和装置
US20150186681A1 (en) Method of encryption and decryption for shared library in open operating system
CN109445705A (zh) 固件认证方法及固态硬盘
CN112115429B (zh) 一种Java类加密、解密方法及计算机可读存储介质
CN114398598A (zh) 一种库文件加密方法、解密方法以及加密装置
CN111931190B (zh) 一种基于xip处理器系统的启动方法
CN113342425A (zh) 一种Linux嵌入式系统的启动方法、装置和存储介质
CN117390702B (zh) 一种分体式驱动加壳方法、装置、电子设备及存储介质
US20220171671A1 (en) Methods and systems for generating core dump in a user equipment
CN115080929A (zh) Fpga程序的加密方法、解密方法、系统以及存储介质

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
GR01 Patent grant
GR01 Patent grant