CN113761485A - 一种基于swift的代码混淆方法、装置、设备及介质 - Google Patents

一种基于swift的代码混淆方法、装置、设备及介质 Download PDF

Info

Publication number
CN113761485A
CN113761485A CN202110982488.2A CN202110982488A CN113761485A CN 113761485 A CN113761485 A CN 113761485A CN 202110982488 A CN202110982488 A CN 202110982488A CN 113761485 A CN113761485 A CN 113761485A
Authority
CN
China
Prior art keywords
code
logic
obfuscated
codes
program structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110982488.2A
Other languages
English (en)
Inventor
张文通
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Inspur Genersoft Information Technology Co Ltd
Original Assignee
Shandong Inspur Genersoft Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Inspur Genersoft Information Technology Co Ltd filed Critical Shandong Inspur Genersoft Information Technology Co Ltd
Priority to CN202110982488.2A priority Critical patent/CN113761485A/zh
Publication of CN113761485A publication Critical patent/CN113761485A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本说明书实施例公开了一种基于swift的代码混淆方法、装置、设备及介质,方法包括:获取待混淆的源代码,并根据程序分析方法确定出待混淆的源代码中的逻辑代码和程序结构,其中,逻辑代码为待混淆的源代码中的具备逻辑含义的代码;对源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;在混淆后的程序结构的基础上,根据预设的代码混淆规则对待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,混淆后的逻辑代码使用swift进行撰写。通过对程序结构进行复杂化处理,降低反编译以及逆向破解风险;对逻辑代码进行混淆处理,增加攻击者阅读代码的难度以及静态搜索的难度。

Description

一种基于swift的代码混淆方法、装置、设备及介质
技术领域
本说明书涉及计算机应用技术领域,尤其涉及一种基于swift的代码混淆方法、装置、设备及介质。
背景技术
国际标准化组织ISO对信息安全的定义为:为数据处理系统建立和采用的技术、管理上的安全保护,目的在于保护计算机硬件、软件、数据,不因偶然和恶意的原因而遭到破坏、更改和泄露,在保护信息安全领域,防止源代码泄露和篡改是极其重要的。防止源代码泄露和被篡改的重要方式之一是代码混淆技术。代码混淆是为了防止其他用户对应用程序进行反编译之后,根据函数名或者变量名来窥探应用程序。
在现有技术中,代码混淆大多依赖成熟的操作系统,比如macOS操作系统,代码混淆的适用性存在一定的限制。
发明内容
本说明书一个或多个实施例提供了一种基于swift的代码混淆方法、装置、设备及介质,用于解决如下技术问题:代码混淆大多依赖成熟的操作系统,代码混淆的适用性存在一定的限制。
本说明书一个或多个实施例采用下述技术方案:
本说明书一个或多个实施例提供一种基于swift的代码混淆方法,所述方法包括:获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
进一步地,所述逻辑代码包括第一类逻辑代码和第二类逻辑代码,其中,所述第一类逻辑代码包括以下一项或多项:字符串和常量;所述第二类逻辑代码包括以下一项或多项:函数名、类名以及属性名。
进一步地,所述混淆处理包括以下一项或多项:替换处理和加密处理;所述根据预设的代码混淆规则对所述逻辑代码进行混淆处理,具体包括:对所述第一类逻辑代码进行加密处理,完成所述第一类逻辑代码的混淆过程;对所述第二类逻辑代码进行替换处理,得到对应的无义代码,并对所述无义代码进行加密处理,完成所述第二类逻辑代码的混淆过程。
进一步地,所述对所述第一类逻辑代码进行加密处理,具体包括:对所述第一类逻辑代码使用第一加密方式进行加密,在所述第一加密方式中,根据不同的加密时间添加不同的随机数。
进一步地,所述对所述第二类逻辑代码进行替换处理,得到对应的无义代码,并对所述无义代码进行加密处理,具体包括:确定出所述逻辑代码中的第二类逻辑代码,并将所述第二类逻辑代码对应的名称替换为无意义的名称代码,得到所述第二类逻辑代码对应的无义代码,其中所述无意义的名称代码包括以下一项或多项:无意义符号、无意义字母以及无意义字母组合,并通过第二加密方式对所述无义代码进行加密处理。
进一步地,所述对所述源代码的程序结构进行复杂化处理,包括以下一项或多项:对所述源代码的程序结构进行复杂函数转换,将所述程序结构中的第一类函数转换为第二类函数,所述第二类函数为所述第一类函数的复杂形式;对所述程序结构进行程序语言转换,将所述程序结构中的方法函数对应的第一程序语言转换为第二程序语言。
进一步地,所述程序分析方法包括以下一项或多项:控制流分析法、数据流分析法以及别名分析法。
本说明书一个或多个实施例提供一种基于swift的代码混淆装置,所述装置包括:确定单元,用于获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;处理单元,用于对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;还用于在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
本说明书一个或多个实施例提供一种基于swift的代码混淆设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
本说明书一个或多个实施例提供的一种存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:本说明书实施例中通过对程序结构进行复杂化处理,在编译环节将IOS代码逻辑变形、膨胀复杂化,降低反编译以及逆向破解风险;对逻辑代码进行混淆处理,增加攻击者阅读代码的难度以及静态搜索的难度,提供了一种有效的代码混淆方法。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书实施例提供的一种基于swift的代码混淆方法流程示意图;
图2为本说明书实施例提供的一种基于swift的代码混淆装置的结构示意图;
图3为本说明书实施例提供的一种基于swift的代码混淆设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
国际标准化组织ISO对信息安全的定义为:为数据处理系统建立和采用的技术、管理上的安全保护,目的在于保护计算机硬件、软件、数据,不因偶然和恶意的原因而遭到破坏、更改和泄露,在保护信息安全领域,防止源代码泄露和篡改是极其重要的。防止源代码泄露和被篡改的重要方式之一是代码混淆技术。
代码混淆是为了防止其他用户对应用程序进行反编译之后,根据函数名或者变量名来窥探应用程序,从而了解应用程序的内部实现。代码混淆又被称为花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式。所谓混淆,就是针对需要被保护的程序P,经过混淆后转换为P',P和P'的行为保持一致,但是攻击者很难从P'中获取想要的信息。这里的很难指攻击者在分析P'时需要付出比P多的资源(时间、人力)才能从P'中获得和P一样的信息。
代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器,目前已经存在许多种功能各异的代码混淆器。将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。另外,还可以重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。还可以采取打乱代码的格式,比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等。
代码混淆是最重要却又最难以捉摸的一类保护方式,现有技术中代码混淆大多依赖成熟的操作系统,代码混淆的适用性存在一定的限制。
Swift作为一个简洁高效的语言,非常适合用于代码混淆。Swift本身是开源语言,支持Linux部署,而且借助SPM(Swift Package Manager)可以更高效部署管理,不必依赖Mac OS或者iOS操作系统的限制。而且可以容器化部署,可伸缩、按需配置,可以即插即用,充分符合现在SaaS云服务云计算的需求。Swift是苹果官方推崇的现代化语言,底层结构清晰,经过测试,编译和运行速度快,效率高,不弱于其他语言比如Python和JavaScript。而且在CentOS、RedHat等环境速率都没有很大差异。另外,扩展性好,SPM支持,完全支持各种C和C++框架,用户可以根据实际情况进行参数扩展,可以直接引用生成的二进制可执行文件,可以根据自己环境用xmake编译生成其他环境产物,如Linux等操作系统。基于现有的stable第三方库,经过有效的单元测试,不依赖网络环境,并发运行情形良好,混淆代码量比较大的工程效果也比较,方法稳定性比较好,已经经过相关压力测试。没有不良代码和隐藏代码,并且代码经过混淆加密,充分剔除有漏洞代码,核心方法通过C和C++编译,安全性比较好,源码已经通过代码安全扫描。
本说明书实施例提供一种基于swift的代码混淆方法,在本说明书实施例中,选择的技术栈有swift、objective-c、C、C++等。其中,swift进行主要代码的撰写,用于确立主要的步骤,比如函数入口、函数参数、文件解压、文件迭代等步骤;C和C++用于复杂耗时编码、解码、加密、解密等处理。另外,第三方的扩展库主要是openssl、project、plist、spm、SwiftShell、rainbow、CommandLineKit等。操作系统选择macOS High Sierra或者macOSMojave。C和C++选择GNU的gcc,gcc环境4.1.2即可。如图1所示,方法主要包括如下步骤:
步骤S101,获取待混淆的源代码,并根据程序分析方法确定出待混淆的源代码中的逻辑代码和程序结构。
具体地,逻辑代码为待混淆的源代码中的具备逻辑含义的代码,程序分析方法包括以下一项或多项:控制流分析法、数据流分析法以及别名分析法。
在本说明书的一个实施例中,获取应用程序的源代码,对源代码进行混淆。其中,应用程序可以是IOS系统中的应用程序,本说明书对此不进行限定。根据程序分析方法对源代码进行分析,确定出源代码中的逻辑代码和程序结构。其中,需要说明的是,逻辑代码为程序代码中具有逻辑意义的代码,在本说明书的一个实施例中,逻辑代码待混淆的源代码中具备逻辑意义的代码,待混淆的源代码可以是IOS代码。
另外,程序分析方法包括动态分析和静态分析,其中,动态分析是指通过运行程序收集程序信息,静态分析是指通过分析代码获取程序中的代码信息。静态分析的程序分析方法包括控制流分析法,就是画出程序运行的流程图;数据流分析法,获得变量使用的保守信息;数据依赖分析法,变量间的依赖关系;别名分析法,在程序运行的某个时间上多个变量必然或者可能指向同一个内存地址;切片分析法,对目标变量的影响;抽象解析分析法,定性而不是定量的判读。
步骤S102,对源代码的程序结构进行复杂化处理,确定出混淆后的程序结构。
具体地,对源代码的程序结构进行复杂化处理,包括以下一项或多项:对源代码的程序结构进行复杂函数转换,将程序结构中的第一类函数转换为第二类函数,第二类函数为第一类函数的复杂形式;对程序结构进行程序语言转换,将程序结构中的方法函数对应的第一程序语言转换为第二程序语言。
在本说明书的一个实施例中,在进行代码混淆时,对确定出的源代码的程序结构进行混淆,在编译环节将IOS代码逻辑变形、膨胀复杂化,降低反编译以及逆向破解风险,确定出混淆后的程序结构。具体的,将程序结构中的简单函数转换为复杂函数,增加破解者的破解难度。还可以将部分重要方法函数转换为C函数套用复杂函数模板,在保证函数栈结构的情况下充分进行方法置换,而且不影响函数执行效率;另外,将某些函数替换为C函数后,执行效率得到充分提高。
步骤S103,在混淆后的程序结构的基础上,根据预设的代码混淆规则对待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码。
在本说明书的一个实施例中,得到混淆后的程序结构之后,根据预设的代码混淆规则对源代码中的逻辑代码进行混淆处理,其中,需要说明的是,不同类型的逻辑代码的混淆处理操作不同,并且,还要保证部分代码不会被混淆。
在本说明书的一个实施例中,一般不进行混淆的情况包括:1.使用了自定义控件的不参与混淆;2.使用了枚举要保证枚举的不被混淆;3.对第三方库中的类不进行混淆;4.运用了反射的类不进行混淆;5.实体类不进行混淆;6.有用到Webview的JavaScript调用等前端交互的不进行混淆,以免出现问题;7.静态成员变量尽量不参与混淆,否则会引发部分难解的问题。在本说明书实施例中还可以提供一份混淆模板,既能提高混淆效率,加快混淆进度,又能保证防止出现不符合混淆规则的情况。
具体地,逻辑代码包括第一类逻辑代码和第二类逻辑代码,其中,第一类逻辑代码包括以下一项或多项:字符串和常量;第二类逻辑代码包括以下一项或多项:函数名、类名以及属性名。混淆处理包括以下一项或多项:替换处理和加密处理;根据预设的代码混淆规则逻辑代码进行混淆处理,具体包括:对第一类逻辑代码进行加密处理,完成第一类逻辑代码的混淆过程;对第二类逻辑代码进行替换处理,得到对应的无义代码,并对无义代码进行加密处理,完成第二类逻辑代码的混淆过程。
具体地,对第一类逻辑代码进行加密处理,具体包括:对第一类逻辑代码使用第一加密方式进行加密,在第一加密方式中,根据不同的加密时间添加不同的随机数。
具体地,对第二类逻辑代码进行替换处理,得到对应的无义代码,并对无义代码进行加密处理,具体包括:确定出逻辑代码中的第二类逻辑代码,并将第二类逻辑代码对应的名称替换为无意义的名称代码,得到第二类逻辑代码对应的无义代码,其中无意义的名称代码包括以下一项或多项:无意义符号、无意义字母以及无意义字母组合,并通过第二加密方式对无义代码进行加密处理。
在本说明书的一个实施例中,不同类型的逻辑代码的混淆处理操作不同,由于字符串会暴露很多关键信息,攻击者可以根据显示的字符串,快速找到核心业务代码,从而破解应用。加密字符串可以增加攻击者阅读代码的难度以及根据字符串静态搜索的难度。
当逻辑代码为字符串、常量时,对字符串和常量使用第一加密方式进行加密,其中,第一加密方式可以是数据加密标准(Data Encryption Standard,DES)的加密方式。在第一加密方式中,根据不同的加密时间添加不同的随机数。在本说明书的一个实施例中,在工程中动态注入DES加密函数,加密函数也是可以动态调整,加密salt值根据时间实时变化,提高了加密的安全性,减少了环境变量影响。同时DES是对称加密,可以通过动态注入DES解密函数进行动态解密,可以实时还原项目。
当逻辑代码为函数名、类名以及属性名时,混淆处理包括替换处理和加密处理。将代码中的函数名、类名以及属性名替换为无意义符号,也可以替换为无意义字母,还可以替换为无意义的字母组合,增加代码逆向难度,防止敏感符号被class-dump工具提取,防止IDA Pro等工具反编译后分析业务代码。
对函数名、类型以及属性名进行无意义替换后,通过第二加密方式对无义代码进行加密处理,其中,第二加密方式可以是高级加密标准(Advanced Encryption Standard,AES)。在混淆过程中彻底消除函数名、类名、属性名语义,并且AES加密向量根据项目名和项目编写人定义,亦可自定义。重要的类和方法添加垃圾代码,并且对函数方法进行切割分断,充分保证函数、属性不会被hook攻击,对于部分宏定义转换为静态常量或者静态方法进行混淆,起到隐藏效果。
针对部分素材,其中,素材可以是图片、视频等,采用swift独有的工具进行压缩和格式转换,资源素材进行重命名和加密处理,重要的素材进行加密处理,防止素材被盗用。
在完成代码混淆之后,需要对应用程序的完整性进行校验,确保混淆后的代码是可以正常运行的。另外,还可以利用反调试、反注入、反hook等主动防护机制,防止攻击者、恶意分析者动态调试分析程序。
本说明书实施例还提供一种基于swift的代码混淆操作流程。首先,用Swift包管理器(swift package manager,SPM)初始化我们的工程,托管到Github。SPM可以动态管理我们的swift源代码工程,动态引入第三方库,可以生成静态库和可执行文件(main.swift)非常好用。
再者,我们梳理我们的swift工程代码结构,主要包含confuse,objc_confuse以及auto-confuse-executable等modules和products。其中confuse是主要swift代码部分,objc_confuse包含加密和复杂函数以及符号表,主要是objc、c和c++的代码,auto-confuse-executable是可执行函数,进行主要的函数执行,也是工具面向用户的主要执行部分。
这样,我们便可以进行confuse主要部分的代码编写了,首先要根据project的类型,创建templates,实现主要常量Const.swift、配置类Config.swift和小工具类lib.swift以及Random.swift的编写,方便整个项目的常量和工具类管理。实现主要函数CommandRunner.swift的编写,包含函数的输入和输出参数,主要步骤和部分中间件的编写。实现线程函数Operation.swift的编写,包含主线程和子线程的调用,同步和异步调用,串行和并行线程的调用,用于整个swift项目的线程规划和线程规范,提高我们的混淆效率,优化整个项目的读写。实现持久化函数和文件管理函数Data.swift和File.swift以及压缩文件管理zip.swift的编写,包含主要的函数工程的数据读写和文件管理,保证项目在离线状态下也可以执行,提高io执行效率。实现Downloader.swift和Uploader.swift编写,便于要混淆的远程项目的下载和上传管理。实现Deletion.swift、Modification.swift、Preparation.swift和Recursiver.swift等主要文件修改类的编写,混淆方法也主要在这些类当中,作为主程序函数,所有执行方法都经过线程调优,保证最后混淆效率。实现Extensions.swift和Handler.swift等函数,方便对混淆工具的外部扩展和第三方回调,增强了混淆工具的扩展性和整体性。
本说明书实施例还提供一种基于swift的代码混淆装置,如图2所示,装置包括:确定单元21,用于获取待混淆的源代码,并根据程序分析方法确定出待混淆的源代码中的逻辑代码和程序结构,其中,逻辑代码为待混淆的源代码中的具备逻辑含义的代码;处理单元22,用于对源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;还用于在混淆后的程序结构的基础上,根据预设的代码混淆规则对待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,混淆后的逻辑代码使用swift进行撰写。
在本说明书的一个实施例中,处理单元22还用于对第一类逻辑代码进行加密处理,完成第一类逻辑代码的混淆过程;对第二类逻辑代码进行替换处理,得到对应的无义代码,并对无义代码进行加密处理,完成第二类逻辑代码的混淆过程。
在本说明书的一个实施例中,处理单元22还用于,对第一类逻辑代码使用第一加密方式进行加密,在第一加密方式中,根据不同的加密时间添加不同的随机数。
在本说明书的一个实施例中,处理单元22还用于确定出逻辑代码中的第二类逻辑代码,并将第二类逻辑代码对应的名称替换为无意义的名称代码,得到第二类逻辑代码对应的无义代码,其中无意义的名称代码包括以下一项或多项:无意义符号、无意义字母以及无意义字母组合,并通过第二加密方式对无义代码进行加密处理。
在本说明书的一个实施例中,处理单元22还用于对源代码的程序结构进行复杂函数转换,将程序结构中的第一类函数转换为第二类函数,第二类函数为第一类函数的复杂形式;对程序结构进行程序语言转换,将程序结构中的方法函数对应的第一程序语言转换为第二程序语言。
本说明书实施例还提供一种基于swift的代码混淆设备,如图3所示,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:获取待混淆的源代码,并根据程序分析方法确定出待混淆的源代码中的逻辑代码和程序结构,其中,逻辑代码为待混淆的源代码中的具备逻辑含义的代码;对源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;在混淆后的程序结构的基础上,根据预设的代码混淆规则对待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,混淆后的逻辑代码使用swift进行撰写。
本说明书实施例还提供一种存储介质,存储有计算机可执行指令,计算机可执行指令设置为:获取待混淆的源代码,并根据程序分析方法确定出待混淆的源代码中的逻辑代码和程序结构,其中,逻辑代码为待混淆的源代码中的具备逻辑含义的代码;对源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;在混淆后的程序结构的基础上,根据预设的代码混淆规则对待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,混淆后的逻辑代码使用swift进行撰写。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:本说明书实施例中通过对程序结构进行复杂化处理,在编译环节将IOS代码逻辑变形、膨胀复杂化,降低反编译以及逆向破解风险;对逻辑代码进行混淆处理,增加攻击者阅读代码的难度以及静态搜索的难度,提供了一种有效的代码混淆方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (10)

1.一种基于swift的代码混淆方法,其特征在于,所述方法包括:
获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;
对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;
在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
2.根据权利要求1所述的一种基于swift的代码混淆方法,其特征在于,所述逻辑代码包括第一类逻辑代码和第二类逻辑代码,其中,所述第一类逻辑代码包括以下一项或多项:字符串和常量;所述第二类逻辑代码包括以下一项或多项:函数名、类名以及属性名。
3.根据权利要求2所述的一种基于swift的代码混淆方法,其特征在于,所述混淆处理包括以下一项或多项:替换处理和加密处理;
所述根据预设的代码混淆规则对所述逻辑代码进行混淆处理,具体包括:
对所述第一类逻辑代码进行加密处理,完成所述第一类逻辑代码的混淆过程;
对所述第二类逻辑代码进行替换处理,得到对应的无义代码,并对所述无义代码进行加密处理,完成所述第二类逻辑代码的混淆过程。
4.根据权利要求3所述的一种基于swift的代码混淆方法,其特征在于,所述对所述第一类逻辑代码进行加密处理,具体包括:
对所述第一类逻辑代码使用第一加密方式进行加密,在所述第一加密方式中,根据不同的加密时间添加不同的随机数。
5.根据权利要求3所述的一种基于swift的代码混淆方法,其特征在于,所述对所述第二类逻辑代码进行替换处理,得到对应的无义代码,并对所述无义代码进行加密处理,具体包括:
确定出所述逻辑代码中的第二类逻辑代码,并将所述第二类逻辑代码对应的名称替换为无意义的名称代码,得到所述第二类逻辑代码对应的无义代码,其中所述无意义的名称代码包括以下一项或多项:无意义符号、无意义字母以及无意义字母组合,并通过第二加密方式对所述无义代码进行加密处理。
6.根据权利要求1所述的一种基于swift的代码混淆方法,其特征在于,所述对所述源代码的程序结构进行复杂化处理,包括以下一项或多项:
对所述源代码的程序结构进行复杂函数转换,将所述程序结构中的第一类函数转换为第二类函数,所述第二类函数为所述第一类函数的复杂形式;
对所述程序结构进行程序语言转换,将所述程序结构中的方法函数对应的第一程序语言转换为第二程序语言。
7.根据权利要求1所述的一种基于swift的代码混淆方法,其特征在于,所述程序分析方法包括以下一项或多项:控制流分析法、数据流分析法以及别名分析法。
8.一种基于swift的代码混淆装置,其特征在于,所述装置包括:
确定单元,用于获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;
处理单元,用于对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;
还用于在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
9.一种基于swift的代码混淆设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;
对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;
在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
10.一种存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:
获取待混淆的源代码,并根据程序分析方法确定出所述待混淆的源代码中的逻辑代码和程序结构,其中,所述逻辑代码为所述待混淆的源代码中的具备逻辑含义的代码;
对所述源代码的程序结构进行复杂化处理,确定出混淆后的程序结构;
在所述混淆后的程序结构的基础上,根据预设的代码混淆规则对所述待混淆的源代码中的逻辑代码进行混淆处理,生成混淆后的逻辑代码,其中,所述混淆后的逻辑代码使用swift进行撰写。
CN202110982488.2A 2021-08-25 2021-08-25 一种基于swift的代码混淆方法、装置、设备及介质 Pending CN113761485A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110982488.2A CN113761485A (zh) 2021-08-25 2021-08-25 一种基于swift的代码混淆方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110982488.2A CN113761485A (zh) 2021-08-25 2021-08-25 一种基于swift的代码混淆方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113761485A true CN113761485A (zh) 2021-12-07

Family

ID=78791203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110982488.2A Pending CN113761485A (zh) 2021-08-25 2021-08-25 一种基于swift的代码混淆方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113761485A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115048623A (zh) * 2022-04-01 2022-09-13 上海任意门科技有限公司 用于加密代码的方法、计算设备和存储介质
CN115203652A (zh) * 2022-09-15 2022-10-18 中电信数智科技有限公司 一种基于源混淆的ios端安全加密控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115048623A (zh) * 2022-04-01 2022-09-13 上海任意门科技有限公司 用于加密代码的方法、计算设备和存储介质
CN115203652A (zh) * 2022-09-15 2022-10-18 中电信数智科技有限公司 一种基于源混淆的ios端安全加密控制方法

Similar Documents

Publication Publication Date Title
CN108595989B (zh) 一种iOS下移动APP安全防护系统及方法
US11361083B1 (en) Method and apparatus for securing embedded device firmware
CN107229848A (zh) 一种代码加固方法和装置
Maiorca et al. Digital investigation of pdf files: Unveiling traces of embedded malware
CN113761485A (zh) 一种基于swift的代码混淆方法、装置、设备及介质
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
Lu et al. AutoD: Intelligent blockchain application unpacking based on JNI layer deception call
CN105022936A (zh) 一种类class文件加密解密方法和装置
KR101861341B1 (ko) 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법
CN109948308A (zh) 代码安全保护方法、装置、电子设备和计算机可读存储介质
CN109598107B (zh) 一种基于应用安装包文件的代码转换方法及装置
CN110309630B (zh) 一种Java代码加密方法及装置
CN104298534A (zh) 基于Lua语言的编程方法和装置
CN109740314A (zh) 一种swf混淆加密的方法
CN112052433B (zh) 一种Jar文件的虚拟化保护方法、终端及存储介质
CN110348206B (zh) 应用于安卓安装包apk的保护方法、介质、装置和计算设备
CN110457869A (zh) 程序编译加密方法、装置、存储介质及电子设备
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
CN113626773B (zh) 一种基于中间语言的代码保护方法
CN105453104B (zh) 系统保护用文件安全管理装置和管理方法
CN113721928B (zh) 一种基于二进制分析的动态库裁剪方法
CN104615935B (zh) 一种面向Xen虚拟化平台的隐藏方法
Kanani et al. Obfuscation: maze of code
CN111475152B (zh) 一种代码处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination