CN104680043A - 一种可执行文件的保护方法及装置 - Google Patents

一种可执行文件的保护方法及装置 Download PDF

Info

Publication number
CN104680043A
CN104680043A CN201510113009.8A CN201510113009A CN104680043A CN 104680043 A CN104680043 A CN 104680043A CN 201510113009 A CN201510113009 A CN 201510113009A CN 104680043 A CN104680043 A CN 104680043A
Authority
CN
China
Prior art keywords
executable file
shell
information
add
module
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.)
Granted
Application number
CN201510113009.8A
Other languages
English (en)
Other versions
CN104680043B (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.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield 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 Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201510113009.8A priority Critical patent/CN104680043B/zh
Publication of CN104680043A publication Critical patent/CN104680043A/zh
Application granted granted Critical
Publication of CN104680043B publication Critical patent/CN104680043B/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种可执行文件的保护方法及装置,当要对可执行文件进行加壳时,首先分析可执行文件是否已经被加壳,如果是,则对该可执行文件进行脱壳后,再对脱壳后的可执行文件进行加壳。这样,就可以实现对已加壳的可执行文件进行再次加壳,保护可执行文件。

Description

一种可执行文件的保护方法及装置
技术领域
本发明涉及计算机的可执行文件处理技术,特别涉及一种可执行文件的保护方法及装置。
背景技术
随着计算机技术的发展,越来越多的可执行文件被编译出来以实现计算机的各种应用。计算机的可执行文件由于其数字化的特征,从问世以来就一直遭受着盗版的困扰。由于盗版的存在,不仅给可执行文件的开发者造成了巨大的损失,也极大地阻碍了整个行业的发展。目前,防止盗版,对可执行文件进行保护的主要方法为加壳技术。加壳技术的全称是可执行文件资源压缩,是保护可执行文件的常用手段,加壳过的可执行文件可以直接运行,但是不能查看源代码,要经过脱壳技术才可以查看源代码。加壳技术常用的方式是在二进制的可执行文件中植入一段代码,在运行的时候该段代码优先取得可执行文件的控制权,阻止对可执行文件的代码反汇编分析或动态分析,保护可执行文件的版权,防止其他程序对可执行文件的破解。
当对可执行文件进行加壳时,该可执行文件可能已经被加壳,这时就可能导致对可执行文件的加壳失败或者即使加壳成功,也会导致再次加壳后的可执行文件无法运行。因此,如何对已经加壳的可执行文件进行再次加壳成为了一个亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种可执行文件的保护方法,该方法能够对已加壳的可执行文件进行再次加壳。
本发明实施例还提供一种可执行文件的保护装置,该装置能够对已加壳的可执行文件进行再次加壳。
根据上述目的,本发明是这样实现的:
一种可执行文件的保护方法,该方法包括:
判断可执行文件已经被加壳处理;
根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳;
根据设置的加壳方式,对可执行文件进行加壳。
当判断可执行文件未被加壳处理时,该方法还包括:根据设置的加壳方式,对可执行文件进行加壳。
所述判断可执行文件已经被加壳处理为:
对可执行文件的结构信息进行分析,以确定被加壳处理。
所述对可执行文件的结构信息进行分析为:分析可执行文件的文件头信息、区段信息、输入表信息、入口点信息、重定位信息和资源信息中的一种或多种组合。
所述根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳为:
根据可执行文件已经被加壳所采用的加壳方式,寻找可执行文件的原始入口点信息后,将可执行文件的代码和对应的数据进行转存内存映像,然后查找可执行文件的输入表信息,对输入表信息进行修改,修改转存内存映像中的输入表信息,保存。
一种可执行文件的保护装置,包括:分析模块、判定模块、脱壳模块及保护模块,其中,
分析模块,用于对可执行文件的结构信息进行分析;
判定模块,用于根据分析模块的分析结果判定可执行文件被加壳处理,将可执行文件发送给脱壳模块处理;
脱壳模块,用于根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳后,将可执行文件发送给保护模块处理;
保护模块,用于根据设置的加壳方式,对可执行文件进行加壳。
所述判定模块,还用于根据分析模块的分析结果判定可执行文件未被加壳处理,直接将可执行文件发送给保护模块处理。
所述分析模块,还用于所述对可执行文件的结构信息进行分析为:分析可执行文件的文件头信息、区段信息、输入表信息、入口点信息、重定位信息和资源信息中的一种或多种组合。
脱壳模块,还用于所述根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳为:根据可执行文件已经被加壳所采用的加壳方式,寻找可执行文件的原始入口点信息后,将可执行文件的代码和对应的数据进行转存内存映像,然后查找可执行文件的输入表信息,对输入表信息进行修改,修改转存内存映像中的输入表信息,保存。
由上述方案可以看出,本发明实施例当要对可执行文件进行加壳时,首先分析可执行文件是否已经被加壳,如果是,则对该可执行文件进行脱壳后,再对脱壳后的可执行文件进行加壳。这样,就可以实现对已加壳的可执行文件进行再次加壳,保护可执行文件。
附图说明
图1为本发明实施例提供的可执行文件的保护方法流程图;
图2为本发明实施例提供的COFF文件格式的PE文件结构示意图;
图3为本发明实施例提供的可执行文件的保护装置结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
在对可执行文件进行处理过程中,用户常常需要使用自己的加壳技术对可执行文件进行加壳。但是,要处理的可执行文件可能已经被加壳,这时用户就无法按照自己的方式对已经加壳过的可执行文件进行再次加壳处理,以对可执行文件进行保护。
因此,本发明实施例当要对可执行文件进行加壳时,首先分析可执行文件是否已经被加壳,如果是,则对该可执行文件进行脱壳后,再对脱壳后的可执行文件进行加壳。这样,就可以实现对已加壳的可执行文件进行再次加壳,保护可执行文件。
这样,就可以使得可执行文件按照用户设定的加壳方式进行保护,增加了保护可执行文件的灵活性,增加了再次加壳后的可执行文件的反编译和分析的难度,大大提高了经过处理的可执行文件的安全性。
图1为本发明实施例提供的可执行文件的保护方法流程图,其具体步骤为:
步骤101、判断可执行文件是否已经被加壳处理,如果是,执行步骤103;如果否,执行步骤102;
在本步骤中,对可执行文件的结构信息进行分析,以确定是否被加壳处理;
步骤102、根据设置的加壳方式,对可执行文件进行加壳;
步骤103、根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳;
步骤104、根据设置的加壳方式,对可执行文件进行加壳。
在本发明实施例中,已经被加壳的可执行文件再次被加壳时很有可能失败或者即使加壳成功,也会导致再次加壳后的可执行文件无法运行,比如加壳后的可执行文件的区段表空间不足以再增加一个壳段的区段表,再次加壳就会失败;或者已经加壳的代码中有自校验功能,再次加壳后的可执行文件运行时就会失败等。因此,本发明需要对加壳的可执行文件进行判断,确定是否为加壳后,再进行处理。
在本发明实施例中,所述对可执行文件的结构信息进行分析为:分析可执行文件的文件头信息、区段信息、输入表信息、入口点信息、重定位信息和资源信息中的一种或多种组合,从而确定是否被加壳处理。
在本发明实施例中,所述根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳为:
根据可执行文件已经被加壳所采用的加壳方式,寻找可执行文件的原始入口点信息后,将可执行文件的代码和对应的数据等进行转存内存映像,然后查找可执行文件的输入表信息,对输入表信息进行修改,修改转存内存映像中的输入表信息,保存。
举一个具体例子对本发明实施例进行详细说明。
以微软视窗系统下的32位可移植的执行体(PE)文件为例。
微软视窗系统下的PE文件格式是通用对象(COFF,Common Object FileFormat)文件格式,采用微软视窗系统的编译器产生的目标文件就是COFF文件格式。
COFF文件格式的PE文件结构如图2所示,包括头结构(COFFHEADER)、区段结构(Section Headers)及区段数据(Raw Data),COFF文件格式的PE文件结构的各个部分的详细定义可以参阅微软视窗系统下的定义,这里不再赘述。
为了方便说明,本例子给出了一个具体的PE文件,为微软视窗xp系统下的32位的计算器,名称为calc.exe,版本号为5.1,采用了版本0.98的telock方式进行了加壳,加过壳后的PE文件为calc-pack.exe。
由于telock方式加壳后得到的calc-pack.exe具有校验功能,所以如果直接对calc-pack.exe进行再次加壳,加壳后的可执行文件就无法通过校验,无法正常运行。
因此,采用本发明实施例提供的方法对该calc-pack.exe进行处理:
首先,分析calc-pack.exe的PE文件结构,主要分析文件头信息、区段信息、输入表信息、入口点信息、重定位信息和/或资源信息;
然后,根据calc-pack.exe的PE文件结构的区段表信息及入口点信息可以判断calc-pack.exe已经被加过壳;
在本步骤中,如果未加壳,正常编译的PE文件中代码段为.text或.code,并且PE文件的入口点信息相对虚拟地址位于.text区段或者.code区段中,而由于calc-pack.exe的PE文件结构的区段表信息中的最后一个区段的名称为空,并且入口点信息中入口点相对虚拟地址为0x00020BD6,该虚拟地址位于最后一个名称为空的区段中,因此可以确定calc-pack.exe已经被加过壳;
再次,对calc-pack.exe进行脱壳;
在本步骤中,脱壳的过程主要分为:寻找calc-pack.exe的PE文件原始入口点信息,转存内存映像,查找输入表和修复输入表等几个方面。
具体地,寻找calc-pack.exe的PE文件原始入口点信息相对虚拟地址为0x01012475,转存内存映像,保存为calc_unpack.exe,映像的地址为0x01000000,查找的输入表信息的地址为0x01001000,大小为0x00000224,根据输入表信息,修复calc_unpack.exe的输入表信息,使得calc_unpack.exe可以正常运行;
最后,对calc_unpack.exe进行加壳处理;
在本步骤中,采用用户所设置的外壳工具对calc_unpack.exe进行再次加壳,加壳后的可执行文件为cale_shell.exe,此时cale_shell.exe可以正常运行。
图3为本发明实施例提供的可执行文件的保护装置结构示意图,具体包括:分析模块、判定模块、脱壳模块及保护模块,其中,
分析模块,用于对可执行文件的结构信息进行分析;
判定模块,用于根据分析模块的分析结果判定是否被加壳处理,如果是,将可执行文件发送给脱壳模块处理,如果否,直接将可执行文件发送给保护模块处理;
脱壳模块,用于根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳后,将可执行文件发送给保护模块处理;
保护模块,用于根据设置的加壳方式,对可执行文件进行加壳。
在该结构中,分析模块,还用于所述对可执行文件的结构信息进行分析为:分析可执行文件的文件头信息、区段信息、输入表信息、入口点信息、重定位信息和资源信息中的一种或多种组合。
脱壳模块,还用于所述根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳为:根据可执行文件已经被加壳所采用的加壳方式,寻找可执行文件的原始入口点信息后,将可执行文件的代码和对应的数据等进行转存内存映像,然后查找可执行文件的输入表信息,对输入表信息进行修改,修改转存内存映像中的输入表信息,保存。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种可执行文件的保护方法,其特征在于,该方法包括:
判断可执行文件已经被加壳处理;
根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳;
根据设置的加壳方式,对可执行文件进行加壳。
2.如权利要求1所述的保护方法,其特征在于,当判断可执行文件未被加壳处理时,该方法还包括:根据设置的加壳方式,对可执行文件进行加壳。
3.如权利要求1或2所述的保护方法,其特征在于,所述判断可执行文件已经被加壳处理为:
对可执行文件的结构信息进行分析,以确定被加壳处理。
4.如权利要求3所述的保护方法,其特征在于,所述对可执行文件的结构信息进行分析为:分析可执行文件的文件头信息、区段信息、输入表信息、入口点信息、重定位信息和资源信息中的一种或多种组合。
5.如权利要求4所述的保护方法,其特征在于,所述根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳为:
根据可执行文件已经被加壳所采用的加壳方式,寻找可执行文件的原始入口点信息后,将可执行文件的代码和对应的数据进行转存内存映像,然后查找可执行文件的输入表信息,对输入表信息进行修改,修改转存内存映像中的输入表信息,保存。
6.一种可执行文件的保护装置,其特征在于,包括:分析模块、判定模块、脱壳模块及保护模块,其中,
分析模块,用于对可执行文件的结构信息进行分析;
判定模块,用于根据分析模块的分析结果判定可执行文件被加壳处理,将可执行文件发送给脱壳模块处理;
脱壳模块,用于根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳后,将可执行文件发送给保护模块处理;
保护模块,用于根据设置的加壳方式,对可执行文件进行加壳。
7.如权利要求6所述的保护装置,其特征在于,所述判定模块,还用于根据分析模块的分析结果判定可执行文件未被加壳处理,直接将可执行文件发送给保护模块处理。
8.如权利要求6所述的保护装置,其特征在于,所述分析模块,还用于所述对可执行文件的结构信息进行分析为:分析可执行文件的文件头信息、区段信息、输入表信息、入口点信息、重定位信息和资源信息中的一种或多种组合。
9.如权利要求6所述的保护装置,其特征在于,脱壳模块,还用于所述根据可执行文件已经被加壳所采用的加壳方式对应的脱壳方式,对可执行文件进行脱壳为:根据可执行文件已经被加壳所采用的加壳方式,寻找可执行文件的原始入口点信息后,将可执行文件的代码和对应的数据进行转存内存映像,然后查找可执行文件的输入表信息,对输入表信息进行修改,修改转存内存映像中的输入表信息,保存。
CN201510113009.8A 2015-03-16 2015-03-16 一种可执行文件的保护方法及装置 Active CN104680043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510113009.8A CN104680043B (zh) 2015-03-16 2015-03-16 一种可执行文件的保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510113009.8A CN104680043B (zh) 2015-03-16 2015-03-16 一种可执行文件的保护方法及装置

Publications (2)

Publication Number Publication Date
CN104680043A true CN104680043A (zh) 2015-06-03
CN104680043B CN104680043B (zh) 2018-03-02

Family

ID=53315075

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510113009.8A Active CN104680043B (zh) 2015-03-16 2015-03-16 一种可执行文件的保护方法及装置

Country Status (1)

Country Link
CN (1) CN104680043B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487981A (zh) * 2015-12-09 2016-04-13 珠海金山网络游戏科技有限公司 一种加壳软件转存文件的转换方法、装置和系统
CN106778226A (zh) * 2016-11-24 2017-05-31 四川无声信息技术有限公司 文件壳脱壳方法及装置
CN107908964A (zh) * 2017-10-17 2018-04-13 珠海金山网络游戏科技有限公司 一种针对Android平台Unity3D游戏中加壳文件的安全检测方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153421A1 (en) * 2008-12-15 2010-06-17 Electronics And Telecommunications Research Institute Device and method for detecting packed pe file
CN102024112A (zh) * 2010-12-17 2011-04-20 四川大学 基于静态特征的pe文件加壳检测方法
CN102609666A (zh) * 2012-01-20 2012-07-25 飞天诚信科技股份有限公司 一种可执行程序加壳保护方法
CN103530535A (zh) * 2013-10-25 2014-01-22 苏州通付盾信息技术有限公司 一种Android平台应用程序保护的加脱壳方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153421A1 (en) * 2008-12-15 2010-06-17 Electronics And Telecommunications Research Institute Device and method for detecting packed pe file
CN102024112A (zh) * 2010-12-17 2011-04-20 四川大学 基于静态特征的pe文件加壳检测方法
CN102609666A (zh) * 2012-01-20 2012-07-25 飞天诚信科技股份有限公司 一种可执行程序加壳保护方法
CN103530535A (zh) * 2013-10-25 2014-01-22 苏州通付盾信息技术有限公司 一种Android平台应用程序保护的加脱壳方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李文: ""基于壳技术的软件保护的研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487981A (zh) * 2015-12-09 2016-04-13 珠海金山网络游戏科技有限公司 一种加壳软件转存文件的转换方法、装置和系统
CN105487981B (zh) * 2015-12-09 2018-02-13 珠海金山网络游戏科技有限公司 一种加壳软件转存文件的转换方法、装置和系统
CN106778226A (zh) * 2016-11-24 2017-05-31 四川无声信息技术有限公司 文件壳脱壳方法及装置
CN107908964A (zh) * 2017-10-17 2018-04-13 珠海金山网络游戏科技有限公司 一种针对Android平台Unity3D游戏中加壳文件的安全检测方法及装置
CN107908964B (zh) * 2017-10-17 2021-06-08 珠海金山网络游戏科技有限公司 一种针对Android平台Unity3D游戏中加壳文件的安全检测方法及装置

Also Published As

Publication number Publication date
CN104680043B (zh) 2018-03-02

Similar Documents

Publication Publication Date Title
CN106778103B (zh) 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN108345773B (zh) 基于虚拟机的代码保护方法及装置、电子设备、存储介质
KR101691719B1 (ko) 프로시저로부터의 리턴-타겟 제한적 리턴 명령어들, 프로세서들, 방법들 및 시스템들
US10007784B2 (en) Technologies for control flow exploit mitigation using processor trace
US7587612B2 (en) Generating and communicating information on locations of program sections in memory
US10019240B2 (en) Method and apparatus for detecting code change
Kim et al. RevARM: A platform-agnostic ARM binary rewriter for security applications
US20090271867A1 (en) Virtual machine to detect malicious code
US20170372068A1 (en) Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
US20160275019A1 (en) Method and apparatus for protecting dynamic libraries
TWI791418B (zh) 用以檢測運作時期所產生碼中之惡意碼的系統及方法、與相關電腦程式產品
US20170214704A1 (en) Method and device for feature extraction
KR20140061443A (ko) 확장된 데이터를 갖는 메모리 덤프 및 사용자 프라이버시 보호 기법
CN107408176A (zh) 恶意对象的执行剖析检测
CN109271789B (zh) 恶意进程检测方法、装置、电子设备及存储介质
US9177149B2 (en) Method of detecting malware in an operating system kernel
CN105512521A (zh) 一种软件安装包的加固保护方法和系统
US8775826B2 (en) Counteracting memory tracing on computing systems by code obfuscation
CN113761482A (zh) 一种程序代码保护方法和装置
US20160292417A1 (en) Generic Unpacking of Program Binaries
CN104680043A (zh) 一种可执行文件的保护方法及装置
US20160232346A1 (en) Mechanism for tracking tainted data
CN103514405A (zh) 一种缓冲区溢出的检测方法及系统
Kochberger et al. SoK: automatic deobfuscation of virtualization-protected applications
Dejaeghere et al. Comparing security in ebpf and webassembly

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.