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运行时环境必须依赖这些符号,如果隐藏将导致程序无法执行,如果进行加密,则需要在运行时加载之前对其进行解密,但并不存在这样一种时机,因此唯一可行的方式就是对这些符号进行混淆处理,将其变为杂乱无意义的字符串,消除其语义性。然而,现有技术基于源代码进行预处理,需要先手动整理符号列表,并修改源代码,对源代码和开发编译的过程有一定的侵入性。如果代码中新增了符号,需要手动添加进符号列表中。同时,由于是显式替换,对于代码中没有显式编写,而编译器自动生成并添加的符号将无法处理。
技术实现思路
鉴于此,本专利技术实施例的目的在于提供一符号混淆方法及装置,用于将解决上述弊端。第一方面, ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。