CN111625296B - 一种通过构建代码副本保护程序的方法 - Google Patents

一种通过构建代码副本保护程序的方法 Download PDF

Info

Publication number
CN111625296B
CN111625296B CN202010463167.7A CN202010463167A CN111625296B CN 111625296 B CN111625296 B CN 111625296B CN 202010463167 A CN202010463167 A CN 202010463167A CN 111625296 B CN111625296 B CN 111625296B
Authority
CN
China
Prior art keywords
dll module
copy
dll
program
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.)
Active
Application number
CN202010463167.7A
Other languages
English (en)
Other versions
CN111625296A (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.)
Chongqing Xiaruan Technology Co ltd
Original Assignee
Chongqing Xiaruan 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 Chongqing Xiaruan Technology Co ltd filed Critical Chongqing Xiaruan Technology Co ltd
Priority to CN202010463167.7A priority Critical patent/CN111625296B/zh
Publication of CN111625296A publication Critical patent/CN111625296A/zh
Application granted granted Critical
Publication of CN111625296B publication Critical patent/CN111625296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及程序保护领域,具体公开了一种通过构建代码副本保护程序的方法,包括:运行目标程序,正常加载DLL模块正本但不调用;在进程内存中创建至少一个所述DLL模块正本的DLL模块副本,并隐藏所述DLL模块副本;所述目标程序调用一个所述DLL模块副本。本发明通过在程序内存空间任意可用位置构建隐藏的DLL模块副本来代替原DLL模块正本运行,基于DLL模块副本的隐藏属性,恶意程序无法发现它,便无法篡改DLL模块副本中的目标代码,以影响目标程序的运行,从而实现了在执行目标程序时,只运行目标代码,不运行恶意代码。

Description

一种通过构建代码副本保护程序的方法
技术领域
本发明涉及程序保护领域,具体涉及一种通过构建代码副本保护程序的方法。
背景技术
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件(或DLL模块),放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
通常情况下,恶意程序(包含恶意代码)会通过篡改原DLL模块中的代码,来达到其攻击或破坏的目的,如图1所示,DLL模块的原代码“XXXXXXX”被篡改为“YYYYYYY”(恶意代码),在执行目标程序时,不得不执行该恶意代码。现有的解决方法,主要有以下3种:
1、找到被攻击或破坏的DLL模块,修复其中被篡改的代码以恢复DLL模块;
2、针对被攻击或破坏的DLL模块,使用杀毒软件或其他手段进行查杀,以消灭恶意代码;
3、预装杀毒软件,时刻查杀。
方法1和方法2都是在发现DLL模块被攻击或破坏后采取的补救措施,并不能在目标程序运行前或运行时进行防范,以杜绝恶意代码的运行。而方法1在修复时需要查找出恶意代码,然后替换为原代码,这个过程耗时较长,且不能保证每一处的恶意代码都能被修复,也即仍然不能保证恶意代码不被运行。
方法2和方法3在查杀时,基于杀毒软件本身的限制,针对一些隐藏的DLL恶意模块(恶意代码所指向的运行文件)往往束手无策,不能做到对所有恶意代码的查杀,也不能保证恶意代码不被运行。甚至有的杀毒软件为了查杀恶意代码而占用太多的电脑资源,拖慢电脑速度,并且还有的杀毒软件自己本身携带恶意代码(如插入网络广告),引起用户的强烈不满。
可见,目前缺乏一种保护程序的方法,能够在执行目标程序时,只运行目标代码,不运行恶意代码。
发明内容
本发明提供一种通过构建代码副本保护程序的方法,解决的技术问题在于:如何使目标程序在运行时,只运行目标代码,不运行恶意代码。
本发明提供的基础方案为:
运行目标程序,正常加载DLL模块正本但不调用;
在进程内存中创建至少一个所述DLL模块正本的DLL模块副本,并隐藏所述DLL模块副本;
所述目标程序调用一个所述DLL模块副本。
本基础方案的运作原理及优点在于:
通过在程序内存空间任意可用位置构建隐藏的DLL模块副本来代替原DLL模块正本运行,基于DLL模块副本的隐藏属性,恶意程序无法发现它,便无法篡改DLL模块副本中的目标代码,以影响目标程序的运行,从而实现了在执行目标程序时,只运行目标代码,不运行恶意代码。
在进一步的实施方案中,所述DLL模块副本创建在所述进程内存的任意可用位置。
本方案限定了所述DLL模块副本的创建空间为对应进程内存的任意可用位置,表明了DLL模块副本对存储空间没有要求,容易实施,设计人员可将DLL模块副本建立在一选定的可用进程空间,以符合设计规范。
在进一步的实施方案中,所述DLL模块副本创建有一个,所述目标程序设置为调用唯一的一个所述DLL模块副本。
本方案只创建一个隐藏的DLL模块副本即可实现代替DLL模块正本去运行的目的,相比创建多个DLL模块副本的方式,具有简单易操作的优点。
在进一步的实施方案中,所述DLL模块副本创建有两个,所述目标程序设置为调用其中一个所述DLL模块副本。
本方案限定DLL模块副本为两个,选中其中一个DLL模块副本用来代替DLL模块正本去运行,而另一个隐藏的DLL模块副本则用来备选,也使得真正运行的DLL模块副本能隐藏得更深,进一步增强对目标程序的保护力度。
在进一步的实施方案中,所述DLL模块副本创建有m个,所述目标程序设置为调用其中一个所述DLL模块副本,m≥3。
本方案限定DLL模块副本为至少三个,选中其中一个DLL模块副本用来代替DLL模块正本去运行,相比只设置两个DLL模块副本的方案,本方案将真正运行的DLL模块副本能隐藏得更深,进一步增强对目标程序的保护力度。
在进一步的实施方案中,所述DLL模块正本和所述DLL模块副本均包括PE文件头、代码和其他数据。
本方案进一步限定子DLL模块副本和DLL模块正本的内容相同,但正本是用于吸引恶意程序,副本用于执行真正的程序,从而令恶意程序即使实现篡改DLL模块正本的代码,但也无法对目标程序的运行产生任何影响,不仅保证了目标程序的顺利运行,还令恶意程序不知哪里出了问题,而无法作出下一步的改进,来达到侵害目标程序的目的。
在进一步的实施方案中,创建所述DLL模块副本,具体为:
通过VirtualAllocEx和WriteProcessMemory api在本进程的内存空间中,创建所述DLL模块正本的DLL模块副本。
本方案限定了基于VirtualAllocEx和WriteProcessMemory api创建DLL模块副本,方法简单易操作。
在进一步的实施方案中,所述目标程序调用一个所述DLL模块副本,具体为:
分析选定的一个所述DLL模块副本的PE文件头及IMAGE_DIRECTORY_ENTRY_EXPORT导出表,在所述DLL模块副本中找到对应的导出接口,并调用。
本方案限定根据所选定的DLL模块副本的PE文件头和IMAGE_DIRECTORY_ENTRY_EXPORT导出表去建立调用关系,方法简单易操作。
在进一步的实施方案中,隐藏所述DLL模块副本的方式包括:DLL模块内存加载,在PEB_LDR_DATA数据结构中脱链,抹除副本文件名,抹除副本PE头数据。
本方案限定隐藏DLL模块副本的手段有DLL模块内存加载、PEB_LDR_DATA数据结构中脱链、抹除副本文件名、抹除副本PE头数据,而在实际的应用中,可以采用其中一种,也可以是其两两组合、三三组合,甚至是四种手段都采用,从而能够实现不同的隐藏效果,且隐藏手段采用越多,隐藏的效果越好,DLL模块副本更不易被恶意程序或其他程序发现。
在进一步的实施方案中,所述DLL模块内存加载,具体为:不使用操作系统的DLL模块加载功能,把选中的DLL模块副本加载到内存中执行。
本方案限定隐藏DLL模块副本的方式为DLL模块内存加载,即是不使用操作系统的DLL模块加载功能,把选中的DLL模块副本加载到内存中执行,因为不经过操作系统或者只经过模拟操作系统,一般程序(包括恶意程序)都难以发觉或查找到该副本的加载。
在进一步的实施方案中,所述在PEB_LDR_DATA数据结构中脱链,具体为:从进程环境信息块的Ldr链中抹去所述DLL模块副本的链表。
本方案可保护DLL模块副本不被通过查找链表查找隐藏的DLL模块的恶意程序发现,也可不被大部分的系统安全程序(比如RKU,Gmer,XueTr,Atool,NIAP,但IceSword是个例外)发现。
在进一步的实施方案中,所述抹除副本文件名,具体为:
基于所述DLL模块副本的DLL基址遍历VAD树,找到所述DLL模块副本的VAD结构,修改所述VAD结构的FileName.Buffer为0,所述VAD树表示基于虚拟地址描述符的二叉排序树。
本方案为隐藏所述DLL模块副本,修改所述DLL模块副本的VAD结构的FileName.Buffer为0,因为程序运行时是从FileName.Buffer取得文件名,若文件名指向的路径(DLL模块副本)无效,则可实现DLL模块副本的顺利隐藏。此方法保护DLL模块副本不被通过FileName.Buffer获取文件名查找隐藏的DLL模块的恶意程序发现,以及不被IceSword和Sysnap的Yas Kit等类型系统安全程序发现。
在进一步的实施方案中,所述抹除副本PE头数据,具体为:
将所述DLL模块副本的PE文件头填写为零。
本方案为隐藏所述DLL模块副本,将DLL模块副本的PE文件头填写为零,可保护所述DLL模块副本不被直接枚举所有有效内存并检查PE标记来确定是否有隐藏DLL模块的程序的目标程序发现。若与上述脱链和抹除副本文件名等隐藏方式同时使用,可将DLL模块副本隐藏得更深,使得恶意程序更加难以发现。
附图说明
图1为本发明背景技术提供的恶意程序篡改DLL模块中部分代码的示意图;
图2为本发明实施例1提供的一种通过进程保护程序的方法的步骤流程图;
图3为本发明实施例1提供的DLL模块正本A和DLL模块副本B的调用关系图;
图4为本发明实施例1提供的DLL模块正本A和DLL模块副本B的文件结构展示图;
图5为本发明实施例1提供的隐藏DLL模块副本B的步骤流程图;
图6为本发明实施例2提供的创建多个隐藏DLL模块副本(B1-Bn)的调用关系图。
具体实施方式
下面通过具体实施方式进一步详细的说明:
实施例1
为使目标程序在运行时,只运行目标代码,不运行恶意代码,本实施例提供一种通过构建代码副本保护程序的方法,如图2、3所示,包括步骤S1-S3。
S1.运行目标程序,正常加载DLL模块正本A但不调用。
本步骤具体是,程序通过LoadLibrary api加载一个dll的正本(文件后缀名为“.dll”),加载的dll的正本则被称为DLL模块正本A。
S2.在进程内存中创建至少一个所述DLL模块正本A的DLL模块副本B,并隐藏所述DLL模块副本B。
本步骤具体包括:
S21.通过VirtualAllocEx和WriteProcessMemory api在本进程的任意可用内存空间中,创建所述DLL模块正本A的DLL模块副本B;
S22.将所述DLL模块副本B进行隐藏。
在所述步骤S21中,所述DLL模块副本B创建在所述进程内存的任意可用位置,表明了DLL模块副本B对存储空间没有要求,容易实施,设计人员可将DLL模块副本B建立在一选定的可用进程空间,以符合设计规范。并且该步骤限定了基于VirtualAllocEx和WriteProcessMemory api创建DLL模块副本,方法简单易操作,可根据实际需要只创建1个DLL模块副本。
如图4所示,所述DLL模块正本A和所述DLL模块副本B均包括PE文件头、代码和其他数据。在本实施例中,在目标程序的实际运行中,恶意程序想要攻击目标程序,其只能发现DLL模块正本A,不能发现DLL模块副本B,而篡改了DLL模块正本A,具体是将正本中的一部分代码比如“XXXXXXX”修改为“YYYYYYY”,但对于真正执行的DLL模块副本B没有任何影响,恶意程序无法发现它,更无法更改它,不会影响到目标程序的顺利运行。也即,本实施例DLL模块正本A是用于吸引恶意程序,DLL模块副本B用于执行真正的程序,从而令恶意程序即使实现篡改DLL模块正本A的代码,但也无法对目标程序的运行产生任何影响,不仅保证了目标程序的顺利运行,还令恶意程序不知哪里出了问题,而无法作出下一步的改进,来达到侵害目标程序的目的。
在本实施例中,在所述步骤S22中,将所述DLL模块副本B进行隐藏所采用的方式是:基于DLL模块内存加载,在PEB_LDR_DATA数据结构中脱链,并抹除所述DLL模块副本B的文件名,以及抹除其PE头数据。如图5所示,具体包括步骤(不限定顺序):
C1.从进程环境信息块的Ldr链中抹去所述DLL模块副本B的链表;
C2.基于所述DLL模块副本B的DLL基址遍历VAD树,找到所述DLL模块副本B的VAD结构,修改所述VAD结构的FileName.Buffer为0,所述VAD树表示基于虚拟地址描述符的二叉排序树;
C3.将所述DLL模块副本B的PE文件头填写为零;
C4.将所述DLL模块副本加载到内存中执行,且将加载的进程隐藏。
其中,步骤C1是直接在进程环境信息块(PEB)中将DLL模块副本B的链表消除(RemoveEntryList)。完成此步骤,即保护DLL模块副本B不被通过查找链表查找隐藏的DLL模块的恶意程序发现,以及可不被大部分的系统安全程序(比如RKU,Gmer,XueTr,Atool,NIAP,但IceSword是个例外)发现。进程环境块(PEB)位于用户地址空间,用于存放进程信息,每个进程都有自己的PEB信息。根据进程环境块(PEB)的输出结果,可以了解到进程的ImageBaseAddress,进程的堆(Heap)起始地址,装载了哪些DLL模块(通过查找相应的链表),命令行参数,系统的环境变量等等。
其中,步骤C2是修改所述DLL模块副本B的VAD结构的FileName.Buffer为0,因为程序运行时是从FileName.Buffer取到文件名,若文件名指向的路径(DLL模块副本B)无效,则可实现DLL模块副本B的顺利隐藏。若单独实现该步骤,可保护DLL模块副本B不被通过FileName.Buffer获取文件名查找隐藏的DLL模块的恶意程序发现,以及不被IceSword和Sysnap的Yas Kit等类型系统安全程序发现。而本实施例步骤S2结合步骤S1,可使得DLL模块副本B的隐藏性能更好,更不易被恶意程序发觉。而且对于那些共享的DLL模块(.dll),如系统的ntdll.dll、kernel32.dll或在不同进程中被加载2次或以上的dll,虽然是在不同进程中,但是使用的是同一个共享的ControlArea结构,因此只需要改一个,那么在所有进程中都将实现隐藏,这对于隐藏全局钩子类型的DLL模块副本显然是非常方便的。
其中,步骤C3是将DLL模块副本B的PE文件头填写为零,针对于枚举所有有效内存并检查PE标记来确定是否有隐藏DL模块的恶意程序,结合前述步骤S1-S2,可将DLL模块副本B隐藏得更深,使得恶意程序更加难以发现。
其中,步骤C4是在不使用操作系统的DLL模块加载功能,把选中的DLL模块副本加载到内存中执行。因为不经过操作系统或者只经过模拟操作系统,一般程序(包括恶意程序)都难以发觉或查找到该副本的加载。通常情况下,一个程序通过操作系统正常加载的DLL模块,在操作系统的关键结构中调用api可以枚举出来。要隐藏DLL模块,一种做法是修改操作系统的关键结构中的数据,让api枚举不出来。另一种做法是不使用操作系统的加载DLL模块功能,而是程序自己通过模拟操作系统加载DLL模块的某些关键操作,这种方式,在操作系统的关键结构中没有相关记录,所以api枚举不出来,也不需要去改操作系统的关键结构。
本实施例将在PEB_LDR_DATA数据结构中脱链、抹除副本文件名和抹除副本PE头数据、DLL模块内存加载这四种隐藏方式同时使用,可将DLL模块副本隐藏得很深,使得绝大部分恶意程序及其他程序(比如系统安全程序)都难以发现。
在其他实施方式中,步骤C1-C4可单独运行,也可任意两两结合、三三结合运行。并且,本实施例并不对隐藏DLL模块副本B的方式作具体限定,除步骤C1-C4外,还可采用其他可行的方式。
S3.所述目标程序调用一个所述DLL模块副本B。
本步骤具体是,分析选定的一个所述DLL模块副本的PE文件头及IMAGE_DIRECTORY_ENTRY_EXPORT导出表,在所述DLL模块副本中找到对应的导出接口,并调用,这种调用方式简单易操作,不会产生调用对象错误的问题。
本实施例提供的一种通过构建代码副本保护程序的方法:
通过在程序内存空间任意可用位置构建隐藏的DLL模块副本B来代替原DLL模块正本A运行,基于DLL模块副本B的隐藏属性,恶意程序无法发现它,便无法篡改DLL模块副本B中的目标代码,以影响目标程序的运行,从而实现了在执行目标程序时,只运行目标代码,不运行恶意代码。
特别的,本实施例只创建一个隐藏的DLL模块副本B即可实现代替DLL模块正本A去运行的目的,相比创建多个DLL模块副本B的方式,具有简单易操作的优点。
实施例2
本实施例与实施例1的不同之处在于,创建的DLL模块副本B不止为一个,而是至少两个。如图6所示,其中的一个DLL模块副本B1用来代替DLL模块正本A去运行,而其他隐藏的DLL模块副本B2-Bm(m≥3)则用来备选,本实施例相比实施例1只设置1个DLL模块副本B的方案,可将真正运行的DLL模块副本B隐藏得更深,进一步增强对目标程序的保护力度。
实施例3
与实施例2相比,本实施例的不同之处仅在于,DLL模块副本B1中还包括一触发子模块,该触发子模块用于在DLL模块副本B1运行后,向目标地址发送一成功执行反馈指令,用于提醒用户隐藏的DLL模块副本B1被顺利执行。目标地址可以为本地对话框,或者弹窗,或者通知栏消息。
以上所述的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。

Claims (4)

1.一种通过构建代码副本保护程序的方法,其特征在于,包括:
运行目标程序,正常加载DLL模块正本但不调用;
在进程内存中创建至少一个所述DLL模块正本的DLL模块副本,并隐藏所述DLL模块副本;
所述目标程序调用一个所述DLL模块副本;
所述DLL模块副本创建在所述进程内存的任意可用位置;所述DLL模块正本和所述DLL模块副本均包括PE文件头、代码和其他数据;
隐藏所述DLL模块副本的方式包括:DLL模块内存加载,在PEB_LDR_DATA数据结构中脱链,抹除副本文件名,抹除副本PE头数据;
所述DLL模块内存加载,具体为:不使用操作系统的DLL模块加载功能,把选中的DLL模块副本加载到内存中执行;
所述在PEB_LDR_DATA数据结构中脱链,具体为:从进程环境信息块的Ldr链中抹去所述DLL模块副本的链表;
所述抹除副本文件名,具体为:
基于所述DLL模块副本的DLL基址遍历VAD树,找到所述DLL模块副本的VAD结构,修改所述VAD结构的FileName.Buffer为0,所述VAD树表示基于虚拟地址描述符的二叉排序树;
所述抹除副本PE头数据,具体为:
将所述DLL模块副本的PE文件头填写为零。
2.如权利要求1所述的一种通过构建代码副本保护程序的方法,其特征在于,所述DLL模块副本创建有一个,所述目标程序设置为调用唯一的一个所述DLL模块副本;
或者,所述DLL模块副本创建有两个,所述目标程序设置为调用其中一个所述DLL模块副本;
或者,所述DLL模块副本创建有m个,所述目标程序设置为调用其中一个所述DLL模块副本,m≥3。
3.如权利要求1所述的一种通过构建代码副本保护程序的方法,其特征在于,创建所述DLL模块副本,具体为:
通过VirtualAllocEx和WriteProcessMemory api在本进程的内存空间中,创建所述DLL模块正本的DLL模块副本。
4.如权利要求1或3所述的一种通过构建代码副本保护程序的方法,其特征在于,所述目标程序调用一个所述DLL模块副本,具体为:
分析选定的一个所述DLL模块副本的PE文件头及IMAGE_DIRECTORY_ENTRY_EXPORT导出表,在所述DLL模块副本中找到对应的导出接口,并调用。
CN202010463167.7A 2020-05-27 2020-05-27 一种通过构建代码副本保护程序的方法 Active CN111625296B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010463167.7A CN111625296B (zh) 2020-05-27 2020-05-27 一种通过构建代码副本保护程序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010463167.7A CN111625296B (zh) 2020-05-27 2020-05-27 一种通过构建代码副本保护程序的方法

Publications (2)

Publication Number Publication Date
CN111625296A CN111625296A (zh) 2020-09-04
CN111625296B true CN111625296B (zh) 2023-03-14

Family

ID=72271261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010463167.7A Active CN111625296B (zh) 2020-05-27 2020-05-27 一种通过构建代码副本保护程序的方法

Country Status (1)

Country Link
CN (1) CN111625296B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113550736A (zh) * 2021-07-26 2021-10-26 重庆夏软科技有限公司 应用于油气采集的异常分析系统及方法
CN113468075A (zh) * 2021-08-14 2021-10-01 康剑萍 一种服务器端软件的安全测试方法和系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802367A (en) * 1995-07-07 1998-09-01 Microsoft Corporation Method and system for transparently executing code using a surrogate process
US7055146B1 (en) * 2001-03-08 2006-05-30 Microsoft Corporation Method and system for dynamically inserting modifications for identified programs
CN101770551A (zh) * 2008-12-30 2010-07-07 中国科学院软件研究所 一种基于硬件模拟器的处理隐藏进程的方法
CN103019944A (zh) * 2013-01-10 2013-04-03 曙光信息产业(北京)有限公司 基于代码注入方式的测试方法和装置
CN105512548A (zh) * 2015-12-02 2016-04-20 湘潭大学 基于隐藏可执行镜像并注入dll保护镜像代码的方法
CN105653905A (zh) * 2015-12-28 2016-06-08 西北大学 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法
CN110765456A (zh) * 2018-11-07 2020-02-07 北京安天网络安全技术有限公司 一种检测隐藏进程的方法、装置及存储设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814471B2 (en) * 2004-12-16 2010-10-12 Microsoft Corporation Method and apparatus for providing DLL compatibility

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802367A (en) * 1995-07-07 1998-09-01 Microsoft Corporation Method and system for transparently executing code using a surrogate process
US7055146B1 (en) * 2001-03-08 2006-05-30 Microsoft Corporation Method and system for dynamically inserting modifications for identified programs
CN101770551A (zh) * 2008-12-30 2010-07-07 中国科学院软件研究所 一种基于硬件模拟器的处理隐藏进程的方法
CN103019944A (zh) * 2013-01-10 2013-04-03 曙光信息产业(北京)有限公司 基于代码注入方式的测试方法和装置
CN105512548A (zh) * 2015-12-02 2016-04-20 湘潭大学 基于隐藏可执行镜像并注入dll保护镜像代码的方法
CN105653905A (zh) * 2015-12-28 2016-06-08 西北大学 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法
CN110765456A (zh) * 2018-11-07 2020-02-07 北京安天网络安全技术有限公司 一种检测隐藏进程的方法、装置及存储设备

Also Published As

Publication number Publication date
CN111625296A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
KR101966754B1 (ko) 소프트웨어 코드의 생성 및 캐싱 기법
US7877802B2 (en) System and method for proactive computer virus protection
AU2014348812B2 (en) Improved control flow integrity system and method
CN102254111B (zh) 恶意网站检测方法及装置
JP5458184B2 (ja) 動的ファンクションコールシステムにおけるアグレッシブな自動修正のためのシステムおよび方法
Bojinov et al. Address space randomization for mobile devices
US20080148399A1 (en) Protection against stack buffer overrun exploitation
US6698016B1 (en) Method for injecting code into another process
CN108229107B (zh) 一种Android平台应用程序的脱壳方法及容器
US20090113550A1 (en) Automatic Filter Generation and Generalization
MX2007011026A (es) Metodo y sistema para la deteccion de codigo extrano.
WO2010045317A1 (en) Internal function debugger
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
EP3009935B1 (en) System and method of transfer of control between memory locations
CN111625296B (zh) 一种通过构建代码副本保护程序的方法
Gasparis et al. Detecting android root exploits by learning from root providers
CN113391874A (zh) 一种虚拟机检测对抗方法、装置、电子设备及存储介质
CN110414218B (zh) 内核检测方法、装置、电子设备及存储介质
CN107463513B (zh) 在存储位置之间转移控制的系统和方法
Sun et al. API monitoring system for defeating worms and exploits in MS-Windows system
CN111625813B (zh) 一种通过修改进程保护程序的方法
KR101842263B1 (ko) 어플리케이션에 대한 역공학 차단 방법 및 장치
CN113987395A (zh) 基于云服务web监测的测试网站搭建方法与系统
Durães et al. A methodology for the automated identification of buffer overflow vulnerabilities in executable software without source-code
WO2008036665A2 (en) Methods, media, and systems for detecting attack on a digital processing device

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