[发明专利]一种可执行文件的内存执行方法有效
申请号: | 201510268028.8 | 申请日: | 2015-05-22 |
公开(公告)号: | CN104820612B | 公开(公告)日: | 2018-02-09 |
发明(设计)人: | 洪珂;黄达福 | 申请(专利权)人: | 网宿科技股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 上海专利商标事务所有限公司31100 | 代理人: | 胡林岭 |
地址: | 200030 上海市徐汇区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 可执行文件 内存 执行 方法 | ||
1.一种目标程序的内存执行方法,其特征在于,所述方法包括:
宿主程序向服务器上请求目标程序,其中所述宿主程序位于目标机器内,所述目标程序位于所述服务器内;
所述宿主程序解析所述目标程序的各个代码段,并将所述各个代码段映射到所述目标机器的内存的对应地址空间中;
所述宿主程序解析所述目标程序执行时所需的传入参数,并将所述传入参数存储在所述宿主程序的当前进程的栈地址;
所述宿主程序在向目标程序移交控制权前,释放本身执行时所占用的运行时内存空间;
所述目标程序从所述栈地址获得传入参数并执行,所述宿主程序被所述目标程序覆盖。
2.如权利要求1所述的目标程序的内存执行方法,其特征在于,宿主程序向服务器上请求目标程序包括以下步骤:
建立所述目标机器与所述服务器之间的通讯连接;
在所述目标机器中创建软链接文件,其中所述软链接文件指向所述宿主程序,并且所述软链接文件的文件名与所述目标程序的文件名一致;
宿主程序通过所述软链接文件启动后,解析所述软链接文件的文件名,并将所述软链接文件的文件名作为向所述服务器请求的目标程序的文件名。
3.如权利要求1所述的目标程序的内存执行方法,其特征在于,宿主程序向服务器上请求目标程序的同时,所述方法还包括以下步骤:
向所述服务器请求校验文件;
利用所述校验文件对所述目标程序进行校验。
4.如权利要求1所述的目标程序的内存执行方法,其特征在于,所述宿主程序解析所述目标程序的各个代码段,并将所述各个代码段映射到所述目标机器的内存的对应地址空间中之前,所述方法还包括:
所述宿主程序解析是否存在该目标程序执行所依赖的动态链接库文件;
如果存在所述动态链接库文件,则所述宿主程序向所述服务器请求所述动态链接库文件,并解析装载所述动态链接库文件。
5.如权利要求1所述的目标程序的内存执行方法,其特征在于,所述宿主程序解析所述目标程序的各个代码段,并将所述各个代码段映射到所述目标机器的内存的对应地址空间中之前,所述方法还包括:
所述宿主程序解析所述目标程序是否存在INTERP头部;
如果存在所述INTERP头部,则所述宿主程序向所述服务器请求与所述INTERP头部相关联的解析例程,并解析装载所述解析例程。
6.如权利要求1所述的目标程序的内存执行方法,其特征在于,所述宿主程序解析所述目标程序执行时所需的传入参数,并将所述传入参数存储在所述宿主程序的当前进程的栈地址包括;
所述宿主程序定位当前进程的栈地址;
所述目标程序与所述宿主程序复用所述栈地址。
7.如权利要求1所述的目标程序的内存执行方法,其特征在于,所述宿主程序在向目标程序移交控制权前,释放本身执行时所占用的运行时内存空间包括:
所述宿主程序进入宿主汇编代码部分后,所述宿主程序不再对进程栈做任何改动;
所述宿主程序扫描本身所占用的地址空间,释放掉除了所述栈地址的空间以外的地址空间。
8.如权利要求7所述的目标程序的内存执行方法,其特征在于,所述目标程序从所述栈地址获得传入参数并执行,所述宿主程序被所述目标程序覆盖包括:
所述宿主汇编代码设置栈寄存器地址,指向宿主程序的原进程的栈顶,以便所述目标程序从所述栈顶获取所述传入参数;
所述宿主汇编代码编译修改GNU编译器套件的参数,将所述目标程序的默认入口地址做偏移,并且采用静态链接的方式进行编译,从而实现进程控制权的交接。
9.如权利要求1-8中任一项所述的目标程序的内存执行方法,其特征在于,所述方法基于Linux系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网宿科技股份有限公司,未经网宿科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510268028.8/1.html,转载请声明来源钻瓜专利网。