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

技术编号:13454530 阅读:78 留言:0更新日期:2016-08-02 16:24
本发明专利技术的实施例提供一种获得源代码中信息的方法、装置及系统,涉及通信技术领域,可使调试装置对混淆前的源代码中出现漏洞的字符串直接进行定位,提高代码调试效率。该方法包括:调试装置获取混淆代码中的第一字符串;该调试装置从该混淆代码中提取目标混淆算法的标识,该目标混淆算法用于将源代码中的第二字符串混淆为该第一字符串;该调试装置根据该目标混淆算法的标识,在算法库中确定该与该目标混淆算法的标识对应的解密算法,该算法库用于指示混淆算法的标识与解密算法之间的对应关系;该调试装置采用与目标混淆算法的标识对应的解密算法,对该第一字符串进行解密,以得到该源代码中的第二字符串。

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种获得源代码中信息的方法、装置及系统
技术介绍
代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功 能上等价,但是难于阅读和理解的形式的行为。例如,编译前的代码中存在名称为get_ password的函数,该函数的功能是获取某个应用的密码,那么,基于用户信息的安全性考 虑,在程序发布前可通过混淆装置使用混淆算法对其进行代码混淆,例如,混淆后该函数的 名称为gvmde,进而将混淆后的代码进行编译,最后向用户发布编译后得到的程序,该编译 后得到的程序是混淆后的代码所对应的二进制程序。 而用户可以根据调试装置可以对已发布的程序进行调试,例如对已发布的程序按 照用户的需求进行修改,或者确定已发布的程序中存在的漏洞。然而,在调试过程中,编译 后的程序中只携带有混淆后的代码的信息,而混淆后的代码的可读性很差,例如,调试人员 不能直接从字面上确定gvmde的含义,现有的调试方法的效率较低。
技术实现思路
本专利技术的实施例提供一种获得源代码中信息的方法、装置及系统,提高了代码调 试效率,使得对代码的漏洞修补更加方便。 为达到上述目的,本专利技术的实施例采用如下技术方案: 第一方面,本专利技术的实施例提供一种获得源代码中信息的方法,包括:调试装置获 取混淆代码中的第一字符串;该调试装置从该混淆代码中提取目标混淆算法的标识,该目 标混淆算法用于将源代码中的第二字符串混淆为该第一字符串;该调试装置根据该目标混 淆算法的标识,在算法库中确定该与该目标混淆算法的标识对应的解密算法,该算法库用 于指示混淆算法的标识与解密算法之间的对应关系;该调试装置采用与目标混淆算法的标 识对应的解密算法,对该第一字符串进行解密,以得到该源代码中的第二字符串。 可以看出,通过从算法库中获取混淆第一字符串时使用的混淆算法的逆算法,即 解密算法,可使调试装置在调试过程中能够确定出混淆代码中的字符串所对应的源代码, 从而可明确混淆代码中字符串的技术含义,并且,可直接获得混淆前的源代码中与第一字 符串对应的第二字符串,这样,当混淆代码中的第一字符串出现漏洞时,该第二字符串即为 源代码中出现漏洞的位置,因此,调试装置便可以准确快速的定位出源代码中出现漏洞的 位置,从而提高了代码调试效率。 在一种可能的设计中,该算法库中建立有混淆算法的标识、解密算法的名称与算 法路径之间的对应关系,该算法路径用于指示该混淆算法的标识所对应的解密算法的存储 位置。 这样一来,上述调试装置根据该目标混淆算法的标识,在算法库中确定与该目标 混淆算法的标识对应的解密算法,具体包括:调试装置根据该目标混淆算法的标识,确定与 该目标混淆算法的标识对应的算法路径;调试装置通过该算法路径以及与该目标混淆算法 的标识对应的解密算法的名称,获取与该目标混淆算法的标识对应的解密算法。 也就是说,算法库中无需直接存储有与混淆算法的标识对应的解密算法,而是由 该混淆算法的标识对应的算法路径指示该解密算法,从而减少维护算法库时的复杂度,同 时可增加算法库内解密算法的保密性。 在一种可能的设计中,该混淆算法的标识包括用户自定义的混淆算法的标识,该 解密算法包括该用户自定义的混淆算法的逆算法,其中,该算法库包括该用户自定义的混 淆算法的标识与该用户自定义的混淆算法的逆算法之间的对应关系。 这样一来,由于用户可以在算法库中注册自定义的自定义解密算法,而在算法库 中只需保存自定义解密算法的自定义标识,以便于混淆装置调用该自定义解密算法时,根 据该自定义解密算法的自定义标识查询对应的算法路径,并在该算法路径所指示的存储位 置中确定与该自定义解密算法的名称对应的自定义解密算法,而算法库中并不需要保存该 自定义解密算法,从而增加了混淆算法的安全性,同时使算法库中的混淆算法多样化。 在一种可能的设计中,该调试装置从该混淆代码中提取该目标混淆算法的标识, 包括:该调试装置从该混淆代码的指定全局变量中提取该目标混淆算法的标识。 在一种可能的设计中,该调试装置采用与目标混淆算法的标识对应的解密算法, 对该第一字符串进行解密,得到第二字符串,包括:该调试装置通过预置的钩子函数中的钩 子获取该解密算法;该调试装置通过该钩子函数调用该解密算法,对该第一字符串进行解 密,得到该第二字符串。 第二方面,本专利技术实施例提供一种混淆代码的方法,包括:混淆装置确定源代码中 需要进行混淆的第二字符串;该混淆装置从算法库中选择用于混淆该第二字符串的目标混 淆算法,该算法库用于指示混淆算法的标识、混淆算法以及解密算法之间的对应关系;该混 淆装置使用该目标混淆算法对该第二字符串进行混淆,以得到第一字符串;该混淆装置将 该目标混淆算法的标识记录到混淆代码中,以便于调试装置根据该目标混淆算法的标识对 应的解密算法通过所述第一字符串获得该第二字符串,其中,该混淆代码为根据该算法库 中的混淆算法对该源代码进行混淆后得到的代码,该混淆代码包括该第一字符串,该目标 混淆算法的标识对应的解密算法用于解密该第一字符串。 可以看出,本方案在代码混淆过程中,通过使用算法库的目标混淆算法对第二字 符串进行混淆,以得到第一字符串,并将目标混淆算法的标识记录在混淆代码中,以使得后 续调试装置在调试过程中能够确定出混淆代码中的字符串所对应的源代码,例如,可根据 目标混淆算法的标识从该算法库中确定解密第一字符串的解密算法,进而直接确定出源代 码中与第一字符串对应的第二字符串,这样,而当混淆代码中的第一字符串出现漏洞时,便 可以准确快速的定位出源代码中出现漏洞的位置,以提高代码调试效率。 在一种可能的设计中,该算法库中建立有混淆算法的标识、混淆算法的名称、解密 算法的名称以及算法路径之间的对应关系,该算法路径用于指示该混淆算法的标识所对应 的混淆算法的存储位置,该存储位置可位于本地存储设备,也可以位于处本地存储设备外 的其他存储设备或者物理节点上;其中,该混淆装置从算法库中选择用于混淆该第二字符 串的目标混淆算法,包括:该混淆装置从该算法库中确定混淆该第二字符串需使用的目标 混淆算法的标识;该混淆装置根据该目标混淆算法的标识,从该算法库中确定该目标混淆 算法的标识对应的算法路径;该混淆装置通过该算法路径以及与该目标混淆算法的标识对 应的目标混淆算法的名称,确定该第二字符串的目标混淆算法。 在一种可能的设计中,该目标混淆算法包括用户自定义的混淆算法,该目标混淆 算法的标识包括用该户自定义的混淆算法的标识,该解密算法包括该用户自定义的混淆算 法的逆算法,其中,该算法库包括用户自定义的混淆算法、该用户自定义的混淆算法的标 识、以及该用户自定义的混淆算法的逆算法之间的对应关系。 这样一来,由于用户可以在算法库中注册自定义的自定义混淆算法,而在算法库 中只需保存自定义混淆算法的自定义标识,以便于混淆装置调用该自定义混淆算法时,根 据该自定义混淆算法的自定义标识查询对应的算法路径,并在该算法路径所指示的存储位 置中确定与该自定义混淆算法的名称对应的自定义混淆算法,而算法库中并不需要保存该 自定义混淆算法,从而增加了混淆算法的安全性,同时使算法库中的混淆算法多样化。 在一种可能的设计中,该混淆装置使本文档来自技高网...

【技术保护点】
一种获得源代码中信息的方法,其特征在于,包括:调试装置获取混淆代码中的第一字符串;所述调试装置从所述混淆代码中提取目标混淆算法的标识,所述目标混淆算法用于将源代码中的第二字符串混淆为所述第一字符串;所述调试装置根据所述目标混淆算法的标识,在算法库中确定与所述目标混淆算法的标识对应的解密算法,所述算法库用于指示混淆算法的标识与解密算法之间的对应关系;所述调试装置采用与所述目标混淆算法的标识对应的解密算法,对所述第一字符串进行解密,以得到所述源代码中的第二字符串。

【技术特征摘要】

【专利技术属性】
技术研发人员:周巍
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1