掌桥专利:专业的专利平台
掌桥专利
首页

一种iOS应用程序加固方法及系统

文献发布时间:2024-01-17 01:26:37


一种iOS应用程序加固方法及系统

技术领域

本发明涉及iOS加固技术领域,具体是一种iOS应用程序加固方法及系统。

背景技术

市面上的iOS加固混淆工具多而杂,通常操作较为繁琐,需要很多个步骤才能对一个项目进行代码的生成与替换,而且还需要手动导入文件。对于使用者来说不仅上手门槛高,操作还极其不便。

加固后的项目通常会配合重签工具,对项目进行重签更换证书,修改资源文件等一些处理。而常见的iOS应用程序重签名工具中如iReSign,它是一款命令行工具需要在终端中手动输入命令进行操作。iReSign并没有可视化界面,需要开发人员对它的重签操作极为熟悉。对于不是iOS开发者来说,使用极其困难。iReSign则由于需要手动输入命令,操作过程较为复杂,容易出现错误和不稳定情况。

发明内容

为克服现有技术的不足,本发明提供了一种iOS应用程序加固方法及系统,解决现有技术存在的操作过程复杂、容易出现错误、不稳定等问题。

本发明解决上述问题所采用的技术方案是:

一种iOS应用程序加固方法,对iOS应用程序加固时,使用代码混淆工具来混淆修改现有的应用程序代码;并使用重签名技术将加固后的应用程序重新校验证书签名打包。

作为一种优选的技术方案,包括以下步骤:

代码混淆配置:配置代码混淆算法、混淆代码工具的参数,输入应用程序的文件路径;

代码加固工具运行:将应用程序的代码作为代码加固工具的输入,代码加固工具根据预定义的代码混淆算法与代码混淆参数,对代码进行修改、转换、生成、替换,生成经过混淆的代码文件;

加固结果检查:进行加固后,检查加固结果,确保应用程序原有的功能和逻辑没有受到影响;

bundle资源加密:将应用程序内的.bundle资源包进行加密,隐藏资源的可读性;

应用程序编译及打包:将加固后的代码编译并打包为iOS应用程序;其中,iOS应用程序以ipa文件形式存储;

应用程序信息修改:使用重签工具导入ipa文件,修改Info.plist的文件相关信息;

应用程序重新签名:使用自己的证书对应用程序进行重新签名,生成新的签名文件;

应用程序测试及调试:对加固后的应用程序进行测试和调试,确保加固过程没有引入新的问题或错误。

作为一种优选的技术方案,步骤A中,代码混淆工具的参数包括以下参数的一种或多种:要混淆的代码文件、混淆级别、保留关键代码。

作为一种优选的技术方案,步骤A中,代码混淆算法包括执行以下操作的一种或多种:类提取、类替换、高频方法名混淆、添加前后缀、方法乱序、调用随机垃圾文件中方法、生成垃圾文件并调用、添加属性前缀、敏感词替换、宏提取、宏替换。

作为一种优选的技术方案,步骤B中,生成经过混淆的代码文件包括:修改后的类名、修改后的方法名、修改后的变量名。

作为一种优选的技术方案,步骤E中,使用Xcode工具将加固后的代码编译并打包为iOS应用程序。

作为一种优选的技术方案,步骤F中,修改Info.plist的文件相关信息包括:Bundle Identifier、Display Name。

作为一种优选的技术方案,还包括位于步骤C之后、步骤D之前的以下步骤:

S,资源混淆:通过资源混淆工具,按照配置规则添加垃圾资源到项目资源路径下。

作为一种优选的技术方案,步骤S中,资源混淆工具执行以下操作的一种或多种:创建垃圾资源、树状资源混淆、修改原始资源、随机添加资源到目录中、创建Bundles垃圾文件、给CXGame.Bundle添加垃圾资源、随机生成垃圾资源。

一种iOS应用程序加固系统,用于实现所述的一种iOS应用程序加固方法,包括依次相连的以下步骤:

代码混淆配置模块:用以,配置代码混淆算法、混淆代码工具的参数,输入应用程序的文件路径;

代码加固工具运行模块:用以,将应用程序的代码作为代码加固工具的输入,代码加固工具根据预定义的代码混淆算法与代码混淆参数,对代码进行修改、转换、生成、替换,生成经过混淆的代码文件;

加固结果检查模块:用以,进行加固后,检查加固结果,确保应用程序原有的功能和逻辑没有受到影响;

bundle资源加密模块:用以,将应用程序内的.bundle资源包进行加密,隐藏资源的可读性;

应用程序编译及打包模块:用以,将加固后的代码编译并打包为iOS应用程序;其中,iOS应用程序以ipa文件形式存储;

应用程序信息修改模块:用以,使用重签工具导入ipa文件,修改Info.plist的文件相关信息;

应用程序重新签名:使用自己的证书对应用程序进行重新签名,生成新的签名文件;

应用程序测试及调试模块:用以,对加固后的应用程序进行测试和调试,确保加固过程没有引入新的问题或错误。

作为一种优选的技术方案,

本发明相比于现有技术,具有以下有益效果:

(1)提高代码的复杂度:将原有代码逻辑变得复杂混乱,增加攻击者反编译代码的难度,从而提高应用程序的安全性;

(2)隐藏关键信息:将关键信息如用户名、密码等隐藏起来,防止被恶意代码窃取,提高应用程序的安全性;

(3)防止调试和反调试:可以对应用程序进行反调试保护,防止攻击者在调试模式下进行代码分析和调试;

(4)提高反病毒软件检测的难度:可以减少反病毒软件对应用程序的检测准确率,从而提高应用程序的免疫力;

(5)增加攻击者攻击的成本:攻击者需要花费更多的时间和精力进行代码分析和破解,从而增加攻击者攻击的成本;

(6)修改应用程序内容、资源文件:可以修改应用程序的代码和资源文件,方便对文件进行修改而不用重新打包编译工程,包括应用程序的图标、启动画面等。同时可对资源文件进行混淆、加密,防止敏感资源被抓包获取;

(7)增强应用程序安全性:增强应用程序的安全性,例如企业内部应用程序的重签名可以加强应用程序的安全性,使得应用程序仅能在企业内部使用。

附图说明

图1为本发明所述的一种iOS应用程序加固方法的步骤示意图;

图2为资源混淆工具示意图;

图3为代码混淆工具示意图;

图4为重签名打包工具操作截图。

具体实施方式

下面结合实施例及附图,对本发明作进一步的详细说明,但本发明的实施方式不限于此。

实施例1

如图1至图4所示,本发明定制开发了自己的iOS加固工具,工具使用了独创的代码混淆加密算法来保护应用程序的源代码。基于对称加密或非对称加密的原理,对代码进行转换、替换或混淆,使其难以被逆向工程或破解。这些算法可能涉及代码重组、符号重命名、控制流扁平化、条件代码插入等技术,使得代码的结构和逻辑变得复杂、混乱和难以理解;资源混淆工具可新增新的文件和替换项目中的资源文件,实现不用重新打包,也能支持修改项目文件的效果。混淆工具主要是防止恶意攻击者对应用程序进行逆向工程和代码分析,以此来保护应用程序的机密信息和功能特性。

本发明在加固工具中同时集成了可视化的iOS重签名功能,内核使用了自动化脚本,更适合非技术开发者的人使用,使其具有更广泛的可用性和更简单的操作界面。重签名的原理是通过xcodebuild指令修改应用程序的签名证书和描述文件,使得应用程序能够在iOS开发者证书上已绑定设备上正常运行。

本发明提出了一种iOS应用程序加固方法,该方法旨在通过对IPA包进行加固处理,保证iOS应用的安全。该方法使用资源混淆工具添加、修改包体内的资源文件。对应用程序中的bundle资源文件进行加密处理,同时可随机生成资源文件添加到应用程序目录,用以混淆文件目录结构,最后使用重签名技术将加固后的IPA包重新校验证书签名,生成可供测试和提审的包。通过此加固方案,可以提高应用程序的安全性和防护能力,保护应用程序在分发过程中免受逆向工程、代码注入和破解等攻击。

iOS程序加固方案的技术特征:

1.代码混淆防止反编译:iOS代码生成混淆技术通过对应用程序的代码进行修改和混淆,使得反编译和逆向工程变得困难和复杂。代码混淆的技术包括变量名和函数名混淆、代码流程混淆、加密和压缩等。

2.自动化生成:使用自动化工具和程序,对应用程序的代码进行自动化修改和替换。这种技术可以大大提高混淆的效率和精度,减少人工干预和错误。

3.保持应用程序功能:在加固的过程中需要保持应用程序的原有功能和行为,确保应用程序的正常运行和使用。因此,代码混淆修改的的过程需要仔细测试和验证,确保应用程序的稳定性和可靠性。

4.难以逆向:使得应用程序的代码变得难以逆向和破解,保护应用程序的知识产权和商业机密。这种技术可以减少应用程序被盗用和复制的风险,提高应用程序的安全性和可靠性。

5.基于原始的应用程序包:不改变应用程序的原始二进制文件,而是在不影响应用程序功能的前提下,通过修改应用程序的签名证书和相关信息,使得重签名后的应用程序可以被安装和运行。

6.基于证书链验证:方便让应用程序通过苹果设备上的证书链验证进行安装。苹果设备会验证应用程序签名证书的有效性和合法性,如果证书无效或者不合法,则无法安装和运行应用程序。

更具体地包括以下技术特征:

1.资源混淆工具:针对iOS包体的资源进行一些修改,以达到资源混淆、加密的目的。可以给项目中添加垃圾资源,对bundle资源进行加密,修改项目资源文件的文件属性,同时支持生成替换项目的icon和launchimage。

2.代码混淆工具:针对项目代码进行操作,如增加各种方法、属性等代码并调用,改变方法名、属性名,增加前后缀,敏感词替换等。这样操作的目的可以增加反编译的难度,混淆代码逻辑,也可以用来规避敏感词风险。

3.重签名打包工具:基础功能为选择证书和配置文件进行重新签名。还可以直接修改包体的数据如:bundleid,包名、版本包、icon等。操作时正确导入路径,勾选想要修改iOS包的数据替换即可。

本发明具有以下优点:

1.操作便捷:开发一款基于图形界面的加固工具,帮助使用者快速对iOS应用程序进行代码加密和资源加密。代码加密和资源加密操作快捷;支持可视化操作;分发安装过程使用重签名技术,支持多种签名证书和描述文件。

2.一键流程化操作:集成式安装环境,不需要配置或安装额外的运行环境;在macOS系统下打开即可操作;加固完成后顺利签名,保护签名证书,验证签名文件的完整性。

3.功能稳定:图形界面上功能描述展示完整清晰;加固过程自动化,不配置过于复杂的混淆参数;混淆后重签名顺利,证书校验完整,ipa包可正常安装和提审。

本发明iOS加固技术效果表现在:

(1)提高代码的复杂度:将原有代码逻辑变得复杂混乱,增加攻击者反编译代码的难度,从而提高应用程序的安全性;

(2)隐藏关键信息:将关键信息如用户名、密码等隐藏起来,防止被恶意代码窃取,提高应用程序的安全性;

(3)防止调试和反调试:可以对应用程序进行反调试保护,防止攻击者在调试模式下进行代码分析和调试;

(4)提高反病毒软件检测的难度:可以减少反病毒软件对应用程序的检测准确率,从而提高应用程序的免疫力;

(5)增加攻击者攻击的成本:攻击者需要花费更多的时间和精力进行代码分析和破解,从而增加攻击者攻击的成本;

(6)修改应用程序内容、资源文件:可以修改应用程序的代码和资源文件,方便对文件进行修改而不用重新打包编译工程,包括应用程序的图标、启动画面等;

(7)增强应用程序安全性:增强应用程序的安全性,例如企业内部应用程序的重签名可以加强应用程序的安全性,使得应用程序仅能在企业内部使用。

实施例2

如图1至图4所示,作为实施例1的进一步优化,在实施例1的基础上,本实施例还包括以下技术特征:

1.配置代码混淆参数:根据需要,配置混淆工具的参数。这些参数通常包括要混淆的代码文件、混淆级别(代码生成与调用的数量)、保留关键代码等。混淆级别越高,混淆效果越强,但可能会影响代码的可读性和性能。

2.运行代码加固工具:将应用程序的代码作为输入。加固工具将根据预定义的混淆算法与混淆参数,对代码进行修改和转换以及生成、替换等,以增加代码的复杂性和混淆度。

3.检查加固结果:加固工具会生成经过混淆的代码文件,包含修改后的类名、方法名、变量名等。进行加固后,需要仔细检查加固结果,确保应用程序原有的功能和逻辑没有受到影响。

4.(可选)资源混淆:通过资源混淆工具,按照配置规则添加垃圾资源到项目资源路径下。

5.bundle资源加密:将工程内特定的.bundle资源包进行加密,隐藏资源的可读性;

6.编译和打包应用程序:使用Xcode或其他适当的工具,将加固后的代码编译并打包为iOS应用程序(ipa文件)。

7.修改应用程序信息、资源文件:使用重签工具导入ipa文件,修改Info.plist的文件相关信息,例如Bundle Identifier、Display Name等。这些修改旨在避免与其他应用程序冲突。也可根据需求进行替换包体中原有的文件,添加资源,替换icon、修改文件哈希值等操作。

8.重新签名应用程序:使用自己的证书对应用程序进行重新签名,生成新的签名文件。签名工具会使用提供的证书和私钥信息,对应用程序的可执行文件、框架、扩展和其他相关文件进行签名。这样可以确保应用程序的正常安装和运行。

9.测试和调试应用程序:对加固后的应用程序进行测试和调试,确保加固过程没有引入新的问题或错误。

iOS应用程序加固主要为了保护应用程序的安全性,提高程序的防护能力。首先通过混淆代码,开发者可以隐藏应用程序的实现细节和逻辑,防止知识产权侵权和逆向工程,抵御恶意攻击。然后通过重签的方式,将加固后的IPA包恢复为正常证书的包,保证了应用程序的安装的合法性,使得开发者或测试者便于安装或者分发。

具体针对性的技术点体现在以下几方面:

1.提高代码安全性:代码生成混淆增加应用程序的安全性,减少恶意用户对应用程序的逆向工程和分析。通过混淆代码,攻击者难以理解和还原代码的逻辑,从而降低恶意用户对应用程序的攻击风险。

2.抵御逆向工程:使代码难以阅读和理解,增加了逆向工程的难度。攻击者需要花费更多的时间和精力来分析和破解应用程序的逻辑,从而降低了应用程序被逆向工程的风险。

3.保护知识产权:可以帮助保护应用程序的知识产权。通过混淆代码,可以隐藏应用程序的算法、业务逻辑和设计实现细节,降低他人盗用和复制应用程序的风险。

4.减少代码泄露风险:降低代码泄露的风险。混淆后的代码对外部人员来说更难以理解和使用,减少了代码被泄露后被滥用的可能性。

5.提高反调试能力:增强应用程序的反调试能力。使调试工具难以分析和追踪应用程序的执行流程,增加攻击者进行调试和逆向工程的难度。

6.替换配置文件和资源文件:可替换项目中的配置文件如应用图标、启动图等,也可替换和添加项目中的资源文件、修改图片哈希值等。此操作不需要项目工程,可直接对ipa包进行处理,配合重签名功能,避免了在工程内重新打包的繁琐过程。

7.测试和调试:重签名允许开发人员在混淆过程中将应用程序安装到测试设备上。这样可以更方便地进行混淆效果调试;当只需要改变资源而不需要修改代码时,也可以直接使用资源替换+重签名功能,直接在ipa包进行修改,方便针对资源的问题排除。

8.更换过期证书:有些应用程序可能依赖于特定的签名证书,而证书的有效期有限。通过重签名,可以将应用程序用新的签名证书进行重签名,延长应用程序的可用期限,从而避免因证书过期而无法使用。

如上所述,可较好地实现本发明。

本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。

技术分类

06120116217138