本发明专利技术公开了一种PE程序文件加载执行方法,属于软件安全技术,解决了现有技术中PE文件加载运行时PE文件数据容易被复制或非法利用的问题。该PE文件代码动态加载执行方法包括:(1)建立只包含有一个PE文件头数据的PE文件;(2)以暂停方式启动步骤(1)所建立的PE文件;(3)从服务端程序接收被加载PE文件运行所必要的代码和数据;(4)将步骤(3)所接收到的代码和数据加载到步骤(2)所创建进程的内存空间当中;(5)向步骤(2)所创建的进程的内存空间当中添加附加处理代码;(6)恢复步骤(2)所创建进程的状态为运行状态。本发明专利技术实现了在PE文件程序启动和运行过程中,文件系统中不存储实际的PE文件数据,能有效的防止PE文件代码数据泄露或被非法利用。
【技术实现步骤摘要】
一种PE程序文件加载执行方法
本专利技术涉及一种PE程序文件加载执行方法,具体地说:是涉及一种PE文件启动运行时直接通过服务端传输并直接加载PE文件代码和数据到进程内存空间中,初始化并执行,能够实现防止PE文件代码在PE文件启动和运行过程中,PE文件代码被非法利用或泄露。
技术介绍
传统的PE文件其加载过程均由操作系统从一个文件系统当中直接读取出PE文件中所包含的代码及数据并结合该PE文件中的PE文件头信息建立新的进程,再通过内存映射或直接复制将数据加载到该进程的内存空间中,做必要的初始化后便开始转入PE文件的代码执行。传统的方法要求,在PE文件的加载和运行的整个周期当中,如图1所示其相应的PE文件的各个数据部分,包括PE文件头数据,区段数据等必须一直存在于PE文件启动时所存储的文件系统当中,同时还要求PE文件启动和运行时,该PE文件在文件系统当中的PE文件代码是完整的。同时在该PE文件程序运行时,PE文件可以被复制,无法删除。此方法不能防止PE文件在运行的时候,其文件数据被复制,拷贝,从而有可能造成PE文件数据的泄露或被非法利用。
技术实现思路
本专利技术的目的在于提供一种PE程序文件加载执行方法,通过将PE文件的代码和数据存储于通过网络与执行PE文件系统相连接的服务端中,在进程建立以后,即时从服务端传输PE文件的代码和数据到执行PE文件程序的系统内存中,并直接将区段数据等除PE文件头数据外的数据加载到相应进程的内存空间当中,初始化并执行。如图2所示,实现在整个PE程序从启动到执行的整个周期当中,执行程序的系统的文件系统当中,不会存在该PE文件的区段代码和区段数据。同时,在程序启动运行后,执行程序的系统的内存中也不会存在完整原始的PE文件代码和数据,从而避免PE文件代码和数据泄露和被非法利用。为了实现上述目的,本专利技术采用的技术方案如下:一种PE程序文件加载执行方法,所述PE程序文件加载执行方法包括以下步骤:(1)建立只包含有一个PE文件头数据的PE文件(2)以暂停方式启动步骤(1)所建立的PE文件(3)从服务端程序接收被加载PE文件运行所必要的代码和数据(4)将步骤(3)所接收到的代码和数据加载到步骤(2)所创建进程的内存空间当中(5)向步骤(2)所创建的进程的内存空间当中添加附加处理代码,具体步骤如下:a.在步骤(2)所创建的进程中申请一段内存空间b.将附加处理代码写入所申请的内存空间当中c.修改步骤(2)所创建进程的代码入口,使其转入添加的附加处理代码入口。(6)恢复步骤(2)所创建进程的状态为运行状态,恢复程序代码的执行。所述步骤(1)的方法为:由服务端程序在服务端从被动态加载执行的PE文件中复制PE文件头数据并通过网络将数据传输给运行于被加载执行PE文件需要运行的系统中的加载程序。加载程序在接收到步骤(1)中服务端程序传输过来的数据后,在被加载执行PE文件需要被启动的文件位置建立一个文件,并将接收到的数据进行修正后写入文件当中,从而在被加载PE文件需要被启动的文件位置建立一个只包含一个PE文件头数据的PE文件。所述步骤(2)的方法为:加载程序在启动所述步骤(1)所创建的PE文件时,设定相应的参数,使操作系统创建一个处于暂停状态的新进程。所述步骤(3)的方法为:加载程序从服务端程序接收被加载执行PE文件运行时所需要的必要的代码和数据。所述步骤(4)的方法为:加载程序对步骤(3)所接收到的数据进行必要的调整,并根据被加载执行PE文件的原始PE文件头中得区段描述信息将数据写入步骤(2)所创建进程内存空间当中的正确位置。所述步骤(5)的方法为:加载程序在步骤(2)所创建进程中申请一段带可执行代码属性的内存空间,然后将一段自定义的附加处理代码写入所申请的内存空间,最后将步骤(2)所创建进程的原始代码入口处代码修改为一段跳转到写入的附加处理代码入口处的代码。所述步骤(6)的方法为:加载程序恢复步骤(2)所创建进程的状态为运行状态。所述步骤(3)中的必要代码和数据具体包括PE文件头区段描述表所指向的该PE文件位于文件当中的各区段代码或数据。在上述方案中,需要一个加载程序来完成进程的创建和代码数据的动态加载,同时还需要一个服务端程序来存储和下发PE文件的代码数据。对步骤(1)所创建PE文件的PE文件头的修正是根据所创建PE文件能被windows正确识别和启动来修正的。在向步骤(2)所创建进程内存空间中写入区段数据后需要在该进程空间中申请一段新的内存空间并添加一段附加处理代码,并同时将进程的原始代码入口的代码修改为直接转入附加处理代码入口。附加处理代码为一段自定义的处理代码,在此自定义的处理代码中,需要对进程的导入表数据进行初始化或其他相关操作,最后转入进程原始代码入口。附加处理代码主要用于对进程中代码或数据进行必要修正,以使得进程能够正常运行。采用本专利技术可以使PE文件通过一种新的方式加载并运行,确保在PE文件的启动和运行过程中,PE所运行的系统的文件系统中不存储被加载执行PE文件的完整代码和数据,从而可以防止文件代码数据的泄露或被非法复制,实现对PE文件代码和数据的保护。附图说明图1为现有技术加载和执行PE文件期间文件系统中存储的被执行PE文件的数据示意图。图2为本专利技术加载和执行PE文件期间文件系统中存储被执行PE文件的数据示意图。具体实施方式实施例一种PE文件代码动态加在执行方法,包括以下步骤:(1)建立只包含有一个PE文件头数据的PE文件:通知服务端程序从需要被加载执行的PE程序文件中复制其PE文件头数据并传输给加载程序。加载程序在收到数据后,对数据进行修正,将其中各区段头描述表(由微软winnt.h头文件定义的IMAGE_SECTION_HEADER结构)中的PointerToRawData(指向文件实际数据偏移)成员结构修改为0,以及同一结构中SizeOfRawData(实际文件数据大小)成员修改为0,使区段不指向文件中的实际数据。修改PE头中的DataDirectory(数据目录)成员中的IMAGE_DIRECTORY_ENTRY_IMPORT项,将该项的VirtualAddress成员和Size成员值修改为0,使得windows在启动该PE程序文件时不处理导入表信息。最后根据被加载执行PE程序文件情况做一些可能影响新建立PE文件启动的修正。一般包括对签名项进行修正等。在对数据进行修正后,在被加载PE程序文件需要被启动的文件位置处新建立一个文件,并将上面所修正后的数据写入该文件。(2)使用函数CreateProcess(windows创建进程函数)并设定CREEATE_SUSPEND(暂停标识)参数启动步骤(1)所建立的PE文件,并取得所创建进程的句柄。(3)加载程序通过网络接收PE文件的代码:根据步骤(2)所创建进程等信息确定被加载PE程序运行所必要的代码和数据,一般包括各区段数据,如果步骤(2)所创建进程并非在PE文件头信息中所设定的进程基址启动,还将包括重定位信息。确定所必要的代码和数据后,通知服务端下发所需数据,接收全部服务端所下传的数据并申请一段内存空间存储。(4)加载程序将步骤(4)所接收到的代码和数据加载到步骤(3)所创建进程的内存空间当中:使用NtQuerylnformation本文档来自技高网...
【技术保护点】
一种PE程序文件加载执行方法,其特征在于,所述PE程序文件加载执行方法包括以下步骤:(1)建立只包含有一个PE文件头数据的PE文件(2)以暂停方式启动步骤(1)所建立的PE文件(3)从服务端程序接收被加载PE文件运行所必要的代码和数据(4)将步骤(3)所接收到的代码和数据加载到步骤(2)所创建进程的内存空间当中(5)向步骤(2)所创建的进程的内存空间当中添加附加处理代码,具体步骤如下:a.在步骤(2)所创建的进程中申请一段内存空间b.将附加处理代码写入所申请的内存空间中c.修改步骤(2)所创建进程的代码入口,使其转入添加的附加处理代码入口。(6)恢复步骤(2)所创建进程的状态为运行状态,恢复程序代码的执行。
【技术特征摘要】
1.一种PE程序文件加载执行方法,其特征在于,所述PE程序文件加载执行方法包括以下步骤:(1)建立只包含有一个PE文件头数据的PE文件,并对PE文件头的导入表描述项置0;(2)以暂停方式启动步骤(1)所建立的PE文件;(3)从服务端程序接收被加载PE文件运行所必要的代码和数据;(4)将步骤(3)所接收到的代码和数据加载到步骤(2)所创建进程的内存空间当中;(5)向步骤(2)所创建的进程的内存空间当中添加附加处理代码,具体步骤如下:a.在步骤(2)所创建的进程中申请一段内存空间;b.将附加处理代码写入所申请的内存空间当中;c.修改步骤(2)所创建进程的原始代码入口,使其转入添加的附加处理代码入口;(6)恢复步骤(2)所创建进程的状态为运行状态,恢复程序代码的执行;其中所述步骤(5)中的附加处理代码的具体功能包括:对被加载执行的PE文件的导入表进行初始化,恢复步骤(5)中所修改的原始代码入口,执行完毕后转入原始代码入口。2.根据权利要求1所述的PE程序文件加载执行方法,其特征在于,所述步骤(1)的方法为:服务端从需要被动态加载执...
【专利技术属性】
技术研发人员:章立春,
申请(专利权)人:章立春,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。