符号混淆方法及装置制造方法及图纸

技术编号:18712376 阅读:26 留言:0更新日期:2018-08-21 22:54
本发明专利技术实施例提供一种符号混淆方法及装置,用于计算机安全领域,所述方法包括:基于源代码文件对源代码进行编译,获取中间文件;获取所述中间文件的类型构造信息;基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号。本发明专利技术实施例通过对中间文件中的符号进行混淆处理,避免直接对源代码文件中的符号进行混淆理,无需人工提取符号,也无需修改源代码,对源代码文件无侵入性,支持对编译阶段自动添加的符号的混淆。

Symbol obfuscation method and device

The embodiment of the invention provides a symbol obfuscation method and a device for the field of computer security. The method includes: compiling the source code based on the source code file to obtain the intermediate file; obtaining the type construction information of the intermediate file; and basing on the type construction information and the first preset replacement principle, compiling the source code to obtain the intermediate file. The first symbol in the middle file is automatically replaced by the second symbol. By confusing the symbols in the intermediate file, the embodiment of the invention avoids confusing the symbols in the source code file directly, does not need to extract the symbols manually, does not need to modify the source code, does not invade the source code file, and supports confusing the symbols added automatically at the compilation stage.

【技术实现步骤摘要】
符号混淆方法及装置
本专利技术涉及计算机安全领域,具体而言,涉及一种符号混淆方法及装置。
技术介绍
Objective-C是一种面向对象的高级动态语言,开发者在编写OC程序时,会在代码中定义一些类(Class),方法(Selector),属性(property)等,这些符号往往具有极强的语义性,而经过编译之后这些符号并不会被消除,而是转化为一定格式的结构化数据,保存在二进制文件中,最终在运行该程序的时候,由OC运行时环境进行解析。由于这些符号具有语义性(如LoginView一般代表登录界面)结合常见的反编译工具(如class-dump,ida-pro,hopperdisassembler),攻击者可以轻易地根据符号的含义分析出代码的逻辑,有针对性地对关键逻辑进行分析、破解,使应用面临外挂、盗版、渗透等安全问题。因此,为了提升应用被逆向破解的难度,需要对这些符号进行隐藏或、混淆、或者加密处理。由于OC运行时环境必须依赖这些符号,如果隐藏将导致程序无法执行,如果进行加密,则需要在运行时加载之前对其进行解密,但并不存在这样一种时机,因此唯一可行的方式就是对这些符号进行混淆处理,将其变为杂乱无意义的字符串,消除其语义性。然而,现有技术基于源代码进行预处理,需要先手动整理符号列表,并修改源代码,对源代码和开发编译的过程有一定的侵入性。如果代码中新增了符号,需要手动添加进符号列表中。同时,由于是显式替换,对于代码中没有显式编写,而编译器自动生成并添加的符号将无法处理。
技术实现思路
鉴于此,本专利技术实施例的目的在于提供一符号混淆方法及装置,用于将解决上述弊端。第一方面,本专利技术实施例提供一种符号混淆方法,用于Objective-C语言,所述方法包括:基于源代码文件对源代码进行编译,获取中间文件;获取所述中间文件的类型构造信息;基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号。进一步地,所述基于源代码文件对源代码进行编译,获取中间文件,包括:基于至少一个源代码文件对源代码进行编译,获取至少一个第一中间文件;将所述至少一个第一中间文件进行合并,获取第二中间文件;将所述第二中间文件中赋值相同的全局变量进行合并,获取中间文件。进一步地,所述基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号,包括:将所述类型构造信息中类的第一名称替换为第二名称;判断所述类型构造信息中类的方法列表中的第一方法名称是否满足第二预设替换原则,获取第一判断结果;在所述第一判断结果为否时,将所述第一方法名称替换为第二方法名称。进一步地,所述基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号,还包括:将所述类型构造信息中类的属性列表中的第一属性名称替换为第二属性名称;判断所述类型构造信息中类的属列表中的第一ivar的类型名称是否与所述类型构造信息中类的第一名称相同,在为是时,将所述第一ivar的类型名称替换为所述第二名称;判断所述类型构造信息中类的属性列表中的getter方法的第三方法名称是否与所述第一方法名称相同,在为是时,将所述第三方法名称替换为所述第二方法名称;判断所述类型构造信息中类的属性列表中的setter方法的第四方法名称是否与所述第一方法名称相同,在为是时,将所述第四方法名称替换为所述第二方法名称。进一步地,所述基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号,还包括:将所述所述类型构造信息中类的ivar列表中的第二ivar的第三名称直接替换为第四名称;判断所述所述类型构造信息中所述第二ivar的第三类型名称是否与所述第一名称相同,在为是时,将所述第三类型名称替换为所述第二名称。第二方面,本专利技术实施例提供一种符号混淆装置,用于Objective-C语言,所述装置包括:中间文件获取单元,用于基于源代码文件对源代码进行编译,获取中间文件;类型构造信息获取单元,用于获取所述中间文件的类型构造信息;符号替换单元,用于基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号。进一步地,所述中间文件获取单元包括:第一获取单元,用于基于至少一个源代码文件对源代码进行编译,获取至少一个第一中间文件;第二获取单元,用于将所述至少一个第一中间文件进行合并,获取第二中间文件;第三获取单元,用于将所述第二中间文件中赋值相同的全局变量进行合并,获取中间文件。进一步地,所述符号替换单元,包括:第一符号替换子单元,用于将所述类型构造信息中类的第一名称替换为第二名称;第一判断单元,用于判断所述类型构造信息中类的方法列表中的第一方法名称是否满足第二预设替换原则,获取第一判断结果;第二符号替换子单元,用于在所述第一判断结果为否时,将所述第一方法名称替换为第二方法名称。进一步地,所述符号替换单元还包括:第三符号替换子单元,用于将所述类型构造信息中类的属性列表中的第一属性名称替换为第二属性名称;第四符号替换子单元,用于判断所述类型构造信息中类的属列表中的第一ivar的类型名称是否与所述类型构造信息中类的第一名称相同,在为是时,将所述第一ivar的类型名称替换为所述第二名称;第五符号替换子单元,用于判断所述类型构造信息中类的属性列表中的getter方法的第三方法名称是否与所述第一方法名称相同,在为是时,将所述第三方法名称替换为所述第二方法名称;第六符号替换子单元,用于判断所述类型构造信息中类的属性列表中的setter方法的第四方法名称是否与所述第一方法名称相同,在为是时,将所述第四方法名称替换为所述第二方法名称。进一步地,所述符号替换单元,还包括:第七符号替换子单元,用于将所述所述类型构造信息中类的ivar列表中的第二ivar的第三名称直接替换为第四名称;第八符号替换子单元,用于判断所述所述类型构造信息中所述第二ivar的第三类型名称是否与所述第一名称相同,在为是时,将所述第三类型名称替换为所述第二名称。本专利技术实施例提供了符号混淆方法及装置,所述方法包括:基于源代码文件对源代码进行编译,获取中间文件;获取所述中间文件的类型构造信息;基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号。本专利技术实施例通过对中间文件中的符号进行混淆处理,避免直接对源代码文件中的符号进行混淆理,无需人工提取符号,也无需修改源代码,对源代码文件无侵入性,支持对编译阶段自动添加的符号的混淆。本专利技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术实施例了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本专利技术实施例提供的一种符号混淆方法流程图;图2为本专利技术实施例提供的一种符号混淆装置的单元示意图;图3为本专利技术实施例提供的一种中间文件获取单元的单元示意图本文档来自技高网...

【技术保护点】
1.一种符号混淆方法,其特征在于,用于Objective‑C语言,所述方法包括:基于源代码文件对源代码进行编译,获取中间文件;获取所述中间文件的类型构造信息;基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号。

【技术特征摘要】
1.一种符号混淆方法,其特征在于,用于Objective-C语言,所述方法包括:基于源代码文件对源代码进行编译,获取中间文件;获取所述中间文件的类型构造信息;基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号。2.根据权利要求1所述的符号混淆方法,其特征在于,所述基于源代码文件对源代码进行编译,获取中间文件,包括:基于至少一个源代码文件对源代码进行编译,获取至少一个第一中间文件;将所述至少一个第一中间文件进行合并,获取第二中间文件;将所述第二中间文件中赋值相同的全局变量进行合并,获取中间文件。3.根据权利要求1或2任一权项所述的符号混淆方法,其特征在于,所述基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号,包括:将所述类型构造信息中类的第一名称替换为第二名称;判断所述类型构造信息中类的方法列表中的第一方法名称是否满足第二预设替换原则,获取第一判断结果;在所述第一判断结果为否时,将所述第一方法名称替换为第二方法名称。4.根据权利要求3所述的符号混淆方法,其特征在于,所述基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号,还包括:将所述类型构造信息中类的属性列表中的第一属性名称替换为第二属性名称;判断所述类型构造信息中类的属列表中的第一ivar的类型名称是否与所述类型构造信息中类的第一名称相同,在为是时,将所述第一ivar的类型名称替换为所述第二名称;判断所述类型构造信息中类的属性列表中的getter方法的第三方法名称是否与所述第一方法名称相同,在为是时,将所述第三方法名称替换为所述第二方法名称;判断所述类型构造信息中类的属性列表中的setter方法的第四方法名称是否与所述第一方法名称相同,在为是时,将所述第四方法名称替换为所述第二方法名称。5.根据权利要求3所述的符号混淆方法,其特征在于,所述基于所述类型构造信息和第一预设替换原则,将所述中间文件中的第一符号自动替换为第二符号,还包括:将所述所述类型构造信息中类的ivar列表中的第二ivar的第三名称直接替换为第四名称;判断所述所述类型构造信息中所述第二ivar的第三类型名称是否与所述第一名称相同,在为是时,将所述第三类型名称替换为所述第二名称。6.一种符号混淆装置,其特征在于,用于Obj...

【专利技术属性】
技术研发人员:马明
申请(专利权)人:北京顶象技术有限公司
类型:发明
国别省市:北京,11

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

1