System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种在精简指令系统中实现远程转移的方法、在精简指令系统中实现远程转移的装置、计算设备及存储介质。
技术介绍
1、随着计算机技术的发展,形成了多种不同的指令集架构。每一种cpu采用的指令集各不相同,且各有其特点和核心的应用领域。
2、通过不同的工具链,上层应用往往能实现跨指令集架构的兼容性。但是在二进制层面,各架构的应用程序各不相同,具体地,应用程序的安全性、有效性、执行效率等关键问题在各架构上的表现不同,处理方式不同,因此,需要从二进制层面对应用程序进行分析,才能找到应用程序的问题的根源,从二进制层面入手才能从根源解决这些问题。其中,在对应用程序进行二进制分析时,有时候需要在用户指令空间植入分析代码,同时在原本的用户二进制指令中构造跳转指令以跳转到植入的分析代码中。
3、现有技术中,由于精简指令系统的指令格式整齐统一,指令格式中留下的偏移量空间较小,只能表达较小的偏移量。而精简指令系统的寻址空间很大,虚拟地址理论可以达到64位。在精简指令系统中,为了实现远程的指令流转移,需要将一个较大的基址装入基址寄存器,再结合指令内的立即数偏移来实现远程跳转。这种方法需要很多条指令才能实现远程跳转,实现远程跳转的过程较为复杂,工作量较大。
4、因此,需要一种在精简指令系统中实现远程转移的方法,以解决上述技术方案中存在的问题。
技术实现思路
1、为此,本专利技术提供一种在精简指令系统中实现远程转移的方法和在精简指令系统中实现远程转移
2、根据本专利技术的一个方面,提供一种在精简指令系统中实现远程转移的方法,在计算设备中执行,所述计算设备包括risc处理器并适于执行应用程序,所述方法包括:响应于将应用程序加载到内存中执行,将当前pc指针作为远程转移起点,从远程转移起点开始,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,其中,所述当前pc指针存放有远程转移起点地址;在所述远程转移起点插入近程跳转指令,以便risc处理器通过执行所述近程跳转指令,从所述远程转移起点跳转到所述目标空闲内存处执行;在所述目标空闲内存处插入绝对跳转指令,以便risc处理器通过执行所述绝对跳转指令,从所述目标空闲内存处跳转到远程转移目标地址处执行。
3、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,包括:响应于搜索到任一内存区段的空闲内存,确定所述空闲内存所在内存区段的长度;从应用程序的可执行文件中获取与所述空闲内存所在内存区段相对应的代码段,确定所述代码段的实际长度;基于所述空闲内存所在内存区段的长度、所述代码段的实际长度,确定所述空闲内存的长度;如果所述空闲内存的长度大于等于预定长度,则将所述空闲内存作为目标空闲内存。
4、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,还包括:如果所述空闲内存的长度小于预定长度,则继续搜索下一内存区段的下一空闲内存。
5、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,从应用程序的可执行文件中获取与所述空闲内存所在内存区段相对应的代码段,确定所述代码段的实际长度,包括:确定所述空闲内存是否在所述远程转移起点的近程跳转范围内;如果在所述远程转移起点的近程跳转范围内,则从应用程序的可执行文件中获取与所述空闲内存所在内存区段相对应的代码段,确定所述代码段的实际长度。
6、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,确定所述空闲内存是否在所述远程转移起点的近程跳转范围内,包括:获取所述空闲内存所在内存区段的地址范围,以确定所述空闲内存所在内存区段的结束地址;基于所述空闲内存所在内存区段的结束地址、远程转移起点地址,确定所述空闲内存是否在所述远程转移起点的近程跳转范围内。
7、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,还包括:预先从所述当前pc指针中获取远程转移起点地址;基于远程转移起点地址确定所述远程转移起点的近程跳转范围。
8、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,risc处理器通过执行所述绝对跳转指令,从所述目标空闲内存处跳转到远程转移目标地址处执行,包括:risc处理器通过执行所述绝对跳转指令,从所述目标空闲内存处跳转到远程转移目标地址处执行分析代码,以对所述应用程序进行二进制分析。
9、可选地,在根据本专利技术的在精简指令系统中实现远程转移的方法中,在所述远程转移起点插入近程跳转指令,包括:在所述远程转移起点,构建从远程转移起点到目标空闲内存的近程跳转指令;在所述目标空闲内存处插入绝对跳转指令,包括:在所述目标空闲内存处,构建从目标空闲内存到远程转移目标地址的绝对跳转指令。
10、根据本专利技术的一个方面,提供一种在精简指令系统中实现远程转移的装置,驻留在计算设备中,所述计算设备包括risc处理器并适于执行应用程序,所述装置包括:搜索单元,适于响应于将应用程序加载到内存中执行,将当前pc指针作为远程转移起点,从远程转移起点开始,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,其中,所述当前pc指针存放有远程转移起点地址;第一构建单元,适于在所述远程转移起点插入近程跳转指令,以便risc处理器通过执行所述近程跳转指令,从所述远程转移起点跳转到所述目标空闲内存处执行;第二构建单元,适于在所述目标空闲内存处插入绝对跳转指令,以便risc处理器通过执行所述绝对跳转指令,从所述目标空闲内存处跳转到远程转移目标地址处执行。
11、根据本专利技术的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的在精简指令系统中实现远程转移的方法的指令。
12、根据本专利技术的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的在精简指令系统中实现远程转移的方法。
13、根据本专利技术的技术方案,提供了一种在精简指令系统中实现远程转移的方法,其中,在将应用程序加载到内存中执行时,将当前pc指针作为远程转移起点,开始顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的目标空闲内存后,可以在远程转移起点插入近程跳转指令,并在目标空闲内存处插入绝对跳转指令,这样,risc处理器通过执行近程跳转指令,能够从远程转移起点跳转到目标空闲内存处执行绝对跳转指令,通过执行绝对跳转指令,能够从目标空闲内存处跳转到远程转移目标地址处执行。可见,本专利技术只需少量指令便能够在精简指令系统中实现远程转移,易于实施,工作量较小。
14、进一步地,r本文档来自技高网...
【技术保护点】
1.一种在精简指令系统中实现远程转移的方法,在计算设备中执行,所述计算设备包括RISC处理器并适于执行应用程序,所述方法包括:
2.如权利要求1所述的方法,其中,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,包括:
3.如权利要求2所述的方法,其中,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,还包括:
4.如权利要求2或3所述的方法,其中,从应用程序的可执行文件中获取与所述空闲内存所在内存区段相对应的代码段,确定所述代码段的实际长度,包括:
5.如权利要求4所述的方法,其中,确定所述空闲内存是否在所述远程转移起点的近程跳转范围内,包括:
6.如权利要求5所述的方法,其中,还包括:
7.如权利要求1-6中任一项所述的方法,其中,RISC处理器通过执行所述绝对跳转指令,从所述目标空闲内存处跳转到远程转移目标地址处执行,包括:
8.如权利要求1-7中任一项所述的方法,其中,在所述远程转移起点插入近程跳转指令,包括:
10.一种计算设备,包括:
11.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述方法。
...【技术特征摘要】
1.一种在精简指令系统中实现远程转移的方法,在计算设备中执行,所述计算设备包括risc处理器并适于执行应用程序,所述方法包括:
2.如权利要求1所述的方法,其中,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,包括:
3.如权利要求2所述的方法,其中,顺序搜索各内存区段的空闲内存,直至搜索到大于等于预定长度的空闲内存作为目标空闲内存,还包括:
4.如权利要求2或3所述的方法,其中,从应用程序的可执行文件中获取与所述空闲内存所在内存区段相对应的代码段,确定所述代码段的实际长度,包括:
5.如权利要求4所述的方法,其中,确定所述空闲内存是否在所述远程转移起点的近程跳转...
【专利技术属性】
技术研发人员:钟俊,
申请(专利权)人:武汉深之度科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。