CN106295402B - 一种dll文件的隐藏方法及系统 - Google Patents

一种dll文件的隐藏方法及系统 Download PDF

Info

Publication number
CN106295402B
CN106295402B CN201610671287.XA CN201610671287A CN106295402B CN 106295402 B CN106295402 B CN 106295402B CN 201610671287 A CN201610671287 A CN 201610671287A CN 106295402 B CN106295402 B CN 106295402B
Authority
CN
China
Prior art keywords
dll
section
file
memory address
exe
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.)
Expired - Fee Related
Application number
CN201610671287.XA
Other languages
English (en)
Other versions
CN106295402A (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201610671287.XA priority Critical patent/CN106295402B/zh
Publication of CN106295402A publication Critical patent/CN106295402A/zh
Application granted granted Critical
Publication of CN106295402B publication Critical patent/CN106295402B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种DLL文件的隐藏方法及系统,涉及DLL文件的设置领域。该方法的步骤为:S1:读取EXE文件至内存,将EXE文件的属性字段修改为可读可写;S2:根据EXE文件的内存地址,确定最后一个节的大小、以及在EXE文件中的偏移值;S3:在最后一个节之后增加一个新的DLL节,对DLL节进行设置:将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小;S4:将DLL文件数据写入DLL节在EXE文件中的偏移处。本发明能够将DLL文件隐藏在EXE文件之中,DLL文件非常难以被盗用者找到,进而显著的增大了盗用者自行任意使用应用程序难度,最大化保证了应用程序的使用安全。

Description

一种DLL文件的隐藏方法及系统
技术领域
本发明涉及DLL文件(Dynamic Link Library,动态链接库文件)的设置领域,具体涉及一种DLL文件的隐藏方法及系统。
背景技术
目前,应用程序大多为模块化开发,应用程序的文件组织架构一般包括一个EXE文件(executable program,可执行文件)和多个DLL文件。应用程序发布时,会将EXE文件和多个DLL文件打包形成安装文件;应用程序安装时,会将安装文件中的所有文件存放至安装目录。
但是,EXE文件在安装过程中,盗用者会在安装文件列表中得知DLL文件的位置,进而实现自行使用或修改DLL文件的目的。当DLL文件被不正当使用或修改时,DLL文件对应的应用程序可能无法使用、或者在未授权的情况下使用,进而使得应用程序开发商的利益严重受损。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:将DLL文件隐藏在EXE文件之中,本发明隐藏的DLL文件非常难以被盗用者找到,进而显著的增大了盗用者自行任意使用应用程序难度,最大化保证了应用程序的使用安全、以及应用程序开发商的利益。
为达到以上目的,本发明提供的DLL文件的隐藏方法,包括以下步骤:
S1:读取EXE文件至内存,将EXE文件的属性字段修改为可读可写;
S2:根据EXE文件的内存地址,获取EXE文件节表中第一个节的内存地址;根据第一个节的内存地址,获取EXE文件节表中最后一个节的内存地址;根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值;
S3:在EXE文件节表中,在最后一个节之后增加一个新的DLL节,对DLL节进行设置:将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小;
S4:将DLL文件数据写入DLL节在EXE文件中的偏移处。
本发明提供的实现上述方法的DLL文件的隐藏系统,包括EXE文件读取模块、EXE文件节表查找模块、DLL节生成模块和DLL文件数据写入模块;
EXE文件读取模块用于:读取EXE文件至内存,将EXE文件的属性字段修改为可读可写;
EXE文件节表查找模块用于:根据EXE文件的内存地址,获取EXE文件节表中第一个节的内存地址;根据第一个节的内存地址,获取EXE文件节表中最后一个节的内存地址;根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值;
DLL节生成模块用于:在EXE文件节表中,在最后一个节之后增加一个新的DLL节,对DLL节进行设置:将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小;
DLL文件数据写入模块用于:将DLL文件数据写入DLL节在EXE文件中的偏移处。
与现有技术相比,本发明的优点在于:
本发明在EXE文件节表中新增了一个用于储存DLL文件的DLL节,进而将DLL文件以写入DLL节的方式隐藏在EXE文件中。与现有技术中盗用者会在安装文件列表中得知DLL文件的位置相比,本发明发布和安装应用程序时,因为DLL文件隐藏在EXE文件中,所以安装文件列表中没有DLL文件。因此,盗用者非常难以在安装文件列表中找到本发明隐藏的DLL文件,进而显著的增大了盗用者自行任意使用应用程序难度,最大化保证了应用程序的使用安全、以及应用程序开发商的利益。
进一步,本发明将DLL文件以写入DLL节时,对DLL文件数据进行加密,即使盗用者在EXE文件中找到DLL文件,也需要得知与加密算法对应的解密算法才能读取DLL文件,进一步增大了盗用者自行任意使用应用程序难度。
附图说明
图1为本发明实施例中DLL文件的隐藏方法的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的DLL文件的隐藏方法,包括以下步骤:
S1:通过windows的读取文件函数(CreateFile),读取EXE文件至内存,将EXE文件的属性字段修改为可读可写后打开EXE文件。
S2:根据EXE文件的内存地址,获取EXE文件节表中第一个节的内存地址,根据第一个节的内存地址,获取EXE文件节表中最后一个节的内存地址;根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值。
S2中EXE文件节表的解释为:EXE文件由多个节形组成,每个节存储着不同的数据,一般一个EXE文件包括.text节(代码节)、.data节(数据节)、.reloc节(重定位节)、.idata节(导入表节)等。其中所有的节信息存储在一个节表中(即EXE文件节表),每一个节信息用来告诉本节数据所在EXE文件中的偏移和本节的大小以及本节的名称和本节的属性信息,属性信息包括只读、可读可写、可执行等。
在此基础上S2的具体流程为:
S201:根据EXE文件的内存地址,读取EXE文件的DOS头部内存地址,具体流程为:PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)ExeAddr;其ExeAddr为EXE文件的内存地址,pDosHeader为DOS头部内存地址。
S202:根据DOS头部内存地址(pDosHeader)读取EXE文件的NT头部内存地址,具体流程为:PIMAGE_NT_HEADERS pNtHeader=(PIMAGE_NT_HEADERS)(ExeAddr+pDosHeader->e_lfanew);其中pNtHeader为NT头部内存地址。
S203:根据NT头部内存地址(pNtHeader)获取EXE文件节表中第一个节的内存地址,具体流程为:
Int nSize=sizeof(pNtHeader->FileHeader)+
sizeof(pNtHeader->Signature)+
pNtHeader->FileHeader.SizeOfOptionalHeader;
PIMAGE_SECTION_HEADER pSecHeader=(PIMAGE_SECTION_HEADER)((BYTE)pNtHeader+nSize);
其中pSecHeader为EXE文件节表的第一个节的内存地址。
S204:在EXE文件节表中,根据第一个节的内存地址,获取最后一个节的内存地址,具体流程为:
pLastSectHeader=pSecHeader+(NumberOfSections–1);其中pLastSectHeader为最后一个节的内存地址,NumberOfSections为EXE文件节表中节的总数目。
S205:在EXE文件节表中,根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值。
S3:在EXE文件节表中,在最后一个节之后增加一个新的DLL节,对DLL节进行设置:
S301:将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小。
S302:将DLL节的内存地址pNewSection设置为:pNewSection=pLastSectHeader+1;
S303:将DLL节的节名称设置为“.dlldata”,实际应用中也可以是其他名称,但需要和EXE文件节表中的已有的节名称进行区分,即不能和已有的节名称相同。
S304:将DLL节的属性字段设置为可读可写;
S305:将DLL节的大小赋值为需要存入的DLL文件的大小。
S4:将DLL文件数据写入DLL节在EXE文件中的偏移处后,将新增有DLL节并写入DLL文件的EXE文件保存至磁盘。
S4中将DLL文件写入DLL节在EXE文件中的偏移处的具体流程为:通过windows的读取文件函数(CreateFile),读取DLL文件至内存;采用加密算法对DLL文件数据进行加密后,将加密的DLL文件数据写入DLL节在EXE文件中的偏移处。本实施例中的加密算法可以为DES加密算法(Data Encryption Standard,对称加密算法)。
S5:在电脑上执行包含有本发明的DLL文件的应用程序时,将DLL节中的DLL文件数据进行读取和解密,将解密后的DLL文件数据进行保存;应用程序加载保存的DLL文件数据,以此完成对DLL文件的加载。
本发明提供的实现上述方法的DLL文件的隐藏系统,包括EXE文件读取模块、EXE文件节表查找模块、DLL节生成模块、DLL文件数据写入模块和应用程序执行模块。
EXE文件读取模块用于:读取EXE文件至内存,将EXE文件的属性字段修改为可读可写。
EXE文件节表查找模块用于:根据EXE文件的内存地址,获取EXE文件节表中第一个节的内存地址;根据第一个节的内存地址,获取EXE文件节表中最后一个节的内存地址;根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值。
EXE文件节表查找模块的具体工作流程为:
(1)根据所述EXE文件的内存地址,读取EXE文件的DOS头部内存地址;
(2)根据DOS头部内存地址,读取EXE文件的NT头部内存地址;
(3)根据NT头部内存地址,获取EXE文件节表中第一个节的内存地址;
(4)在EXE文件节表中,根据第一个节的内存地址,获取最后一个节的内存地址;
(5)在EXE文件节表中,根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值。
DLL节生成模块用于:在EXE文件节表中,在最后一个节之后增加一个新的DLL节,对DLL节进行设置:
(1)将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小;
(2)将DLL节的内存地址设置为所述最后一个节的内存地址加1;
(3)将DLL节的节名称与EXE文件节表中的已有的节名称进行区分;
(4)将DLL节的属性字段设置为可读可写;
(5)将DLL节的大小赋值为需要存入的DLL文件的大小。
DLL文件数据写入模块用于:将DLL文件数据写入DLL节在EXE文件中的偏移处,具体工作流程为:读取所述DLL文件至内存,采用加密算法对DLL文件数据进行加密后,将加密的DLL文件数据写入DLL节在EXE文件中的偏移处。
应用程序执行模块用于:执行包含有所述DLL文件的应用程序时,将所述DLL节中的DLL文件数据进行读取,加载读取的DLL文件数据。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (8)

1.一种DLL文件的隐藏方法,其特征在于,该方法包括以下步骤:
S1:读取EXE文件至内存,将EXE文件的属性字段修改为可读可写;
S2:根据EXE文件的内存地址,读取EXE文件的DOS头部内存地址;根据DOS头部内存地址,读取EXE文件的NT头部内存地址;根据NT头部内存地址,获取EXE文件节表中第一个节的内存地址;根据第一个节的内存地址,获取EXE文件节表中最后一个节的内存地址;根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值;
S3:在EXE文件节表中,在最后一个节之后增加一个新的DLL节,对DLL节进行设置:将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小;
S4:将DLL文件数据写入DLL节在EXE文件中的偏移处。
2.如权利要求1所述的DLL文件的隐藏方法,其特征在于,S3中所述对DLL节进行设置还包括以下流程:
将DLL节的内存地址设置为所述最后一个节的内存地址加1;
将DLL节的节名称与EXE文件节表中的已有的节名称进行区分;
将DLL节的属性字段设置为可读可写;
将DLL节的大小赋值为需要存入的DLL文件的大小。
3.如权利要求1所述的DLL文件的隐藏方法,其特征在于,S4的具体流程为:读取所述DLL文件至内存,采用加密算法对DLL文件数据进行加密后,将加密的DLL文件数据写入DLL节在EXE文件中的偏移处。
4.如权利要求1至3任一项所述的DLL文件的隐藏方法,其特征在于,S4之后还包括以下步骤:
S5:执行包含有所述DLL文件的应用程序时,将所述DLL节中的DLL文件数据进行读取,应用程序加载读取的DLL文件数据。
5.一种实现权利要求1所述方法的DLL文件的隐藏系统,其特征在于,该系统包括EXE文件读取模块、EXE文件节表查找模块、DLL节生成模块和DLL文件数据写入模块;
EXE文件读取模块用于:读取EXE文件至内存,将EXE文件的属性字段修改为可读可写;
EXE文件节表查找模块用于:根据EXE文件的内存地址,读取EXE文件的DOS头部内存地址;根据DOS头部内存地址,读取EXE文件的NT头部内存地址;根据NT头部内存地址,获取EXE文件节表中第一个节的内存地址;根据第一个节的内存地址,获取EXE文件节表中最后一个节的内存地址;根据最后一个节的内存地址,确定最后一个节的大小、以及最后一个节在EXE文件中的偏移值;
DLL节生成模块用于:在EXE文件节表中,在最后一个节之后增加一个新的DLL节,对DLL节进行设置:将DLL节在EXE文件中的偏移值赋值为:最后一个节在EXE文件中的偏移值,加上最后一个节的大小;
DLL文件数据写入模块用于:将DLL文件数据写入DLL节在EXE文件中的偏移处。
6.如权利要求5所述的DLL文件的隐藏系统,其特征在于,所述DLL节生成模块中对DLL节进行设置时,还包括以下工作流程:
将DLL节的内存地址设置为所述最后一个节的内存地址加1;
将DLL节的节名称与EXE文件节表中的已有的节名称进行区分;
将DLL节的属性字段设置为可读可写;
将DLL节的大小赋值为需要存入的DLL文件的大小。
7.如权利要求5所述的DLL文件的隐藏系统,其特征在于,所述DLL文件数据写入模块的具体工作流程为:读取所述DLL文件至内存,采用加密算法对DLL文件数据进行加密后,将加密的DLL文件数据写入DLL节在EXE文件中的偏移处。
8.如权利要求5至7任一项所述的DLL文件的隐藏系统,其特征在于,该系统还包括应用程序执行模块,其用于:执行包含有所述DLL文件的应用程序时,将所述DLL节中的DLL文件数据进行读取,加载读取的DLL文件数据。
CN201610671287.XA 2016-08-16 2016-08-16 一种dll文件的隐藏方法及系统 Expired - Fee Related CN106295402B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610671287.XA CN106295402B (zh) 2016-08-16 2016-08-16 一种dll文件的隐藏方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610671287.XA CN106295402B (zh) 2016-08-16 2016-08-16 一种dll文件的隐藏方法及系统

Publications (2)

Publication Number Publication Date
CN106295402A CN106295402A (zh) 2017-01-04
CN106295402B true CN106295402B (zh) 2020-03-31

Family

ID=57671543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610671287.XA Expired - Fee Related CN106295402B (zh) 2016-08-16 2016-08-16 一种dll文件的隐藏方法及系统

Country Status (1)

Country Link
CN (1) CN106295402B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092815A (zh) * 2017-03-31 2017-08-25 武汉斗鱼网络科技有限公司 一种保护模块文件的方法及服务器
CN107230484B (zh) * 2017-06-22 2018-04-20 北京众谊越泰科技有限公司 一种可隐藏指定文件及文件夹的方法
CN108897994B (zh) * 2018-06-19 2022-07-08 广州华多网络科技有限公司 隐藏导入表的方法、装置、存储介质和计算机设备
CN118689551B (zh) * 2024-06-04 2025-12-05 福建天晴在线互动科技有限公司 一种基于动态功能模块加载的应用更新方法及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719077A (zh) * 2009-12-24 2010-06-02 北京飞天诚信科技有限公司 在.Net程序中注入代码的方法和装置
CN101908119A (zh) * 2010-08-12 2010-12-08 浙江中控软件技术有限公司 一种动态链接库dll文件的处理方法和装置
CN102799815A (zh) * 2012-06-29 2012-11-28 安科智慧城市技术(中国)有限公司 一种安全加载程序库的方法和装置
CN102930005A (zh) * 2012-10-29 2013-02-13 北京奇虎科技有限公司 在宿主文件中捆绑文件的方法及装置
CN102982073A (zh) * 2012-10-29 2013-03-20 北京奇虎科技有限公司 文件至宿主文件中的捆绑方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719077A (zh) * 2009-12-24 2010-06-02 北京飞天诚信科技有限公司 在.Net程序中注入代码的方法和装置
CN101908119A (zh) * 2010-08-12 2010-12-08 浙江中控软件技术有限公司 一种动态链接库dll文件的处理方法和装置
CN102799815A (zh) * 2012-06-29 2012-11-28 安科智慧城市技术(中国)有限公司 一种安全加载程序库的方法和装置
CN102930005A (zh) * 2012-10-29 2013-02-13 北京奇虎科技有限公司 在宿主文件中捆绑文件的方法及装置
CN102982073A (zh) * 2012-10-29 2013-03-20 北京奇虎科技有限公司 文件至宿主文件中的捆绑方法和装置

Also Published As

Publication number Publication date
CN106295402A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
US11188638B2 (en) Fine-grained memory address space layout randomization
US10990667B2 (en) Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US10311227B2 (en) Obfuscation of an address space layout randomization mapping in a data processing system
US9830162B2 (en) Technologies for indirect branch target security
US20120260106A1 (en) System and method for binary layout randomization
CN110298175B (zh) 一种dll文件的处理方法及相关装置
TW201807570A (zh) 使用基於偏移的虛擬位址映射對目標應用功能的基於核心的偵測
US20170364679A1 (en) Instrumented versions of executable files
CN106796634A (zh) 用于硬件流控制的代码指针验证
CN106295402B (zh) 一种dll文件的隐藏方法及系统
US20110271350A1 (en) method for protecting software
US9805186B2 (en) Hardware protection for encrypted strings and protection of security parameters
US10303885B2 (en) Methods and systems for securely executing untrusted software
CN111881485B (zh) 一种基于arm指针验证的内核敏感数据完整性保护方法
KR20220141490A (ko) 바이너리 파일 재구성 방법 및 그 장치
EP3574425B1 (en) Method to secure a software code
US20200293650A1 (en) System and method for software diversification
JP5549810B2 (ja) プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム
KR101052735B1 (ko) 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치
US20220407695A1 (en) Electronic device and control method thereof
KR100927974B1 (ko) 실행 이미지의 원본 코드 생성 시스템 및 그 방법
CN115544516A (zh) 内核启动方法、装置、电子设备、存储介质及程序产品
JP2007122391A (ja) 暗号化プログラムを復号して実行する情報処理装置及びメモリ管理方法
US9965621B2 (en) Program protection device
CN114969765B (zh) 一种物联网设备无感安全漏洞修复方法、装置及设备

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200331