CN111625813B - 一种通过修改进程保护程序的方法 - Google Patents

一种通过修改进程保护程序的方法 Download PDF

Info

Publication number
CN111625813B
CN111625813B CN202010464109.6A CN202010464109A CN111625813B CN 111625813 B CN111625813 B CN 111625813B CN 202010464109 A CN202010464109 A CN 202010464109A CN 111625813 B CN111625813 B CN 111625813B
Authority
CN
China
Prior art keywords
sub
child
mirror image
copy
main
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
CN202010464109.6A
Other languages
English (en)
Other versions
CN111625813A (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 CN202010464109.6A priority Critical patent/CN111625813B/zh
Publication of CN111625813A publication Critical patent/CN111625813A/zh
Application granted granted Critical
Publication of CN111625813B publication Critical patent/CN111625813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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

Abstract

本发明涉及程序保护领域,具体公开了一种通过修改进程保护程序的方法,包括:父进程创建子进程,并设置子进程一经建立便立即被挂起,此时子进程的进程空间中包括子进程主镜像正本;在子进程的进程空间中创建至少一个隐藏的子进程主镜像副本,子进程主镜像副本与子进程主镜像正本一致;将子进程的主线程入口地址从子进程主镜像正本的入口地址修改为被选中的子进程主镜像副本的入口地址;恢复执行子进程的主线程,执行被选中的子进程主镜像副本。本方法通过创建隐藏的子进程主镜像副本,然后将子进程的主线程入口地址修改为被选中的子进程主镜像副本的入口地址,目标程序运行时将直接跳过子进程主镜像正本而执行子进程主镜像副本,无论恶意程序如何修改子进程主镜像正本也不会影响到子进程主镜像副本的真正运行。

Description

一种通过修改进程保护程序的方法
技术领域
本发明涉及程序保护领域,具体涉及一种通过修改进程保护程序的方法。
背景技术
通常情况下,恶意代码会通过篡改原进程主镜像中的入口代码,来实现执行恶意代码的目的。比如恶意程序在目标程序代码入口点写入一个JUMP指令(如图1所示的“YYYYYYY”),让CPU在执行该目标程序原进程的入口代码时JUMP到恶意代码处执行。
现有的防范方法,在发现一个进程入口代码被恶意篡改后,只是简单地阻止该进程运行,以避免被篡改后的恶意代码被执行。但被攻击的进程被阻止运行后,其功能就不能得到实现。
发明内容
本发明提供一种通过修改进程保护程序的方法,解决的技术问题在于:现有采用阻止程序运行以避免被篡改后的恶意代码被执行的恶意程序防范方法,已无法实现目标程序的功能。
本发明提供的基础方案为:
一种通过修改进程保护程序的方法,包括:
父进程创建子进程,并设置所述子进程一经建立便立即被挂起,此时所述子进程的进程空间中包括子进程主镜像正本;
在所述子进程的进程空间中创建至少一个隐藏的子进程主镜像副本,所述子进程主镜像副本与所述子进程主镜像正本一致;
将所述子进程的主线程入口地址从所述子进程主镜像正本的入口地址修改为被选中的子进程主镜像副本的入口地址;
恢复执行所述子进程的主线程,执行所述被选中的子进程主镜像副本。
本基础方案的运作原理及优点在于:
将目标程序的原进程作为父进程,基于父进程创建子进程,并在子进程的进程空间中创建至少一个隐藏的子进程主镜像副本,然后将子进程的主线程入口地址修改为被选中的子进程主镜像副本的入口地址,目标程序运行时将直接跳过子进程主镜像正本而执行子进程主镜像副本,而子进程中的子进程主镜像正本因为不隐藏,容易被恶意程序发现,但无论恶意程序如何修改子进程主镜像正本也不会影响到子进程主镜像副本的真正运行,从而保护目标程序原进程的执行代码不被恶意代码发现及利用,以保证目标程序的顺利运行。
在进一步的实施方案中,所述子进程主镜像正本和所述子进程主镜像副本均包括PE文件头、代码和其它数据,所述代码中包括所述目标程序的入口代码。
本方案进一步限定子进程主镜像正本和子进程主镜像副本内容相同,均包括所述执行程序的入口代码,但正本是用于吸引恶意程序,副本用于执行真正的程序,从而令恶意程序虽实现修改入口代码,但实际上对目标程序的运行没有任何影响,不仅保证了目标程序的顺利运行,还令恶意程序不知哪里出了问题,而无法作出下一步的改进,来达到侵害目标程序的目的。
在进一步的实施方案中,所述子进程主镜像副本创建在所述子进程的任意可用进程空间中。
本方案限定了子进程主镜像副本的创建空间为所述子进程的任意可用进程空间,表明了子进程主镜像副本对空间没有要求,容易实施,设计员可根据自己的习惯和用意选择将进程主镜像副本建立在一选定的可用进程空间,以符合设计规范。
在进一步的实施方案中,隐藏所述述子进程主镜像副本的方式包括:镜像文件内存加载,在PEB_LDR_DATA数据结构中脱链,抹除副本文件名,抹除副本PE头数据。
本方案限定隐藏所述子进程主镜像副本的方式为镜像文件内存加载(即是不使用操作系统的加载功能,把选中的子进程主镜像副本加载到内存中执行),利用其镜像文件内存加载时的隐藏性而将子进程主镜像副本顺利隐藏。
或者是在PEB_LDR_DATA数据结构中脱链,即直接在进程环境信息块(PEB)中将子进程主镜像副本的链表消除(RemoveEntryList)。此方案可保护子进程主镜像副本不被通过查找链表查找隐藏的镜像副本的恶意程序发现,以及不被大部分的系统安全程序(比如RKU,Gmer,XueTr,Atool,NIAP,但IceSword是个例外)发现。
或者是抹除子进程主镜像副本的文件名,即基于所述的子进程主镜像副本的基址遍历VAD树,找到所述子进程主镜像副本的VAD结构,修改所述VAD结构的FileName.Buffer为0,所述VAD树表示基于虚拟地址描述符的二叉排序树。本方式修改所述子进程主镜像副本的VAD结构的FileName.Buffer为0,因为程序运行时是从FileName.Buffer取到文件名,若文件名指向的路径(子进程主镜像副本)无效,则可实现子进程主镜像副本的顺利隐藏。此方法保护子进程主镜像副本不被通过FileName.Buffer获取文件名查找隐藏的进程的恶意程序发现,也可不被IceSword和Sysnap的Yas Kit等类型系统安全程序发现。
或者是抹除副本PE头数据,即将子进程主镜像副本的PE文件头填写为零,便于隐藏于直接枚举所有有效内存并检查PE标记来确定是否有隐藏进程的恶意程序。
在其他的实施方式中,隐藏所述子进程主镜像副本的方式不限于为上述四种方式之一,也不限于只单单采取一种,为了保证良好的隐藏效果,可以同时采取两种、三种、四种甚至是更多种。
在进一步的实施方案中,所述子进程主镜像副本为一个。
本方案只创建一个子进程主镜像副本即可隐藏目标程序原进程的入口代码,相比创建多个子进程主镜像副本的方式,具有简单易操作的优点。
在进一步的实施方案中,所述子进程主镜像副本为两个,其中一个所述子进程主镜像副本被选中。
本方案限定子进程主镜像副本为两个,选中其中一个用来承接子进程的主线程入口地址,而另一个子进程主镜像副本用来吸引及迷惑恶意程序,让其更无法获取目标程序原进程的入口代码,方案对目标程序的保护力度进一步增强。
在进一步的实施方案中,所述子进程主镜像副本为m个,其中一个所述子进程主镜像副本被选中,m≥3。
本方案限定子进程主镜像副本为至少三个,选中其中一个用来承接子进程的主线程入口地址,而其他至少两个子进程主镜像副本用来吸引及迷惑恶意程序,让其更无法获取目标程序原进程的入口代码,相比只设置两个子进程主镜像副本的方案,本方案对目标程序的保护力度得到进一步加强。
在进一步的实施方案中,所述子进程为第一级子进程,为所述父进程直接创建。
本方案父进程直接创建一个子进程即可实现隐藏目标程序原进程的入口代码,相比创建多个子进程或者子进程再创建子进程的方式,具有简单易操作的优点。
在进一步的实施方案中,所述子进程为第二级子进程,为所述父进程直接创建的第一级子进程再创建(也可叫做孙进程)。
本方案创建孙进程来隐藏目标程序原进程的入口代码,相比上一个方案,将目标代码隐藏得更深,使其更不容易被恶意程序发现,本方案对目标程序的保护力度得到进一步加强。
在进一步的实施方案中,所述子进程为第n级子进程,为根据所述父进程创建的第n-1级子进程再创建,n≥3。
本方案创建比上个方案中更后代的进程来隐藏目标程序原进程的入口代码,相比上一个方案,将目标代码进一步隐藏得更深,使其更不容易被恶意程序发现,本方案对目标程序的保护力度得到进一步加强。
在进一步的实施方案中,所述父进程创建子进程,并设置所述子进程一经建立便立即被挂起,此时所述子进程的进程空间中包括子进程主镜像正本,具体为:
父进程通过调用CreateProcess api创建子进程,此api加上CREATE_SUSPENDED参数可让被创建的子进程被挂起不执行,并保存此api返回的子进程的进程handle和子进程的主线程handle。
本方案限定父进程创建子进程具体采用调用CreateProcess api的方式,并结合CREATE_SUSPENDED参数使得子进程被挂起不执行,能够保证该步骤的顺利实施,并且还保存CreateProcess api返回的子进程的进程handle和子进程的主线程handle,为后续的步骤做准备。
在进一步的实施方案中,创建子进程主镜像副本,具体为:
父进程通过所述子进程的进程handle,调用VirtualAllocEx和WriteProcessMemory等api在子进程的内存空间中,为子进程主镜像副本分配内存并写入子进程主镜像副本。
本方案在上一方案的基础上,限定创建子进程主镜像副本的方式为根据上一方案保存的子进程的进程handle,调用VirtualAllocEx和WriteProcessMemory在子进程的内存空间中,然后为子进程主镜像副本分配内存并写入子进程主镜像副本,如此可顺利得到写入在子进程内存空间的子进程主镜像副本,为后续的步骤做准备。
在进一步的实施方案中,所述将所述子进程的主线程入口地址从所述子进程主镜像正本的入口地址修改为被选中的子进程主镜像副本的入口地址,具体包括:
父进程通过所述子进程的主线程handle,调用GetThreadContext api获取所述子进程的主线程上下文CONTEXT数据,其中CONTEXT的RCX成员即为所述子进程的主线程的入口地址;
父进程修改所述子进程的主线程入口地址RCX为所述子进程主镜像副本代码中的入口地址,并通过调用SetThreadContext api修改所述子进程的主线程上下文CONTEXT。
本方案在上一方案的基础上,进一步限定修改所述子进程的主线程入口地址的具体过程,从而可将所述子进程的主线程入口地址顺利修改为子进程主镜像副本代码中的入口地址,可确保进程执行子进程主镜像副本代码中的入口地址,以实现本发明的目的。
在进一步的实施方案中,所述恢复执行所述子进程的主线程,执行所述被选中的子进程主镜像副本,具体为:
父进程通过所述子进程的主线程handle,调用ResumeThread api恢复子进程的执行,让所述子进程的主线程去执行所述子进程主镜像副本代码中入口代码。
本方案在上一方案的基础上,限定执行子进程主镜像副本代码中入口代码的具体设定,保证进程执行子进程主镜像副本代码中的入口地址,最终实现本发明的目的。
附图说明
图1为本发明背景技术提供的恶意程序修改目标程序入口代码的示意图;
图2为本发明实施例1提供的一种通过进程保护程序的方法的步骤流程概图;
图3为本发明实施例1提供的子进程内的镜像文件示意图;
图4为本发明实施例1提供的已被篡改的子进程中镜像文件的结构细化图;
图5为本发明实施例2提供的子进程内的镜像文件示意图;
图6为本发明实施例3提供的子进程内的镜像文件示意图;
图7为本发明实施例4提供的子进程内的镜像文件示意图。
具体实施方式
下面通过具体实施方式进一步详细的说明:
实施例1
为了防止目标程序原进程的入口代码被恶意程序篡改,本实施例提供一种通过修改进程保护程序的方法,如图2、3所示,包括步骤:
S1.父进程a.exe创建包括其主镜像文件的子进程b.exe,并设置所述子进程b.exe一经建立便立即被挂起(等待被执行),此时所述子进程b.exe的进程空间中包括子进程主镜像正本A;
S2.在所述子进程b.exe的进程空间中创建一个隐藏的子进程主镜像副本B,所述子进程主镜像副本B与所述子进程主镜像正本A一致,此时所述子进程b.exe的进程空间中存在一个子进程主镜像正本A和一个隐藏的子进程b.exe主镜像正本B;
S3.将所述子进程b.exe的主线程入口地址从所述子进程主镜像正本A的入口地址修改为被选中的子进程主镜像副本B的入口地址,使得目标程序父进程a.exe在被执行时转向执行所述子进程主镜像副本B,从主线程也从所述子进程主镜像副本B中的入口代码进入;
S4.恢复执行被挂起的所述子进程b.exe的主线程,执行所述被选中的子进程主镜像副本B。
在本实施例中,如图4所示,若恶意程序发现了该父进程a.exe,其要对该进程的入口代码进行修改也只能修改其子进程b.exe中的子进程主镜像正本A的入口代码“XXXXXXX”,将其篡改为“YYYYYYY”(可能为JUMP指令,即跳转去执行恶意代码),但对于真正执行的子进程主镜像副本B没有任何影响,恶意程序无法发现它,更无法更改它。
在本实施例中,需要说明的是,再次参见图4,子进程主镜像正本A和子进程主镜像副本B具有相同的数据结构和数据内容,均包括PE文件头、代码和其它数据,所述代码中包括所述目标程序的入口代码“XXXXXXX”。但正本是用于吸引恶意程序,副本用于执行真正的程序,从而令恶意程序虽实现修改入口代码,但实际上对目标程序的运行没有任何影响,不仅保证了目标程序的顺利运行,还令恶意程序不知哪里出了问题,而无法作出下一步的改进,来达到侵害目标程序的目的。
本实施例提供的一种通过进程保护程序的方法:
将目标程序的原进程作为父进程a.exe,基于父进程a.exe创建子进程b.exe,并在子进程b.exe的进程空间中创建一个隐藏的子进程主镜像副本B,然后将子进程b.exe的主线程入口地址修改为被选中的子进程主镜像副本B的入口地址,目标程序运行时将直接跳过子进程主镜像正本A而执行子进程主镜像副本B,而子进程b.exe中的子进程主镜像正本A因为不隐藏,容易被恶意程序发现,但无论恶意程序如何修改子进程主镜像正本A也不会影响到子进程主镜像副本B的真正运行,从而保护目标程序原进程的执行代码不被恶意代码发现及利用,以保证目标程序的顺利运行。
特别的,本实施例所述子进程b.exe根据父进程a.exe直接创建而来,有且仅有一个,并且创建的子进程主镜像副本B,也有且仅有一个,如此既可保护目标程序原进程不被恶意程序篡改,方案还具有简单易操作的优点。
在进一步的实施方案中,所述的一种通过修改进程保护程序的方法,同时采用镜像文件内存加载(方式1)、在PEB_LDR_DATA数据结构中脱链(方式2)、抹除子进程主镜像副本B的文件名(方式3)和抹除副本PE头数据(方式4)的方式隐藏所述子进程主镜像副本B,隐藏效果。
其中,方式1即是不使用操作系统的镜像文件加载功能,把选中的子进程主镜像副本加载到内存中执行。通常情况下,一个程序通过操作系统正常加载的镜像文件(.exe),在操作系统的关键结构中调用api可以枚举出来。要隐藏镜像文件(.exe),一种做法是修改操作系统的关键结构中的数据,让api枚举不出来。另一种做法是不使用操作系统的加载镜像文件(.exe)功能,而是程序自己通过模拟操作系统加载镜像文件(.exe)的某些关键操作,这种方式,在操作系统的关键结构中没有相关记录,所以api枚举不出来,也不需要去改操作系统的关键结构。方式1利用其镜像文件内存加载时的隐藏性可将子进程主镜像副本B顺利隐藏。
方式2即是直接在进程环境信息块(PEB)中将子进程主镜像副本B的链表消除(RemoveEntryList)。此方案可保护子进程主镜像副本B不被通过查找链表查找隐藏的镜像副本的恶意程序和大部分的系统安全程序(比如RKU,Gmer,XueTr,Atool,NIAP,但IceSword是个例外)发现。
方式3即是基于所述的子进程主镜像副本B的基址遍历VAD树,找到所述子进程主镜像副本B的VAD结构,修改所述VAD结构的FileName.Buffer为0,所述VAD树表示基于虚拟地址描述符的二叉排序树。本方式修改所述子进程主镜像副本B的VAD结构的FileName.Buffer为0,因为程序运行时是从FileName.Buffer取到文件名,若文件名指向的路径(子进程主镜像副本B)无效,则可实现子进程主镜像副本B的顺利隐藏。此方法可保护子进程主镜像副本B不被通过FileName.Buffer获取文件名查找隐藏的进程的恶意程序和IceSword和Sysnap的Yas Kit等类型系统安全程序发现。
方式4即是将子进程主镜像副本B的PE文件头填写为零,可将子进程主镜像副本B隐藏于直接枚举所有有效内存并检查PE标记来确定是否有隐藏进程的恶意程序。
在其他的实施方式中,隐藏所述子进程主镜像副本B的方式不限于上述方式,可单独采用其中一种隐藏方式,可以同时采用两种、三种。除了上述四种隐藏方式外,还可采用其他的隐藏方式或隐藏方式的组合。
对应于图2,从程序设计层面出发,在本实施例所述的一种通过修改进程保护程序的方法,具体的步骤为:
C1.父进程a.exe通过调用CreateProcess api创建子进程b.exe,此api加上CREATE_SUSPENDED参数可让被创建的子进程b.exe被挂起不执行,并保存此api返回的【子进程b.exe的进程handle(句柄)】和【子进程b.exe的主线程handle】;
C2.父进程a.exe通过【子进程b.exe的进程handle(句柄)】,调用VirtualAllocEx和WriteProcessMemory等api在子进程b.exe的内存空间中,为子进程主镜像副本B分配内存并写入子进程主镜像副本B,并采用上述方式1-方式4的方式将所述入子进程主镜像副本B隐藏;
C3.父进程a.exe通过【子进程b.exe的主线程handle(句柄)】,调用GetThreadContext api获取【子进程b.exe的主线程上下文CONTEXT】数据,其中CONTEXT的RCX成员即为【子进程b.exe的主线程】的入口地址;
父进程a.exe修改【子进程b.exe的主线程入口地址】(CONTEXT的RCX)为【子进程主镜像副本B代码中的入口地址】,并通过调用SetThreadContext api修改【子进程b.exe的主线程上下文CONTEXT】;
C4.父进程a.exe通过【子进程b.exe的主线程handle(句柄)】,调用ResumeThreadapi恢复子进程b.exe的执行,让【子进程b.exe的主线程】去执行【子进程主镜像副本B中入口代码】。
实施例2
本实施例与实施例1的不同之处在于,创建的子进程主镜像副本B不止为一个,而是至少两个,其中的一个子进程主镜像副本B被选中用来承接子进程b.exe的主线程入口地址,而其他至少一个子进程主镜像副本B用来吸引及迷惑恶意程序,让其更无法获取目标程序原进程的入口代码,相比只设置一个子进程主镜像副本B的方案,本方案对目标程序的保护力度得到进一步加强。
如图5所示,本实施例设置的子进程主镜像副本B为3个,包括子进程主镜像副本B1、B2、B3,其中B3被选作用来承接子进程b.exe的主线程入口地址。
实施例3
本实施例与实施例1的不同之处在于,创建的所述子进程b.exe为第二级子进程b.exe(也就是子进程b.exe再创建的子进程b.exe,孙进程)或者是更后级的子进程b.exe,其中的一个子进程主镜像副本B被选中用来承接子进程b.exe的主线程入口地址,而其他至少一个子进程主镜像副本B用来吸引及迷惑恶意程序,让其更无法获取目标程序原进程的入口代码,相比实施例1创建一个子进程b.exe的方式,本实施例能够将目标代码进一步隐藏得更深,使其更不容易被恶意程序发现,进一步加强对目标程序的保护力度。
如图6所示,父进程a.exe创建两个子进程b.exeb1.exe和b2.exe,b1.exe和b2.exe分别再创建两个子进程b.exeb3.exe-b6.exe(相对于父进程a.exe来说是孙进程),本实施例最后选取子进程b6.exe来隐藏子进程主镜像副本B,而其他进程(b1.exe-b5.exe)并不创建隐藏的子进程主镜像副本B,且只有b6.exe中包含且隐藏了目标程序原进程入口代码。
实施例4
如图7所示,本实施例综合了实施例3和实施例4,不仅创建了子进程b1.exe-b6.exe,还在选取的子进程b6.exe中(只有该进程包含且隐藏了目标程序原进程入口代码)创建了3个隐藏的子进程主镜像副本B1-B3,其中子进程主镜像副本B3被选中用来承接子进程b6.exe的主线程入口地址,而子进程b1.exe-b5.exe及子进程主镜像副本B1、B2用来吸引及迷惑恶意程序,让其更无法获取目标程序原进程的入口代码,相比实施例3和实施例4,本方案对目标程序的保护力度得到进一步加强。
实施例5
与实施例4相比,本实施例的不同之处仅在于,子进程b6.exe中的子进程主镜像副本B3中还包括一触发子模块,该触发子模块用于在子进程b6.exe运行后,向目标地址发送一成功执行反馈指令,用于提醒用户隐藏的子进程主镜像副本B3被顺利执行。目标地址可以为本地对话框,或者弹窗,或者通知栏消息。
以上所述的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。

Claims (10)

1.一种通过修改进程保护程序的方法,其特征在于,包括:
父进程创建子进程,并设置所述子进程一经建立便立即被挂起,此时所述子进程的进程空间中包括子进程主镜像正本;
在所述子进程的进程空间中创建至少一个隐藏的子进程主镜像副本,所述子进程主镜像副本与所述子进程主镜像正本一致;
将所述子进程的主线程入口地址从所述子进程主镜像正本的入口地址修改为被选中的子进程主镜像副本的入口地址;
恢复执行所述子进程的主线程,执行所述被选中的子进程主镜像副本。
2.如权利要求1所述的一种通过修改进程保护程序的方法,其特征在于,所述子进程主镜像正本和所述子进程主镜像副本均包括PE文件头、代码和其它数据,所述代码中包括目标程序的入口代码。
3.如权利要求1所述的一种通过修改进程保护程序的方法,其特征在于:所述子进程主镜像副本创建在所述子进程的任意可用进程空间中。
4.如权利要求1所述的一种通过修改进程保护程序的方法,其特征在于,隐藏所述述子进程主镜像副本的方式包括:镜像文件内存加载,在PEB_LDR_DATA数据结构中脱链,抹除副本文件名,抹除副本PE头数据。
5.如权利要求1所述的一种通过修改进程保护程序的方法,其特征在于:
所述子进程主镜像副本为一个;
或者,所述子进程主镜像副本为两个,其中一个所述子进程主镜像副本被选中;
或者,所述子进程主镜像副本为m个,其中一个所述子进程主镜像副本被选中,m≥3。
6.如权利要求1所述的一种通过修改进程保护程序的方法,其特征在于:
所述子进程为第一级子进程,为所述父进程直接创建;
或者,所述子进程为第二级子进程,为所述父进程直接创建的第一级子进程再创建;
或者,所述子进程为第n级子进程,为根据所述父进程创建的第n-1级子进程再创建,n≥3。
7.如权利要求1所述的一种通过修改进程保护程序的方法,其特征在于,所述父进程创建子进程,并设置所述子进程一经建立便立即被挂起,此时所述子进程的进程空间中包括子进程主镜像正本,具体为:
父进程通过调用CreateProcess api创建子进程,此api加上CREATE_SUSPENDED参数可让被创建的子进程被挂起不执行,并保存此api返回的子进程的进程handle和子进程的主线程handle。
8.如权利要求7所述的一种通过修改进程保护程序的方法,其特征在于,创建子进程主镜像副本,具体为:
父进程通过所述子进程的进程handle,调用VirtualAllocEx和WriteProcessMemory等api在子进程的内存空间中,为子进程主镜像副本分配内存并写入子进程主镜像副本。
9.如权利要求8所述的一种通过修改进程保护程序的方法,其特征在于,所述将所述子进程的主线程入口地址从所述子进程主镜像正本的入口地址修改为被选中的子进程主镜像副本的入口地址,具体包括:
父进程通过所述子进程的主线程handle,调用GetThreadContext api获取所述子进程的主线程上下文CONTEXT数据,其中CONTEXT的RCX成员即为所述子进程的主线程的入口地址;
父进程修改所述子进程的主线程入口地址RCX为所述子进程主镜像副本代码中的入口地址,并通过调用SetThreadContext api修改所述子进程的主线程上下文CONTEXT。
10.如权利要求9所述的一种通过修改进程保护程序的方法,其特征在于,所述恢复执行所述子进程的主线程,执行所述被选中的子进程主镜像副本,具体为:
父进程通过所述子进程的主线程handle,调用ResumeThread api恢复子进程的执行,让所述子进程的主线程去执行所述子进程主镜像副本代码中入口代码。
CN202010464109.6A 2020-05-27 2020-05-27 一种通过修改进程保护程序的方法 Active CN111625813B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010464109.6A CN111625813B (zh) 2020-05-27 2020-05-27 一种通过修改进程保护程序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010464109.6A CN111625813B (zh) 2020-05-27 2020-05-27 一种通过修改进程保护程序的方法

Publications (2)

Publication Number Publication Date
CN111625813A CN111625813A (zh) 2020-09-04
CN111625813B true CN111625813B (zh) 2023-02-28

Family

ID=72271429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010464109.6A Active CN111625813B (zh) 2020-05-27 2020-05-27 一种通过修改进程保护程序的方法

Country Status (1)

Country Link
CN (1) CN111625813B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230058935A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Managing return parameter allocation

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725216A (zh) * 2004-07-22 2006-01-25 国际商业机器公司 用于支持跨分岔系统调用的共享库文本复制方法和设备
EP1826701A2 (en) * 2006-02-22 2007-08-29 Fujitsu Limited Secure processor
CN101770551A (zh) * 2008-12-30 2010-07-07 中国科学院软件研究所 一种基于硬件模拟器的处理隐藏进程的方法
KR101057432B1 (ko) * 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
CN104346542A (zh) * 2013-07-24 2015-02-11 阿里巴巴集团控股有限公司 基于二进制程序的漏洞挖掘方法及装置
JP5955475B1 (ja) * 2016-01-27 2016-07-20 三井物産セキュアディレクション株式会社 プログラム、情報処理装置、及び情報処理方法
CN108334404A (zh) * 2017-01-20 2018-07-27 腾讯科技(深圳)有限公司 应用程序的运行方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725216A (zh) * 2004-07-22 2006-01-25 国际商业机器公司 用于支持跨分岔系统调用的共享库文本复制方法和设备
EP1826701A2 (en) * 2006-02-22 2007-08-29 Fujitsu Limited Secure processor
CN101770551A (zh) * 2008-12-30 2010-07-07 中国科学院软件研究所 一种基于硬件模拟器的处理隐藏进程的方法
KR101057432B1 (ko) * 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
CN104346542A (zh) * 2013-07-24 2015-02-11 阿里巴巴集团控股有限公司 基于二进制程序的漏洞挖掘方法及装置
JP5955475B1 (ja) * 2016-01-27 2016-07-20 三井物産セキュアディレクション株式会社 プログラム、情報処理装置、及び情報処理方法
CN108334404A (zh) * 2017-01-20 2018-07-27 腾讯科技(深圳)有限公司 应用程序的运行方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肖刚."基于虚拟文件系统的诱骗主机安全方案研究".2013,(第210期),全文. *

Also Published As

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

Similar Documents

Publication Publication Date Title
US10866813B2 (en) Linking virtualized application namespaces at runtime
US9582479B2 (en) Security model for a layout engine and scripting engine
TW588255B (en) Operating system abstraction and protection layer
US5537596A (en) Method and apparatus for overriding resource maps in a computer system
EP3005116B1 (en) Interface for representing bindings between objects in a web browser's layout engine memory space and objects in a scripting engine memory space
US8887150B2 (en) Methods for dynamic mobile application behavior modification subject to a behavior policy
KR100843701B1 (ko) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
JP2005327275A (ja) 効率的なパッチ当て
PL180841B1 (pl) Sposób sterowania systemu komputerowego
CN107908958B (zh) SELinux安全标识符防篡改检测方法及系统
US20200342093A1 (en) Application program starting method and apparatus and computer readable storage medium
MX2007011026A (es) Metodo y sistema para la deteccion de codigo extrano.
US20230401241A1 (en) System for lightweight objects
KR100898968B1 (ko) 응용프로그램에서 사용되는 임시 파일의 자동 완전 삭제방법
EP1361496A2 (en) Alteration of executable code module load locations
CN111625813B (zh) 一种通过修改进程保护程序的方法
CN111625296B (zh) 一种通过构建代码副本保护程序的方法
CA3075978A1 (en) Policy based persistence
US8578158B2 (en) Information processing apparatus, computer-readable recording medium configured to store command execution determination program, and command execution determination method
JP2006510098A (ja) 分散デスクトップ・パッケージを使用してデスクトップ・コンポーネントを復元するためのシステムおよび方法
US9009731B2 (en) Conversion of lightweight object to a heavyweight object
JP2011081501A (ja) オペレーティングシステムプログラム、及びこれが搭載されているコンピュータ
US7610478B1 (en) Method and apparatus for improving a computer boot sequence
CN115994350A (zh) 拦截文件打开方式变更方法、装置、电子设备和存储介质
CN112182516A (zh) 基于relro安全保护的检测方法、终端及存储介质

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