一种加壳软件转存文件的转换方法、装置和系统的制作方法

文档序号:9727258阅读:552来源:国知局
一种加壳软件转存文件的转换方法、装置和系统的制作方法
【技术领域】
[0001]本发明涉及一种加壳软件转存文件的转换方法、装置和系统,属于软件应用领域。
【背景技术】
[0002]传统的基于Windows平台开发的软件,在发布前往往需要先对程序进行加壳处理。加壳的全称是可执行程序资源压缩,即利用特殊的算法,对EXE、DLL等文件里的数据进行压缩、加密处理,并且把解压算、解密算法作为程序的壳附加到被保护的程序中。加壳后的程序执行时,壳先于原程序得到控制权,对原始程序解密、还原,之再把控制权交还给原程序,执行原程序的代码部分。经加壳后的软件可以独立运行,但不能直接查看其源代码,可以有效保护软件不被非法修改或反编译,因此被广泛用来保护软件版权,防止软件免遭破解。
[0003]在软件调试领域,通常使用转存文件模拟错误发生时的程序状态。转存文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到转存文件中。用户在使用软件时,一旦出现系统异常或者崩溃,系统就自动会生成转存文件,供软件测试人员调试。但经加壳后的软件崩溃后,生成的转存文件经过了改写,无法在调试错误时直接定位到出错的代码位置。这就给软件检错工作带来了极大的不便。

【发明内容】

[0004]针对现有技术存在的上述问题,本发明提供了一种加壳软件转存文件的转换方法、装置和系统的技术方案,以便解决加壳后的软件生成的转存文件无法用于调试的技术问题。
[0005]基于本发明的一个方面,提供一种加壳软件转存文件的转换方法,包括以下步骤: 步骤S10,获取原可执行文件;
步骤S20,提取所述原可执行文件中表示映像大小和校验和的值;
步骤S30,获取加壳后可执行文件生成的原转存文件;
步骤S40,根据提取的所述表示映像大小和校验和的对应值替换所述转存文件的对应值;
步骤S50,保存修改后的转存文件。
[0006]优选地,步骤S20和S30之间包括:
步骤S21,提取所述原可执行文件的文件名;
步骤S30和S40之间还包括:
步骤S31,查找所述转存文件中表示所述加壳后可执行文件的文件名的位置;
步骤S32,用所述原可执行文件的文件名替换所述加壳后可执行文件的文件名。
[0007]优选地,步骤S31包括以下子步骤:
步骤S311,读取原转存文件;
步骤S312,以遍历每个流的方式,查找加壳后可执行文件的文件名的位置。
[0008]优选地,所述转存文件为Windows系统平台定义的dump文件。
[0009]优选地,所述加壳方式为通过Themida软件实施的加壳处理。
[0010]基于本发明的另一个方面,提供了一种加壳软件转存文件的转换装置,包括:
可执行文件获取模块,用于获取原可执行文件;
指定值提取模块,用于提取所述原可执行文件中表示映像大小和校验和的值;
转存文件获取模块,用于获取加壳后可执行文件生成的原转存文件;
替换模块,用于根据提取的所述表示映像大小和校验和的对应值替换所述转存文件的对应值;
转存文件保存模块,用于保存修改后的转存文件。
[0011]基于本发明的第三个方面,提供了一种加壳软件转存文件的转换系统,包括: 存储器,用于存储应用程序;
处理器,执行所述应用程序以用于实施以下步骤:
获取原可执行文件;
提取所述原可执行文件中表示映像大小和校验和的值;
获取加壳后可执行文件生成的原转存文件;
根据提取的所述表示映像大小和校验和的对应值替换所述转存文件的对应值;
保存修改后的转存文件。
[0012]本发明的有益效果:通过对加壳后的软件生成的转存文件一键式的转换,简化了调试步骤,可以在保护软件的同时,也可以收集用户报告的软件崩溃信息,进行调试。大大降低了调试的难度,方便开发人员进行查找bug。本发明利于未加壳的原可执行文件,对上述转存文件进行转换,相对于一般的脱壳技术,操作简单正确率高,避免了脱壳失败的风险。
【附图说明】
[0013]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0014]图1所示为直接使用加壳软件生成的转存文件进行调试的图像;
图2所示为根据本发明第一实施例的一种加壳软件转存文件的转换方法的示意图;
图3所示为根据本发明第一实施例的一种加壳软件转存文件的转换方法的流程图;
图4所示为根据本发明第二实施例的一种加壳软件转存文件的转换方法的详细流程图;
图5所示为根据本发明第三实施例的一种加壳软件转存文件的转换系统的示意图。
【具体实施方式】
[0015]为了便于调试,软件常常设定为在发生异常时,将内存中的程序镜像转存为非易失性存储器上的转存文件,以便开发测试人员调试。例如Windows系统平台定义了用户态转出文件的格式(即转存文件,例如dump文件),并提供了 API来创建和读取用户态文件。原可执行文件被配置为在出现异常或者崩溃时,调用MS DbgHelp.dll的API接口MinidumpWritedump从而生成记录了程序的执行状态的dump文件。
[0016]在软件开发测试工作中,软件开发人员将含有可执行文件的软件分发给用户或者测试人员使用。用户或者测试人员在使用软件的过程中遇到异常,软件将自动生成包含了错误发生时的软件状态转存文件(例如dump文件)供开发者分析调试。当可执行文件未经过加壳处理时,开发者只需将dump文件与软件的可执行文件和编译软件工程时生成的PCB文件放在同一文件夹内,即可使用软件开发工具进行调试;当可执行文件经过加壳处理时,由于dump文件内的部分数值发生了改变,在调试时软件开发工具将无法正常打开dump文件。以经过常见的加壳软件Themida加壳为例,参考图1,加壳软件生成的dump文件在调试时显示为汇编代码,可读性差,无法调试。
[0017]参考图2-3,根据本发明的第一实施例的一种加壳软件转存文件的转换方法,利用转换系统,将读取原可执行文件(即加壳前的可执行文件)中表示映像大小和校验和的值,将上述值覆写在的加壳后可执行文件生成的原转存文件(以dump文件为例,即原dump文件)对应值上,经过修改后的dump文件可以直接用于对原软件进行调试,操作方法与未经过加壳处理时相同,大大降低了调试的难度,方便开发人员进行查找bug。其【具体实施方式】包括以下步骤:首先用二进制的方式将未经过加壳处理的原可执行文件读入内存,获取指定位置的表示映像大小和校验和的字段,记录其对应值。然后读取原dump文件的文件头到MINIDUMP_HEADER pMdpHeader,dump文件的模块信息如下(参考MSDN):
typedef struct _MINIDUMP_MODULE {
UL0NG64 BaseOfImage;
UL0NG32 SizeOfImage;
UL0NG32 Checksum;
UL0NG32 TimeDateSta
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1