一种获得源代码中信息的方法、装置及系统的制作方法

文档序号:9922229阅读:407来源:国知局
一种获得源代码中信息的方法、装置及系统的制作方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种获得源代码中信息的方法、装置及系统。
【背景技术】
[0002] 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功 能上等价,但是难于阅读和理解的形式的行为。例如,编译前的代码中存在名称为get_ password的函数,该函数的功能是获取某个应用的密码,那么,基于用户信息的安全性考 虑,在程序发布前可通过混淆装置使用混淆算法对其进行代码混淆,例如,混淆后该函数的 名称为gvmde,进而将混淆后的代码进行编译,最后向用户发布编译后得到的程序,该编译 后得到的程序是混淆后的代码所对应的二进制程序。
[0003] 而用户可以根据调试装置可以对已发布的程序进行调试,例如对已发布的程序按 照用户的需求进行修改,或者确定已发布的程序中存在的漏洞。然而,在调试过程中,编译 后的程序中只携带有混淆后的代码的信息,而混淆后的代码的可读性很差,例如,调试人员 不能直接从字面上确定gvmde的含义,现有的调试方法的效率较低。

【发明内容】

[0004] 本发明的实施例提供一种获得源代码中信息的方法、装置及系统,提高了代码调 试效率,使得对代码的漏洞修补更加方便。
[0005] 为达到上述目的,本发明的实施例采用如下技术方案:
[0006] 第一方面,本发明的实施例提供一种获得源代码中信息的方法,包括:调试装置获 取混淆代码中的第一字符串;该调试装置从该混淆代码中提取目标混淆算法的标识,该目 标混淆算法用于将源代码中的第二字符串混淆为该第一字符串;该调试装置根据该目标混 淆算法的标识,在算法库中确定该与该目标混淆算法的标识对应的解密算法,该算法库用 于指示混淆算法的标识与解密算法之间的对应关系;该调试装置采用与目标混淆算法的标 识对应的解密算法,对该第一字符串进行解密,以得到该源代码中的第二字符串。
[0007] 可以看出,通过从算法库中获取混淆第一字符串时使用的混淆算法的逆算法,即 解密算法,可使调试装置在调试过程中能够确定出混淆代码中的字符串所对应的源代码, 从而可明确混淆代码中字符串的技术含义,并且,可直接获得混淆前的源代码中与第一字 符串对应的第二字符串,这样,当混淆代码中的第一字符串出现漏洞时,该第二字符串即为 源代码中出现漏洞的位置,因此,调试装置便可以准确快速的定位出源代码中出现漏洞的 位置,从而提高了代码调试效率。
[0008] 在一种可能的设计中,该算法库中建立有混淆算法的标识、解密算法的名称与算 法路径之间的对应关系,该算法路径用于指示该混淆算法的标识所对应的解密算法的存储 位置。
[0009] 这样一来,上述调试装置根据该目标混淆算法的标识,在算法库中确定与该目标 混淆算法的标识对应的解密算法,具体包括:调试装置根据该目标混淆算法的标识,确定与 该目标混淆算法的标识对应的算法路径;调试装置通过该算法路径以及与该目标混淆算法 的标识对应的解密算法的名称,获取与该目标混淆算法的标识对应的解密算法。
[0010] 也就是说,算法库中无需直接存储有与混淆算法的标识对应的解密算法,而是由 该混淆算法的标识对应的算法路径指示该解密算法,从而减少维护算法库时的复杂度,同 时可增加算法库内解密算法的保密性。
[0011] 在一种可能的设计中,该混淆算法的标识包括用户自定义的混淆算法的标识,该 解密算法包括该用户自定义的混淆算法的逆算法,其中,该算法库包括该用户自定义的混 淆算法的标识与该用户自定义的混淆算法的逆算法之间的对应关系。
[0012] 这样一来,由于用户可以在算法库中注册自定义的自定义解密算法,而在算法库 中只需保存自定义解密算法的自定义标识,以便于混淆装置调用该自定义解密算法时,根 据该自定义解密算法的自定义标识查询对应的算法路径,并在该算法路径所指示的存储位 置中确定与该自定义解密算法的名称对应的自定义解密算法,而算法库中并不需要保存该 自定义解密算法,从而增加了混淆算法的安全性,同时使算法库中的混淆算法多样化。
[0013] 在一种可能的设计中,该调试装置从该混淆代码中提取该目标混淆算法的标识, 包括:该调试装置从该混淆代码的指定全局变量中提取该目标混淆算法的标识。
[0014] 在一种可能的设计中,该调试装置采用与目标混淆算法的标识对应的解密算法, 对该第一字符串进行解密,得到第二字符串,包括:该调试装置通过预置的钩子函数中的钩 子获取该解密算法;该调试装置通过该钩子函数调用该解密算法,对该第一字符串进行解 密,得到该第二字符串。
[0015] 第二方面,本发明实施例提供一种混淆代码的方法,包括:混淆装置确定源代码中 需要进行混淆的第二字符串;该混淆装置从算法库中选择用于混淆该第二字符串的目标混 淆算法,该算法库用于指示混淆算法的标识、混淆算法以及解密算法之间的对应关系;该混 淆装置使用该目标混淆算法对该第二字符串进行混淆,以得到第一字符串;该混淆装置将 该目标混淆算法的标识记录到混淆代码中,以便于调试装置根据该目标混淆算法的标识对 应的解密算法通过所述第一字符串获得该第二字符串,其中,该混淆代码为根据该算法库 中的混淆算法对该源代码进行混淆后得到的代码,该混淆代码包括该第一字符串,该目标 混淆算法的标识对应的解密算法用于解密该第一字符串。
[0016] 可以看出,本方案在代码混淆过程中,通过使用算法库的目标混淆算法对第二字 符串进行混淆,以得到第一字符串,并将目标混淆算法的标识记录在混淆代码中,以使得后 续调试装置在调试过程中能够确定出混淆代码中的字符串所对应的源代码,例如,可根据 目标混淆算法的标识从该算法库中确定解密第一字符串的解密算法,进而直接确定出源代 码中与第一字符串对应的第二字符串,这样,而当混淆代码中的第一字符串出现漏洞时,便 可以准确快速的定位出源代码中出现漏洞的位置,以提高代码调试效率。
[0017] 在一种可能的设计中,该算法库中建立有混淆算法的标识、混淆算法的名称、解密 算法的名称以及算法路径之间的对应关系,该算法路径用于指示该混淆算法的标识所对应 的混淆算法的存储位置,该存储位置可位于本地存储设备,也可以位于处本地存储设备外 的其他存储设备或者物理节点上;其中,该混淆装置从算法库中选择用于混淆该第二字符 串的目标混淆算法,包括:该混淆装置从该算法库中确定混淆该第二字符串需使用的目标 混淆算法的标识;该混淆装置根据该目标混淆算法的标识,从该算法库中确定该目标混淆 算法的标识对应的算法路径;该混淆装置通过该算法路径以及与该目标混淆算法的标识对 应的目标混淆算法的名称,确定该第二字符串的目标混淆算法。
[0018] 在一种可能的设计中,该目标混淆算法包括用户自定义的混淆算法,该目标混淆 算法的标识包括用该户自定义的混淆算法的标识,该解密算法包括该用户自定义的混淆算 法的逆算法,其中,该算法库包括用户自定义的混淆算法、该用户自定义的混淆算法的标 识、以及该用户自定义的混淆算法的逆算法之间的对应关系。
[0019] 这样一来,由于用户可以在算法库中注册自定义的自定义混淆算法,而在算法库 中只需保存自定义混淆算法的自定义标识,以便于混淆装置调用该自定义混淆算法时,根 据该自定义混淆算法的自定义标识查询对应的算法路径,并在该算法路径所指示的存储位 置中确定与该自定义混淆算法的名称对应的自定义混淆算法,而算法库中并不需要保存该 自定义混淆算法,从而增加了混淆算法的安全性,同时使算法库中的混淆算法多样化。
[0020] 在一种可能的设计中,该混淆装置使用该目标混淆算法对该第二字符串进行混 淆,以得到第一字符串,包括:该混淆装置通过预置的钩子函数的钩子获取该目标混淆算 法;该混淆装置通过该钩子函数调用该目标混淆算法,以对该第二字符串进行混淆,得到该 第一字符串。
[0021 ]在一种可能的设计中,该混淆装置将该目标混淆算法的标识记录到混淆代码中, 包括:该混淆装置将该目标混淆算法的标识保存至该混淆代码的指定全局变量中。
[0022] 第三方面,本发明实施例提供一种调试装置,包括:获取单元,用于获取混淆代码 中的第一字符串;从该混淆代码中提取目标混淆算法的标识,该目标混淆算法用于将源代 码中的第二字符串混淆为该第一字符串;确定单元,用于根据该目标混淆算法的标识,在算 法库中确定该与该目标混淆算法的标识对应的解密算法,该算法库用于指示混淆算法的标 识与解密算法之间的对应关系;解密单元,用于采用与目标混淆算法的标识对应的解密算 法,对该第一字符串进行解密,以得到该源代码中的第二字符串。
[0023] 在一种可能的设计中,该算法库中建立有混淆算法的标识、解密算法的名称与算 法路径之间的对应关系,该算法路径用于指示该目标混淆算法的标识所对应的解密算法的 存储位置;其中,该确定单元,具体用于根据该目标混淆算法的标识,确定与该目标混淆算 法的标识对应的算法路径;通过该算法路径以及与该目标混淆算法的标识对应的解密算法 的名称,获取与该目标混淆算法的标识对应的解密算法。
[0024] 在一种可能的设计中,该获取单元,具体用于从该混淆代码的指定全局变量中提 取该目标混淆算法的标识。
[0025] 在一种可能的设计中,所述解密单元,具体用于通过预置的钩子函数中的钩子获 取所述解密算法;通过所述钩子函数调用所述解密算法,对所述第一字符串进行解密,得到 所述第二字符串。
[0026] 第四方面,本发明实施例提供一种混淆装置,包括:确定单元,用于确定源代码中 需要进行混淆的第二字符串;选择单元,用于从算法库中选择用于混淆该第二字符串的目 标混淆算法,该算法库用于指示混淆算法的标识、混淆算法以及解密算法之间的对应关系; 混淆单元,用于使用该目标混淆算法对该第二字符串进行混淆,以得到第一字符串;记录单 元,用于将该目标混淆算法的标识记录到混淆代码中,以便于调试装置根据该目标混淆算 法的标识对应的解密算法通过所述第一字符串获得该第二字符串,其中,该混淆代码为根 据该算法库中的混淆算法对该源代码进行混淆后得到的代码,该混淆代码包括该第一字符 串,该目标混淆算法的标识对应的解密算法用于解密该第一字符串。
[0027] 在一种可能的设计中,该算法库中建立有混淆算法的标识、混淆算法的名称、解密 算法的名称以及算法路径之间的对应关系,该算法路径用于指示该混淆算法的标识所对应 的混淆算法的存储位置;其中,该选择单元,具体用于从该算法库中确定混淆该第二字符串 需使用的目标混淆算法的标识;根据该目标混淆算法的标识,从该算法库中确定该目标混 淆算法的标识对应的算法路径;通过该算法路径以及与该目标混淆算法的标识对应的目标 混淆算法的名称,确定该第二字符串的目标混淆算法。
[0028] 在一种可能的设计中,该混淆单元,用于通过预置的钩子函数的钩子获取该目标 混淆算法;通过该钩子函数调用该目标混淆算法,以对该第二字符串进行混淆,得到该第一 字符串。
[0029] 在一种可能的设计中,该记录单元,用于将该目标混淆算法的标识保存至该混淆 代码的指定全局变量中。
[0030] 第五方面,本发明实施例提供一种调试装置,包括:处理器、存储器、总线和通信接 口;该存储器用于存储计算机执行指令,该处理器与该
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1