CN115525879A - 一种针对iOS的SDK内部敏感数据的保护方法 - Google Patents
一种针对iOS的SDK内部敏感数据的保护方法 Download PDFInfo
- Publication number
- CN115525879A CN115525879A CN202211487227.4A CN202211487227A CN115525879A CN 115525879 A CN115525879 A CN 115525879A CN 202211487227 A CN202211487227 A CN 202211487227A CN 115525879 A CN115525879 A CN 115525879A
- Authority
- CN
- China
- Prior art keywords
- sensitive data
- sdk
- type
- ios
- attribute
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 238000005336 cracking Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Storage Device Security (AREA)
Abstract
本发明提出了一种针对iOS的SDK内部敏感数据的保护方法,涉及SDK保护领域,包括以下步骤:步骤S1:将SDK内部的敏感数据存放于特定内存中;步骤S2:使用与敏感数据无关的关键词来定义敏感数据的命名;步骤S3:传入任意类型指针,对敏感数据类型进行类型混淆;步骤S4:对SDK中部分需要使用敏感数据的类,进行壳属性声明,并进行读方法的改造。在调试模式中可以更全面的保护SDK内部敏感数据。
Description
技术领域
本发明涉及数据安全领域,具体涉及一种针对iOS的SDK内部敏感数据的保护方法。
背景技术
提供APP特定技术的供应商企业,往往需要在iOS平台上提供SDK给客户使用,SDK内部负责相关商务数据的计算及维护,如承担计费的职责。客户在正式使用SDK前,通常需要先在调试模式下集成及调试。调试模式,指App还没上架iOS平台,还没打包发布,客户集成了SDK并运行IDE进行SDK调用并调试。
此时,由于SDK未接受IDE打包,不具备iOS平台天然的加固效果,如果客户别有用心,想躲避收费,则可以在调试模式中,运用IDE方便地查看敏感数据访问,并针对性进行修改,在App上线后达到不良的目的,而对供应商企业产生极大的损失。
因此,本发明提出一种针对iOS的SDK内部敏感数据的保护方法。
发明内容
针对现有技术的不足,本发明提出一种针对iOS的SDK内部敏感数据的保护方法,在调试模式中可以更全面的保护SDK内部敏感数据。
本发明的技术方案是这样实现的:
一种针对iOS的SDK内部敏感数据的保护方法,包括如下步骤:
步骤S1:将SDK内部的敏感数据存放于特定内存中;
步骤S2:使用与敏感数据无关的关键词来定义敏感数据的命名;
步骤S3:传入任意类型指针,对敏感数据类型进行类型混淆;
步骤S4:对SDK中部分需要使用敏感数据的类,进行壳属性声明,并进行读方法的改造。
优选的,所述步骤S1中,在特定内存中创建一个不被任何对外公开类所持有或关联的单例对象,在该单例对象内部,创建相关敏感数据的属性,由单例对象来进行敏感数据持有与管理。
优选的,所述步骤S2中,对于敏感数据中的基础数据类型和非基础类型均使用无关的关键词定义命名。
优选的,所述步骤S3中,在敏感数据的类型属性真正赋值时,传入任意类型指针,以使用Xcode断点或底部属性查看器进行访问时显示为任意类型。
优选的,所述步骤S4中,在SDK中部分需要使用敏感数据的类中,通过iOS分类category来声明一个作为桥梁的壳属性,所述壳属性为无实例变量的属性,只有setter或getter方法。
优选的,所述步骤S4中,在SDK中部分需要使用敏感数据的类中,声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。
优选的,所述步骤S4中,所述步骤S4中,基于类别的引用,通过单例对象的全局对象获取方法,从而获取单例对象,并返回单例对象所持有的敏感数据。
与现有技术相比,本发明具有以下优点。
采用本方案,将SDK内部的敏感数据存放于特定内存中,防止调试模式下通过内存偏移破解敏感数据;使用与敏感数据无关的关键词来定义敏感数据的命名,扰乱破解者理解和视线,转移注意力;传入任意类型指针,对敏感数据类型进行类型混淆,提升调试模式下的防破解性;对SDK中部分需要使用敏感数据的类,进行壳属性声明,并进行读方法的改造,防止运行时通过KVC破解敏感数据;实现了在调试模式中可以更全面的保护SDK内部敏感数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种针对iOS的SDK内部敏感数据的保护方法的步骤框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”、“第四”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本实施例提出一种针对iOS的SDK内部敏感数据的保护方法,参考图1,包括如下步骤:
步骤S1:将SDK内部的敏感数据存放于特定内存中;
步骤S2:使用与敏感数据无关的关键词来定义敏感数据的命名;
步骤S3:传入任意类型指针,对敏感数据类型进行类型混淆;
步骤S4:对SDK中部分需要使用敏感数据的类,进行壳属性声明,并进行读方法的改造。
在本实施例中,步骤S1中,在特定内存中创建一个不被任何对外公开类所持有或关联的单例对象,在该单例对象内部,创建相关敏感数据的属性,由单例对象来进行敏感数据持有与管理。不能在公开类中直接持有敏感数据,由于敏感数据被设置成 Private私有的,即默认不公开,不在头文件中展示。但实际上,程序被加载到主存后,和是否设置成Private私有的,根本没有区别。调用者、破解方,只需简单地通过内存偏移,就可以从一个公开的数据变量逐个偏移到私有的不公开的数据变量,即在主存中,一样是暴露了。因此将敏感数据放在特定内存中,调用者、破解方则无法通过内存偏移就到达敏感数据字段,由于敏感数据和公开的字段,在主存上根本不是连续的,所以有效地防止此类破解手法。
在本实施例中,特定内存,指外部没有直接渠道、直接桥梁可以访问到的一块内存。比如如果暴露了API接口,那外部可直接访问,那不是特定内存。又比如暴露了API接口,虽然不能直接访问,但可通过内存偏移来找寻到,那也不是特定内存。因此,特定内存指SDK使用者、调试者,无法直接访问到的一块内存。
在本实施例中,步骤S2中,对于敏感数据中的基础数据类型和非基础类型均使用无关的关键词定义命名。甚至让命名,故意引导对方错误理解到其他方向,而认为已完成破解,停止进一步的关注。
在本实施例中,步骤S3中,在敏感数据的类型属性真正赋值时,传入任意类型指针,以使用Xcode断点或底部属性查看器进行访问时显示为任意类型。比如,正常下本应定义为PLVData类型的属性,可在真正赋值时,传入一个NSString字符串类型,则当使用Xcode断点或底部属性查看器进行访问时,显示并非PLVData类型,而是NSString字符串类型,以达到混淆视听的效果,提升破解难度。对于任意指针类型,只要是个类型,它的指针都一样是8个字节(32位机器则4个字节;64位机器则8个字节)。
在本实施例中,步骤S4中,在SDK中部分需要使用敏感数据的类中,通过iOS 分类category 来声明一个作为桥梁的壳属性,所述壳属性为无实例变量的属性,只有setter或getter方法。步骤S1至步骤S3数据的保护之后,需要考虑 SDK内其他安全的自有的类,在公开的类中,由于壳属性,不存在内存偏移的可能性,因为它没有实例变量,根本没东西可偏移到达。它没有实例变量,因此接收到 KVC 调用时会失败。但没有实例变量,如何保存敏感数据。方式就是直接访问单例中的敏感数据,即壳属性不负责管理数据,但可作为访问数据的桥梁。让SDK内部的其他合法类,继续正常访问敏感数据。
在本实施例中,步骤S4中,在SDK中部分需要使用敏感数据的类中,声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。
在本实施例中,步骤S4中,基于类别的引用,通过单例对象的全局对象获取方法,从而获取单例对象,并返回单例对象所持有的敏感数据。
在本实施例中,声明一个与getter方法同名的读方法,则起到了覆盖原getter方法的效用。在新增的同名方法内部进行重写,新增返回敏感数据的逻辑,基于类别的引用,可通过单例对象的全局对象获取方法,获取到单例对象,并返回单例对象所持有的敏感数据。从而使得在SDK中部分需要使用敏感数据的类中,仍可便捷读取敏感数据。
在本实施例中,如保护播放器ID(指针类型),避免被改了导致数据上传错误而影响计费。步骤如下:
第一,在特定内存中构建单例对象,将敏感数据存入,保证内存在独立区域;
第二,对于单例对象中的敏感数据使用命名混淆 + 类型混淆,原本应该是NSString * 字符串类型,即 @property (nonatomic, copy) NSString *livePlaybackPlayerId;但实际上,为了保护,使用了 NSData * 数据类型,且命名修改,即@property (nonatomic, copy) NSData * lppi;
读取 NSString * playerid = [PLVSF sharedInstance].lppi;
写入修改 [PLVSFsharedInstance].lppi = @“1234”;
第三,在 PLVLivePlaybackPlayer(使用播放器ID的类),中定义壳属性。定义方式是 新建一个 PLVLivePlaybackPlayer+SF.h 的 category类别,来h文件中定义壳属性,@property (nonatomic, copy) NSData * lppi;此壳属性的类型、命名,也可以写无关关键词,来混淆。如 @property (nonatomic, copy) NSDate * llhh;回到PLVLivePlaybackPlayer 类中,开始做读方法的改造,新增类别的引用,#import "PLVLivePlaybackPlayer+SF.h",并进行 Getter 读方法的改造,针对 - (NSDate *)llhh{ } 进行改造,内部新增代码return [PLVSF sharedInstance].lppi;则PLVLivePlaybackPlayer 仍然可以便捷地通过 self.llhh 进行播放器ID的读取使用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:包括如下步骤:
步骤S1:将SDK内部的敏感数据存放于特定内存中;
步骤S2:使用与敏感数据无关的关键词来定义敏感数据的命名;
步骤S3:传入任意类型指针,对敏感数据类型进行类型混淆;
步骤S4:对SDK中部分需要使用敏感数据的类,进行壳属性声明,并进行读方法的改造。
2.根据权利要求1所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S1中,在特定内存中创建一个不被任何对外公开类所持有或关联的单例对象,在该单例对象内部,创建相关敏感数据的属性,由单例对象来进行敏感数据持有与管理。
3.根据权利要求2所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S2中,对于敏感数据中的基础数据类型和非基础类型均使用与敏感数据无关的关键词定义命名。
4.根据权利要求3所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S3中,在敏感数据的类型属性真正赋值时,传入任意类型指针,以使用Xcode断点或底部属性查看器进行访问时显示为任意类型。
5.根据权利要求4所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S4中,在SDK中部分需要使用敏感数据的类中,通过iOS分类category来声明一个作为桥梁的壳属性,所述壳属性为无实例变量的属性,只有setter或getter方法。
6.根据权利要求5所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S4中,在SDK中部分需要使用敏感数据的类中,声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。
7.根据权利要求6所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S4中,基于类别的引用,通过单例对象的全局对象获取方法,从而获取单例对象,并返回单例对象所持有的敏感数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211487227.4A CN115525879B (zh) | 2022-11-25 | 2022-11-25 | 一种针对iOS的SDK内部敏感数据的保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211487227.4A CN115525879B (zh) | 2022-11-25 | 2022-11-25 | 一种针对iOS的SDK内部敏感数据的保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115525879A true CN115525879A (zh) | 2022-12-27 |
CN115525879B CN115525879B (zh) | 2023-04-07 |
Family
ID=84705244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211487227.4A Active CN115525879B (zh) | 2022-11-25 | 2022-11-25 | 一种针对iOS的SDK内部敏感数据的保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525879B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075228A1 (en) * | 2004-06-22 | 2006-04-06 | Black Alistair D | Method and apparatus for recognition and real time protection from view of sensitive terms in documents |
US20080163382A1 (en) * | 2007-01-03 | 2008-07-03 | International Business Machines Corporation | Method and system for protecting sensitive data in a program |
US20110173676A1 (en) * | 2005-03-16 | 2011-07-14 | Dt Labs, Llc | System, Method and Apparatus for Electronically Protecting Data and Digital Content |
US20120204260A1 (en) * | 2011-02-03 | 2012-08-09 | International Business Machines Corporation | Controlling access to sensitive data based on changes in information classification |
CN106126981A (zh) * | 2016-08-30 | 2016-11-16 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
US20180107838A1 (en) * | 2016-10-13 | 2018-04-19 | Commvault Systems, Inc. | Data protection within an unsecured storage environment |
CN107977553A (zh) * | 2017-12-25 | 2018-05-01 | 中国电子产品可靠性与环境试验研究所 | 移动应用程序的安全加固的方法及装置 |
WO2018175212A1 (en) * | 2017-03-23 | 2018-09-27 | Microsoft Technology Licensing, Llc | Obfuscation of user content in structured user data files |
US20210349698A1 (en) * | 2020-05-07 | 2021-11-11 | Microsoft Technology Licensing, Llc | Source code text replacement by example |
-
2022
- 2022-11-25 CN CN202211487227.4A patent/CN115525879B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075228A1 (en) * | 2004-06-22 | 2006-04-06 | Black Alistair D | Method and apparatus for recognition and real time protection from view of sensitive terms in documents |
US20110173676A1 (en) * | 2005-03-16 | 2011-07-14 | Dt Labs, Llc | System, Method and Apparatus for Electronically Protecting Data and Digital Content |
US20080163382A1 (en) * | 2007-01-03 | 2008-07-03 | International Business Machines Corporation | Method and system for protecting sensitive data in a program |
US20120204260A1 (en) * | 2011-02-03 | 2012-08-09 | International Business Machines Corporation | Controlling access to sensitive data based on changes in information classification |
CN106126981A (zh) * | 2016-08-30 | 2016-11-16 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
US20180107838A1 (en) * | 2016-10-13 | 2018-04-19 | Commvault Systems, Inc. | Data protection within an unsecured storage environment |
WO2018175212A1 (en) * | 2017-03-23 | 2018-09-27 | Microsoft Technology Licensing, Llc | Obfuscation of user content in structured user data files |
CN107977553A (zh) * | 2017-12-25 | 2018-05-01 | 中国电子产品可靠性与环境试验研究所 | 移动应用程序的安全加固的方法及装置 |
US20210349698A1 (en) * | 2020-05-07 | 2021-11-11 | Microsoft Technology Licensing, Llc | Source code text replacement by example |
Also Published As
Publication number | Publication date |
---|---|
CN115525879B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8789188B2 (en) | Method and apparatus for automatic determination of authorization requirements while editing or generating code | |
CN107729752B (zh) | 一种勒索软件防御方法及系统 | |
US20150220739A1 (en) | Global Variable Security Analysis | |
US9690945B2 (en) | Security analysis using relational abstraction of data structures | |
US20040243882A1 (en) | System and method for fault injection and monitoring | |
US20090150899A1 (en) | System and methods for dependent trust in a computer system | |
CN105933163A (zh) | 一种实时分布式调试跟踪方法及系统 | |
US9251038B2 (en) | Registration-based remote debug watch and modify | |
CN111400757B (zh) | 防止安卓第三方库中native代码泄露用户隐私的方法 | |
CN106372465A (zh) | 一种动态链接库安全管理方法、系统和电子设备 | |
US10681076B1 (en) | Automated security analysis of software libraries | |
CN106201893A (zh) | 一种Java字节码调试器及调试方法 | |
CN106130959A (zh) | 恶意应用识别方法及装置 | |
CN115525879B (zh) | 一种针对iOS的SDK内部敏感数据的保护方法 | |
Jiao et al. | Executable operational semantics of Solidity | |
US10423618B2 (en) | Method and system for enforcing user policy on database records | |
US11416623B2 (en) | Automatic penetration testing enablement of regression buckets | |
Kundu et al. | A UML model-based approach to detect infeasible paths | |
CN109902500B (zh) | 一种通过链接库实现业务调用数据安全的方法及系统 | |
Jain et al. | Sniffdroid: Detection of inter-app privacy leaks in android | |
US8949421B2 (en) | Techniques for discovering database connectivity leaks | |
CN115174158B (zh) | 基于多云管理平台的云产品配置检查方法 | |
Franken et al. | A bug's life: analyzing the lifecycle and mitigation process of content security policy bugs | |
US20080155347A1 (en) | Filesystem directory debug log | |
EP4428679A1 (en) | Techniques for implementing a software application management framework |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |