一种模块加载方法、装置及电子设备的制造方法_2

文档序号:9453376阅读:来源:国知局
地址生成规则,生成所述新进程的模块的新加载地址;按照所生成的新加载地址以及所述新进程的模块占用内存空间的大小,加载所述新进程的模块。应用本发明实施例所提供的技术方案,在对新进程的模块按照预先指定的加载地址进行加载之前,就生成了新进程的模块的新加载地址,将新进程的模块按照生成的新加载地址进行加载。即使黑客获得了模块的新加载地址,也很难通过新加载地址获得模块的预先指定的加载地址,进而不能通过预先指定的加载地址寻找适合用于攻击的指令片断进行攻击,提高了计算机对ROP攻击的防护,提高了计算机的安全性。
【附图说明】
[0062]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0063]图1为本发明实施例提供的模块加载方法的第一种流程示意图;
[0064]图2为本发明实施例提供的模块加载方法的第二种流程示意图;
[0065]图3为本发明实施例提供的模块加载方法的第三种流程示意图;
[0066]图4为本发明实施例提供的模块加载方法的第四种流程示意图;
[0067]图5为本发明实施例提供的模块加载装置的第一种结构示意图;
[0068]图6为本发明实施例提供的模块加载装置的第二种结构示意图;
[0069]图7为本发明实施例提供的模块加载装置的第三种结构示意图;
[0070]图8为本发明实施例提供的模块加载装置的第四种结构示意图。
【具体实施方式】
[0071]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0072]下面通过具体实施例,对本发明进行详细说明。
[0073]图1为本发明实施例提供的模块加载方法的第一种流程示意图,可以包括:
[0074]SlOl:检测是否有新进程启动,如果检测到有新进程启动,则执行S102 ;
[0075]S102:在对所述新进程的模块按照预先指定的加载地址进行加载之前,根据预先设置的地址生成规则,生成所述新进程的模块的新加载地址;
[0076]S103:按照所生成的新加载地址以及所述新进程的模块占用内存空间的大小,加载所述新进程的模块。
[0077]示例性的,下面以某一浏览器的一个进程X为例进行说明。
[0078]假设该进程X包含三个模块,分别为模块a、模块b和模块C。预先指定的模块a的加载地址为:00030000H,预先指定的模块b的加载地址为:00040000H,预先指定的模块c的加载地址为:00050000H ;
[0079]在实际应用中,预先指定的加载地址也通常被本领域技术人员称为模块建议基地址、建议装载地址、优先装载地址等等。
[0080]当检测到进程X启动时,在对进程X的模块a、模块b和模块c按照预先指定的加载地址进行加载之前,根据预先设置的地址生成规则,生成所述新进程的模块的新加载地址。
[0081]假设预先设置的地址生成规则为:在预先指定的加载地址的基础上偏移100H,则生成的模块a的新加载地址为:00030100H,生成的模块b的新加载地址为:00040100H,生成的模块c的新加载地址为:00050100H。
[0082]按照新生成的模块a的新加载地址00030100H、模块b的新加载地址00040100H,模块C的新加载地址00050100H以及模块a、模块b、模块c分别占用内存空间的大小,对模块a、模块b和模块c进行加载。
[0083]在实际应用中,所述新进程的模块为主模块,且主模块中存在重定位表;或所述新进程的模块为系统模块;可以随机生成地址,将随机生成的地址作为所述新进程的模块的新加载地址。此时生成的模块的新加载地址将不再受模块预先指定的加载地址的约束,并且利用随机生成地址的方法,增加了黑客获得模块的预先指定的加载地址。
[0084]示例性的,假设按照随机生成地址的方法,生成模块a的新加载地址为:003514D0H,生成模块b的新加载地址为:0054250CH,生成模块c的新加载地址为:0064578FH。
[0085]按照生成的模块a的新加载地址003514D0H、模块b的新加载地址0054250CH,模块c的新加载地址0064578FH以及模块a、模块b、模块c分别占用内存空间的大小,对模块a、模块b和模块c进行加载。
[0086]在实际应用中,所述新进程的模块为主模块,且主模块中不存在重定位表;可以将预先指定的加载地址,确定为所述新进程的模块的新加载地址。
[0087]在实际应用中,可以生成进程部分模块的新加载地址,例如只生成指定模块的新加载地址;也可以生成进程所有模块的新加载地址,其中包含主模块和系统模块。在生成进程所有模块的新加载地址的情况下,使得黑客也无法利用主模块和/或系统模块来构造ROP进行攻击。
[0088]在实际应用中,在新进程的模块为系统模块的情况下,还可以根据预先指定的加载地址和所述新进程的模块占用内存空间的大小,填充预先准备的跳转指令,具体的,对起始地址为模块预先指定的加载地址、空间大小为模块占用内存空间大小的内存空间进行申请;在进程的各个模块中所有全局函数(不支持重定位的函数)处添加JMP指令,执行JMP指令,使得各个模块的中的所有全局函数跳转到加载该模块的内存空间中继续执行,保证进程的正常运行。
[0089]需要说明的是,上述以某一浏览器的进程X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0090]应用本发明图1所示实施例,在对新进程的模块按照预先指定的加载地址进行加载之前,就生成了新进程的模块的新加载地址,将新进程的模块按照生成的新加载地址进行加载。即使黑客获得了模块的新加载地址,也很难通过新加载地址获得模块的预先指定的加载地址,进而不能通过预先指定的加载地址寻找适合用于攻击的指令片断进行攻击,提高了计算机对ROP攻击的防护,提高了计算机的安全性。
[0091]图2为本发明实施例提供的模块加载方法的第二种流程示意图,本发明图2所示实施例在图1所示实施例的基础上,增加S104:判断所述新进程是否为需要保护的进程。
[0092]具体的,判断所述新进程是否为需要保护的进程,可以判断预先存储的进程配置信息表中是否记录有与所述新进程对应的信息;如果有,则将所述新进程确定为需要保护的进程。
[0093]示例性的,下面以某一浏览器的一个进程X为例进行说明。
[0094]在进程X调用系统函数MiMapViewOfImageSect1n映射镜像内存之前,利用Hook技术在进程X的模块中添加用于处理消息的程序段,通过系统调用,把该程序段挂入系统。每当特定的消息发出,在没有到达目的窗口前,该程序段就先捕获该消息,亦即该程序段先得到控制权。这时该程序段即可以对该消息加工处理。
[0095]假设预先存储的进程配置信息表存储了 5个进程相关的信息(例如进程名称、进程的ID号等等),5个进程分别为进程M、进程N、进程A、进程X、进程F ;利用Hook技术捕获的消息为新进程的名称X ;判断预先存储的配置信息表中是否存在与进程X对应的信息,判断结果为是,则将进程X确定为需要保护的进程。
[0096]需要说明的是,上述以某一浏览器的进程X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0097]应用本发明图2所示实施例,只对需要保护的进程的模块的地址进行随机化处理,避免了对所有进程的模块随机化处理可能导致的兼容性问题的出现。
[0098]图3为本发明实施
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1