本发明涉及应用开发领域,特别涉及一种函数入口确定方法、计算设备及存储介质。
背景技术:
1、随着计算机技术的发展,出现了越来越多不同的指令集架构。每一种处理器采用的指令集各不相同,各有其特点和核心的应用领域。目前开发的各种应用通过不同的工具链实现了跨指令集架构的兼容性。但是在二进制层面,各架构的应用各不相同,应用程序的安全性、有效性、执行效率等关键问题在各架构上表现不同。因此,需要从二进制指令层面分析,才能找到各种应用性能表现为什么不同的原因。在进行二进制分析时,确定二进制指令逻辑序列执行时候的函数入口是个关键问题,只有找到函数入口,才能为后续分析函数运行情况等提供依据。
2、现有技术中确定函数入口时往往通过函数代码正向分析调用函数的代码,从而确定函数入口。但这种方式需要获取应用源代码,若没有应用源代码就无法对函数入口进行确定。
3、为此,需要一种新的函数入口确定方法。
技术实现思路
1、为此,本发明提供一种函数入口确定方法,以力图解决或者至少缓解上面存在的问题。
2、根据本发明的一个方面,提供一种函数入口确定方法,适于在计算设备中运行,方法包括:判断运行应用时所执行指令序列中的第一指令是否为对被调函数基址指针寄存器的减法指令,指令序列中第一指令的前序指令依次为第二指令、第三指令和第四指令;若是,则判断第二指令是否为从调用函数的栈指针寄存器转移到被调函数基地址寄存器的转移指令;若是,则判断第三指令是否为将调用函数基地址寄存器的指针存储到调用函数栈指针寄存器中指针所指向地址的压栈指令;若是,则确定第四指令为被调函数的函数入口。
3、可选地,在根据本发明的方法中,还包括:若第一指令不是对被调函数基址指针寄存器的减法指令,则判断第二指令是否为对被调函数基址指针寄存器的减法指令。
4、可选地,在根据本发明的方法中,包括:若第二指令不是从调用函数的栈指针寄存器转移到被调函数基地址寄存器的转移指令;则判断第三指令是否为对被调函数基址指针寄存器的减法指令。
5、可选地,在根据本发明的方法中,还包括:若第三指令不是将调用函数基地址寄存器的指针存储到调用函数栈指针寄存器中指针所指向地址的压栈指令,则判断第四指令是否为对被调函数基址指针寄存器的减法指令。
6、可选地,在根据本发明的方法中,还包括:获取指令寄存器当前所存储的第一指令;将第一指令作为搜索指针指向的指令,以便根据搜索指针判断第一指令是否为对被调函数基址指针寄存器的减法指令。
7、可选地,在根据本发明的方法中,还包括:在每次获取到指令序列中待判断的下一条指令时,将待判断的下一条指令作为搜索指针指向的指令,以便对搜索指针指向的指令判断指令类型。
8、可选地,在根据本发明的方法中,还包括:在每次判断指令是否为对被调函数基址指针寄存器的减法指令之前,判断待判断的指令与第一指令之间的距离是否超过预先设置的最大搜索范围;若超过预先设置的最大搜索范围,则停止判断该条指令。
9、可选地,在根据本发明的方法中,从调用函数的栈指针寄存器转移到被调函数基地址寄存器的转移指令包括:将调用函数的栈指针寄存器中存储的指针存储到被调函数基地址寄存器。
10、根据本发明的另一方面,提供了一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中,一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据本发明的函数入口确定方法的指令。
11、根据本发明的再一方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,该指令当由计算设备执行时,使得计算设备执行根据本发明的函数入口确定方法。
12、本发明中的函数入口确定方法,适于在计算设备中执行,方法包括:判断运行应用时所执行指令序列中的第一指令是否为对被调函数基址指针寄存器的减法指令,指令序列中第一指令的前序指令依次为第二指令、第三指令和第四指令;若是,则判断第二指令是否为从调用函数的栈指针寄存器转移到被调函数基地址寄存器的转移指令;若是,则判断第三指令是否为将调用函数基地址寄存器的指针存储到调用函数栈指针寄存器中指针所指向地址的压栈指令;若是,则确定第四指令为被调函数的函数入口。本发明通过逆向对指令序列中的指令进行分析,分别判断连续的三条指令是否分别为减法指令、转移指令和压栈指令,从而确定被调函数的函数入口。
1.一种函数入口确定方法,适于在计算设备中运行,所述方法包括:
2.如权利要求1所述的方法,其中,所述方法还包括:
3.如权利要求1或2所述的方法,其中,所述方法包括:
4.如权利要求1-3中任一项所述的方法,其中,所述方法还包括:
5.如权利要求1所述的方法,其中,所述方法还包括:
6.如权利要求5所述的方法,其中,所述方法还包括:
7.如权利要求2-4中任一项所述的方法,其中,所述方法还包括:
8.如权利要求1-7中任一项所述的方法,其中,所述从调用函数的栈指针寄存器转移到被调函数基地址寄存器的转移指令包括:
9.一种计算设备,包括:
10.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1-8中任一项所述的方法。
