本发明涉及程序处理技术领域,尤其涉及一种程序处理方法、装置及设备。
背景技术:
在程序运行过程中,程序往往容易被黑客的钩子(HOOK)代码所拦截,从而执行该HOOK代码实现黑客的对应目的。
为避免程序被HOOK,也就是被插入HOOK代码,目前,可通过对原程序代码进加壳处理,即在原程序代码中设置外部代码,使得其原程序代码不能被查看。虽然加壳可以是对原程序代码起到一定程度的保护,但是,由于该加壳处理还存在对应的脱壳处理,而脱壳处理使得原程序代码存在被修改的风险。
因而,现有的程序处理方法使得原程序代码易被黑客所修改以实现对应的目的,使得程序运行的安全性较差,难以有效保证程序运行过程中的数据安全。
技术实现要素:
本发明提供一种程序处理方法、装置及设备,以避免程序中某些代码块被恶意修改后继续执行而带来的程序运行的安全性较差的问题,有效保证程序运行过程中的数据安全。
本发明提供一种程序处理方法,包括:
判断程序的第一代码块是否被执行;
若所述第一代码块被执行,则确定所述程序未被修改,并继续执行所述程序的第二代码块;其中,所述第二代码块为所述程序中所述第一代码块的后一代码块。
本发明还提供一种程序处理装置,包括:
判断模块,用于判断程序的第一代码块是否被执行;
第一确定模块,用于若所述第一代码块被执行,则确定所述程序未被修改;
执行模块,用于继续执行所述程序的所述第二代码块;其中,所述第二代码块为所述程序中所述第一代码块的后一代码块。
本发明还提供一种程序处理设备,包括:存储器和处理器;所述存储器和所述处理器连接;
所述存储器用于存储程序指令;
所述处理器,用于调用所述存储器存储的所述程序指令,用以执行上述程序处理方法。
本发明提供的程序处理方法、装置及设备,通过判断程序的第一代码块是否被执行,若该第一代码块被执行,则确定该程序未被修改,并继续执行该程序的第一代码块的后一代码块的第二代码块。该程序处理方法,可在程序运行过程中,及时准确确定当前程序是否被修改,仅在确定程序未被修改的情况下继续后续程序代码,可有效避免程序被恶意修改后继续执行程序代码带来的程序运行的安全性较差的问题,有效保证程序运行过程中的数据安全。
附图说明
图1为本发明提供的程序处理方法的流程图一;
图2为本发明提供的程序处理方法的流程图二;
图3为本发明提供的程序处理方法的流程图三;
图4为本发明提供的程序处理方法所针对的程序代码块的一种示意图;
图5为本发明提供的程序处理方法的流程图四;
图6为本发明提供的程序处理方法的流程图五;
图7为本发明提供的一种程序处理装置的结构示意图;
图8为本发明提供的另一种程序处理装置的结构示意图;
图9为本发明提供的一种程序处理设备的结构示意图。
具体实施方式
本发明下述提供的各程序处理方法,可由程序处理装置执行,该程序处理装置可由软件和/或硬件的方式集成在程序处理设备中,该程序处理设备可以为计算机设备、智能硬件设备、智能手机、智能手环等可执行程序代码的电子设备。
通过执行本发明下述提供的各程序处理方法,可在程序运行过程中,及时准确当前程序是否被修改,并在程序未被修改的情况下继续程序代码,实现对应的程序目的;而在确定该程序被修改的情况下,及时停止程序的代码的继续执行,有效避免了程序被恶意修改后继续执行程序代码带来的程序运行的安全性较差的问题,有效保证程序运行过程中的数据安全。
图1为本发明提供的程序处理方法的流程图一。如图1所示,该程序处理方法可包括如下:
S101、判断程序的第一代码块是否被执行。
具体地,该S101中可以是在对该程序的第二代码块进行执行之前,也就是确定该程序的第一代码块是否被执行。其中,该第一代码块可以为该程序的预设代码块,如预设的重要代码块。第二代码块为该程序中该第一代码块的后一代码块。
S102、若该第一代码块被执行,则确定该程序未被修改,并继续执行该程序的第二代码块。
由于程序被HOOK后,通常会绕过程序中部分原有代码,而执行被插入的HOOK代码,因而,该方法中可以通过判断程序的第一代码块是否被执行,根据该判断结果确定是否该程序被HOOK,从而确定该程序是否被修改。
因而,若该第一代码块被执行,则可确定该程序未被HOOK,即未被插入HOOK代码,因而,可确定该程序未被修改。反之,若该第一代码块未被执行,则可确定该程序中被HOOK,即被插入HOOK代码,由于该插入的HOOK代码的执行,使得该第一代码块未被执行,因而可确定该程序已被修改。
本发明提供的程序处理方法,通过判断程序的第一代码块是否被执行,若该第一代码块被执行,则确定该程序未被修改,并继续执行该程序的第一代码块的后一代码块的第二代码块。该程序处理方法,可在程序运行过程中,及时准确确定当前程序是否被修改,仅在确定程序未被修改的情况下继续后续程序代码,可有效避免程序被恶意修改后继续执行程序代码带来的程序运行的安全性较差的问题,有效保证程序运行过程中的数据安全。
同时,在确定程序未被修改的情况下继续后续程序代码,还可实现该程序对应的目的。
可选的,在如上所述的程序处理方法的基础上,该方法还可包括:
若该第一代码块未被执行,则确定该程序被修改,并发出提示信息,以指示该程序被修改;其中,该第二代码块为该程序中该第一代码块的后一代码块。
具体地,若该第一代码块未被执行,则该方法还需停止继续执行该第二代码块。
可选的,本发明还可提供一种程序处理方法。图2为本发明提供的程序处理方法的流程图二。如图2所示,如上所述的S101中判断程序的第一代码块是否被执行,可以包括:
S201、判断该第一代码块对应的变量的值是否被修改。
具体地,该第一代码块对应的变量可以是预先设置在该第一代码块中的变量(variable)参数。该第一代码块对应的变量为该第一代码块的执行所关联的变量。也就是,只要执行该第一代码块,该第一代码块对应的变量的值便会发生变化,即被修改。只要未执行该第一代码块,该第一代码块对应的变量的值便不会发生变化,即不会被修改。
该S201中是通过比较该第一代码块对应的变量的当前值,与,预设值是否一致,判断该第一代码块对应的变量的值是否被修改。若一致,则可确定该变量的值被修改;反之,若不一致,则可确定该变量的值未被修改。
S202、若该变量的值被修改,则确定该第一代码块被执行。
S203、若该变量的值未被修改,则确定该第一代码块未被执行。
可替代地,本发明还可提供一种程序处理方法。图3为本发明提供的程序处理方法的流程图三。如图3所示,如上所述的S101中判断程序的第一代码块是否被执行,可以包括:
S301、判断当前的状态流程码与预设的状态流程码是否一致。
具体地,该当前的状态流程码中按照代码块的执行顺序,依次记录了已执行的各个代码块的标识等信息。该预设的状态流程码中包括该程序中该第二代码块之前需依次执行的各代码块的标识等信息。
S302、若该当前的状态流程码与该预设的状态流程码一致,则确定该第一代码块被执行。
如该当前的状态流程码与该预设的状态流程码一致,则已执行的各个代码块即为该程序中该第二代码块之前需依次执行的各代码块,因而,可确定该第一代码块已被执行。
S303、若该当前的状态流程码与该预设的状态流程码不一致,则确定该第一代码块未被执行。
若如该当前的状态流程码与该预设的状态流程码不一致,则已执行的各个代码块中包括了该程序中该第二代码块之前需依次执行的各代码块之外的其他代码块,如被插入的HOOK代码块,因而,可确定该第一代码块实际未被执行。
本发明上述提供的各程序处理方法,可通过提供多种确定第一代码块是否被执行的方案,可在程序运行过程中,更加及时准确确定当前程序是否被修改,继而有效避免程序被恶意修改后继续执行程序代码带来的程序运行的安全性较差的问题,有效保证程序运行过程中的数据安全。
本发明还可提供一种程序处理方法。图4为本发明提供的程序处理方法所针对的程序代码块的一种示意图。如图4所示,若该程序中包括:代码块A、代码块B、代码块C和代码块D,该程序的执行顺序应该为代码块A->代码块B->代码块C->代码块D。若该程序中被插入HOOK代码块,则该程序的执行顺序可变为代码块A->HOOK代码块->代码块C->代码块D。
为避免程序被插入HOOK代码块后继续执行带来的程序运行安全问题,在一种实例中,可在程序中的预设重要代码块,如代码块B中增加变量修改操作指令,如该代码块B被执行,则便会执行该变量修改操作指令,使得该代码块B对应的变量的值发生变化。如下结合该实例进行举例说明。图5为本发明提供的程序处理方法的流程图四。如图5所示,该方法可包括:
S501、判断代码块B对应的变量的值是否被修改。
S502、若该代码块B对应的变量的值被修改,则确定代码块B被执行。
S503、确定该程序未被修改,并继续执行代码块C和代码块D。
S504、若该代码块B对应的变量的值未被修改,则确定代码块B未被执行。
若该代码块B对应的变量的值未被修改,则可确定在此之前由于执行了被插入的HOOK代码块,使得代码块B未被执行。
S505、确定该程序被修改,并发出提示信息,以指示该程序被修改。
为避免程序被插入HOOK代码块后继续执行带来的程序运行安全问题,在另外一种实例中,可在每个代码块被执行后,便记录其对应的状态流程码。不同代码块被执行后,状态流程码便会不同,因此,如HOOK代码块被执行,其状态流程码,便会与预设的状态流程码不同。图6为本发明提供的程序处理方法的流程图五。如图6所示,该方法可包括:
S601、判断当前状态流程码与预设的状态流程码是否一致。
执行代码块C之前,该当前状态流程码可以为代码块A->代码块B,或者,代码块A->HOOK代码块。该预设的状态流程码可以为代码块A->代码块B。
S602、若该当前状态流程码与该预设的状态流程码一致,则确定代码块B被执行。
若该当前状态流程码为代码块A->代码块B,则该当前状态流程码与该预设的状态流程码一致,可确定代码块B被执行。
S603、确定该程序未被修改,并继续执行代码块C和代码块D。
S604、若该当前状态流程码与该预设的状态流程码不一致,则确定代码块B未被执行。
若该当前状态流程码为代码块A->HOOK代码块,则该当前状态流程码与该预设的状态流程码不一致,可确定代码块B未被执行,而HOOK代码块被执行。
S605、确定该程序被修改,并发出提示信息,以指示该程序被修改。
本发明提供的上述各程序处理方法,可仅在确定程序未被修改的情况下继续后续程序代码,而在程序被修改的情况下,发出指示该程序被修改的提示信息,可有效避免程序被恶意修改后继续执行程序代码带来的程序运行的安全性较差的问题,有效保证程序运行过程中的数据安全。
本发明提供一种程序处理装置。图7为本发明提供的一种程序处理装置的结构示意图。如图7所示,该程序处理装置700可包括:
判断模块701,用于在执行程序的第二代码块之前,判断程序的第一代码块是否被执行。
第一确定模块702,用于若该第一代码块被执行,则确定该程序未被修改。
执行模块703,用于继续执行该程序的该第二代码块;其中,该第二代码块为该程序中该第一代码块的后一代码块。
可选的,图8为本发明提供的另一种程序处理装置的结构示意图。如图8所示,该程序处理装置700还可包括:
第二确定模块704,用于若该第一代码块未被执行,则确定该程序被修改。
发送模块705,用于发出提示信息,以指示该程序被修改。
可选的,判断模块701,具体用于判断该第一代码块对应的预设变量的值是否被修改;若该预设变量的值被修改,则确定该第一代码块被执行;若该预设变量的值未被修改,则确定该第一代码块未被执行。
可选的,判断模块701,具体用于判断当前的状态流程码与预设的状态流程码是否一致;若该当前的状态流程码与该预设的状态流程码一致,则确定该第一代码块被执行;若该当前的状态流程码与该预设的状态流程码不一致,则确定该第一代码块未被执行。
本发明提供的程序处理装置可执行上述图1至图6中任一项所述的程序处理方法,其具体实现过程及有益效果可参见上述,在此不再赘述。
本发明还提供一种程序处理设备。图9为本发明提供的一种程序处理设备的结构示意图。如图9所述,该程序处理设备900可包括:存储器901和处理器902;存储器901和处理器902连接。
存储器901用于存储程序指令。
处理器902,用于调用存储器901存储的该程序指令,用以执行上述图1至图6中任一项所述的程序处理方法。
本发明提供的程序处理设备可执行上述图1至图6中任一项所述的程序处理方法,其具体实现过程及有益效果可参见上述,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。