[发明专利]脚本的加载控制方法及装置有效
申请号: | 201410610794.3 | 申请日: | 2014-11-03 |
公开(公告)号: | CN105630526B | 公开(公告)日: | 2019-04-19 |
发明(设计)人: | 王彩红 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苏培华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 脚本 加载 控制 方法 装置 | ||
1.一种脚本的加载控制方法,其特征在于,包括:
启动脚本引擎,并将文件系统下的预置文件路径作为参数传递给所述脚本引擎,以便所述脚本引擎根据所述预置文件路径进行启动;其中,所述预置文件路径下不保存待执行的脚本文件;
在所述脚本引擎的进程空间内新申请预置大小的内存空间;
获取脚本内容,并将获取的脚本内容写入所述内存空间中;
监控所述脚本引擎对文件操作类函数的调用行为;
当监控到所述脚本引擎调用所述文件操作类函数时,截获所述脚本引擎的操作指令,并对所述操作指令进行分析;
根据分析结果执行对应操作;其中,如果经分析所述操作指令为打开或读写操作指令,且指向所述预置文件路径,则对所述内存空间内的所述脚本内容执行对应操作,并将操作结果返回给所述脚本引擎,以便模拟脚本引擎对文件系统中的脚本文件的操作。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述脚本引擎根据所述预置文件路径进行启动成功后,暂停所述脚本引擎的运行;
定位所述脚本引擎入口的内存地址;
将所述脚本引擎入口的内存地址处保存的原始指令修改为预置指令;
在所述预置指令后的内存地址处保存所述新申请的内存空间的地址;
恢复所述脚本引擎的运行,以便所述脚本引擎执行所述入口的内存地址处的所述预置指令;
其中,所述预置指令用于命令所述脚本引擎通过调用预置函数加载预置的动态链接库DLL,以便将所述DLL注入到所述脚本引擎中,并通过所述DLL的主函数完成所述对所述脚本引擎调用行为的监控,操作指令的截获,以及分析所述脚本引擎操作脚本文件的操作指令,根据分析结果执行对应操作的步骤。
3.根据权利要求2所述的方法,其特征在于,还包括:
在将所述脚本引擎入口的内存地址处保存的原始指令修改为预置指令之前,在所述新申请的内存空间中将所述原始指令进行备份;
在所述动态链接库的主函数返回后,将所述内存空间中备份的原始指令写回所述脚本引擎入口的内存地址处,以便于所述脚本引擎继续从所述入口的内存地址处执行所述原始指令。
4.根据权利要求1所述的方法,其特征在于,如果经分析所述操作指令为文件创建指令,且指向所述预置文件路径,所述根据分析结果执行对应操作,包括:
在所述预置文件路径下创建一空文件;
将创建所述空文件的文件句柄返回给所述脚本引擎。
5.根据权利要求4所述的方法,其特征在于,如果所述操作指令为文件打开指令或者写指令,且指向所述文件句柄,所述根据分析结果执行对应操作,包括:
对所述内存空间内的所述脚本内容执行打开或者写操作;
将已打开或者已写入的通知信息作为操作结果返回给所述脚本引擎。
6.根据权利要求4所述的方法,其特征在于,如果所述操作指令为文件读指令,且指向所述文件句柄,所述根据分析结果执行对应操作,包括:
读取所述内存空间内的所述脚本内容;
将读取到的脚本内容作为操作结果返回给所述脚本引擎。
7.根据权利要求4所述的方法,其特征在于,如果经分析所述操作指令为文件关闭指令,且指向所述文件句柄,所述根据分析结果执行对应操作,包括:
删除所保存的所述空文件的文件句柄,并关闭所述空文件。
8.根据权利要求1至7任一项所述的方法,所述获取脚本内容,包括:
向服务器发送下发脚本内容的请求,并接收服务器响应所述请求而下发的脚本内容。
9.根据权利要求1至7任一项所述的方法,还包括:
在脚本引擎执行完毕所述内存空间中的脚本内容后,清空所述内存空间中的所述脚本内容并释放所述内存空间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410610794.3/1.html,转载请声明来源钻瓜专利网。