一种带壳软件脱壳的方法及装置制造方法及图纸

技术编号:15705030 阅读:185 留言:0更新日期:2017-06-26 11:07
本发明专利技术提供了一种带壳软件脱壳的方法及装置,该方法包括:在脱壳系统上运行待脱壳的带壳软件时,通过脱壳系统的加载接口将带壳软件的原始程序的明文数据存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息;通过加载接口获取存储信息;根据存储信息从系统内存中读取带壳软件的原始程序的明文数据。本发明专利技术提供的带壳软件脱壳方法及装置,通过加载接口获取明文数据存储在系统内存中的存储信息并读取原始程序文件的明文数据,无需对每种壳程序进行逻辑分析或者流程追踪,脱壳效率较高;且本发明专利技术通过加载接口进行软件脱壳,可适用于相同接口的系统进行多种带壳软件的脱壳,包括被分段加密的带壳软件,具有较强的通用性。

Method and device for shelling shell software

The present invention provides a method and a device with shell software shell, the method includes: to shell shell software running in the shell system, system memory data storage system to express shelling by loading interface system of the shell shell software of the original program in information storage and record the plaintext data storage in the system memory; obtaining information stored by loading interface; according to the plaintext data storage information read from the memory in the system with shell software of the original program. With software and device shell hulling method provided by the invention, the plaintext data storage information by loading interface to obtain the plaintext data stored in system memory and read the original files, without the need for each shell program for logic analysis or process tracing, shelling efficiency is higher; and the invention of software shelling by loading interface system can be applied to the same interface for a variety of shell software shelling, including segmented shell encryption software, has a strong versatility.

【技术实现步骤摘要】
一种带壳软件脱壳的方法及装置
本专利技术涉及计算机
,特别涉及一种带壳软件脱壳的方法及装置。
技术介绍
软件加壳是一种常用的软件保护技术,首先对软件的原始程序进行加密或者以某种形式隐藏原始程序入口,之后在软件中加入一个预启动程序,即壳程序。当软件开始运行时,首先运行的是壳程序,壳程序对原始程序进行解密或获得原始程序入口,之后将运行权交给原始程序,此时,原始程序开始运行,而壳程序运行结束。软件加壳技术可以有效的对原始软件进行保护,是一种通用的,效果较好的软件保护方法。相比于普通软件开发者,很多病毒、木马程序的开发者更加倾向于使用加壳技术保护自己的恶意软件,从而在较长的时间内达到非法目的。对于加壳保护的恶意软件,恶意代码检测系统往往只能检测到壳程序的代码,无法检测到原始程序中被隐藏的恶意代码,而壳程序中一般不含有恶意代码,因此软件加壳也成为了绕过软件安全检测的途径。目前,现有的脱壳方案一般是对某种壳程序的逻辑进行破解,或通过动态调试,跟踪壳程序的运行流程,跟踪到壳程序运行之后,从系统内存中获取开始运行的原始程序。然而,现有的脱壳方案一般具有极强的针对性,每种壳程序的加壳方法、运行流程、采用的算法都存在差异。因此每种脱壳方法可能只对一种壳或一种壳的某个版本有效,通用性较差。
技术实现思路
本专利技术提供了一种带壳软件脱壳的方法及装置,其目的是为了解决现有的软件脱壳方案具有极强的针对性,而通用性较差的问题。为了达到上述目的,本专利技术的实施例提供了一种带壳软件脱壳的方法,该方法包括:在脱壳系统上运行待脱壳的带壳软件时,通过脱壳系统的加载接口将带壳软件的原始程序的明文数据存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息;通过加载接口获取存储信息;根据存储信息从系统内存中读取带壳软件的原始程序的明文数据。优选地,在脱壳系统上运行待脱壳的带壳软件之前,该方法还包括:获取原始的脱壳系统的源代码;在源代码中增加一获取指令,获取指令用于将脱壳系统的加载接口配置具有获取内存地址并读取内存的功能;对增加获取指令的源代码进行编译,得到编译后的脱壳系统的系统文件,并运行脱壳系统。优选地,通过脱壳系统的加载接口将带壳软件的原始程序的明文数据存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息,包括:若带壳软件的原始程序只有一次加密过程,则将带壳软件的原始程序的明文数据一次性存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息;或若带壳软件的原始程序被分段加密,则将带壳软件的原始程序的明文数据分段存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息以及分段数据,分段数据至少包括带壳软件的原始程序的分段信息以及每个分段存储至系统内存的时间戳。优选地,根据存储信息从系统内存中读取带壳软件的原始程序的明文数据,包括:若带壳软件的原始程序只有一次加密过程,则根据存储信息从系统内存中读取带壳软件的原始程序的明文数据,或使脱壳系统根据存储信息从系统内存中读取带壳软件的原始程序的明文数据,并从脱壳系统中读取带壳软件的原始程序的明文数据;或若带壳软件的原始程序被分段加密,则根据分段信息、时间戳以及存储信息从系统内存中读取每个分段对应的明文数据,并对每个分段对应的明文数据进行汇总,得到待脱壳软件的原始程序的明文数据并存储。优选地,通过加载接口获取存储信息,包括:通过加载接口将存储信息写入文件或者实时输出。为了实现上述目的,本专利技术还提供了一种带壳软件脱壳的装置,该装置包括:存储模块,用于在脱壳系统上运行待脱壳的带壳软件时,通过脱壳系统的加载接口将带壳软件的原始程序的明文数据存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息;获取模块,用于通过加载接口获取存储信息;数据读取模块,用于根据存储信息从系统内存中读取带壳软件的原始程序的明文数据。优选地,该装置还包括:编译模块,用于存储模块在脱壳系统上运行待脱壳的带壳软件之前,获取原始的脱壳系统的源代码;在源代码中增加一获取指令,获取指令用于将脱壳系统的加载接口配置具有获取内存地址并读取内存的功能;对增加获取指令的源代码进行编译,得到编译后的脱壳系统的系统文件,并运行脱壳系统。优选地,存储模块包括:第一存储子模块,用于若带壳软件的原始程序只有一次加密过程时,将带壳软件的原始程序的明文数据一次性存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息;第二存储子模块,用于若带壳软件的原始程序被分段加密时,将带壳软件的原始程序的明文数据分段存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息以及分段数据,分段数据至少包括带壳软件的原始程序的分段信息以及每个分段存储至系统内存的时间戳。优选地,数据读取模块包括:第一读取子模块,用于若带壳软件的原始程序只有一次加密过程时,根据存储信息从系统内存中读取带壳软件的原始程序的明文数据,或使脱壳系统根据存储信息从系统内存中读取带壳软件的原始程序的明文数据,并从脱壳系统中读取带壳软件的原始程序的明文数据;第二读取子模块,用于若带壳软件的原始程序被分段加密时,根据分段信息、时间戳以及存储信息从系统内存中读取每个分段对应的明文数据,并对每个分段对应的明文数据进行汇总,得到待脱壳软件的原始程序的明文数据并存储。优选地,获取模块用于:通过加载接口将存储信息写入文件或者实时输出。本专利技术的上述方案至少包括以下有益效果:本专利技术提供的带壳软件脱壳方法及装置,直接通过加载接口获取明文数据存储在系统内存中的存储信息并读取原始程序文件的明文数据,无需对每种壳程序进行逻辑分析或者流程追踪,脱壳效率较高;且本专利技术通过加载接口进行软件脱壳,可适用于相同接口的系统进行多种带壳软件的脱壳,包括被分段加密的带壳软件,具有较强的通用性。附图说明图1为本专利技术的第一实施例提供的带壳软件脱壳的方法的基本步骤流程图;图2为本专利技术的第二实施例提供的带壳软件脱壳的方法的基本步骤流程图;图3为本专利技术的第三实施例提供的带壳软件脱壳的方法的基本步骤流程图;图4为本专利技术的第四实施例提供的带壳软件脱壳的方法的基本步骤流程图;图5为本专利技术的第五实施例提供的带壳软件脱壳的方法装置的结构示意图。具体实施方式为使本专利技术要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。第一实施例参见图1,本专利技术的第一实施例提供了一种带壳软件脱壳的方法,该方法包括:步骤101,在脱壳系统上运行待脱壳的带壳软件时,通过脱壳系统的加载接口将带壳软件的原始程序的明文数据存储至脱壳系统的系统内存中,并记录明文数据存储在系统内存中的存储信息。其中,加载接口用于将原始程序的明文数据存储至系统内存中,并记录相应的存储信息(内存中的起始地址、占用内存大小等信息)。通常情况下,带壳软件的原始程序的明文数据存储至脱壳系统的系统内存时都需经过加载接口来实现,因此,加载接口可有效地记录明文数据存储在系统内存中的存储信息。步骤102,通过加载接口获取存储信息。其中,通过加载接口获取存储信息,也就是使加载接口提供它所记录的通过加载接口获取存储信息。步骤103,根据存储信息从系统内存中读取带壳软件的原始程序的明文数据。其中,根据加载接口获取的存储本文档来自技高网...
一种带壳软件脱壳的方法及装置

【技术保护点】
一种带壳软件脱壳的方法,其特征在于,所述方法包括:在脱壳系统上运行待脱壳的带壳软件时,通过所述脱壳系统的加载接口将所述带壳软件的原始程序的明文数据存储至所述脱壳系统的系统内存中,并记录所述明文数据存储在所述系统内存中的存储信息;通过所述加载接口获取所述存储信息;根据所述存储信息从所述系统内存中读取所述带壳软件的原始程序的明文数据。

【技术特征摘要】
1.一种带壳软件脱壳的方法,其特征在于,所述方法包括:在脱壳系统上运行待脱壳的带壳软件时,通过所述脱壳系统的加载接口将所述带壳软件的原始程序的明文数据存储至所述脱壳系统的系统内存中,并记录所述明文数据存储在所述系统内存中的存储信息;通过所述加载接口获取所述存储信息;根据所述存储信息从所述系统内存中读取所述带壳软件的原始程序的明文数据。2.根据权利要求1所述的方法,其特征在于,所述在脱壳系统上运行待脱壳的带壳软件之前,所述方法还包括:获取原始的脱壳系统的源代码;在所述源代码中增加一获取指令,所述获取指令用于将所述脱壳系统的加载接口配置具有获取内存地址并读取内存的功能;对增加所述获取指令的源代码进行编译,得到编译后的脱壳系统的系统文件,并运行所述脱壳系统。3.根据权利要求1所述的方法,其特征在于,所述通过所述脱壳系统的加载接口将所述带壳软件的原始程序的明文数据存储至所述脱壳系统的系统内存中,并记录所述明文数据存储在所述系统内存中的存储信息,包括:若所述带壳软件的原始程序只有一次加密过程,则将所述带壳软件的原始程序的明文数据一次性存储至所述脱壳系统的系统内存中,并记录所述明文数据存储在所述系统内存中的存储信息;或若所述带壳软件的原始程序被分段加密,则将所述带壳软件的原始程序的明文数据分段存储至所述脱壳系统的系统内存中,并记录所述明文数据存储在所述系统内存中的存储信息以及分段数据,所述分段数据至少包括所述带壳软件的原始程序的分段信息以及每个分段存储至系统内存的时间戳。4.根据权利要求3所述的方法,其特征在于,所述根据所述存储信息从所述系统内存中读取所述带壳软件的原始程序的明文数据,包括:若所述带壳软件的原始程序只有一次加密过程,则根据所述存储信息从系统内存中读取所述带壳软件的原始程序的明文数据,或使所述脱壳系统根据所述存储信息从系统内存中读取所述带壳软件的原始程序的明文数据,并从所述脱壳系统中读取所述带壳软件的原始程序的明文数据;或若所述带壳软件的原始程序被分段加密,则根据所述分段信息、时间戳以及存储信息从系统内存中读取所述每个分段对应的明文数据,并对所述每个分段对应的明文数据进行汇总,得到所述待脱壳软件的原始程序的明文数据并存储。5.根据权利要求1所述的方法,其特征在于,所述通过所述加载接口获取所述存储信息,包括:通过所述加载接口...

【专利技术属性】
技术研发人员:耿慧拯刘芳石松泉柏洪涛
申请(专利权)人:中国移动通信集团公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1