CN115525879B - 一种针对iOS的SDK内部敏感数据的保护方法 - Google Patents

一种针对iOS的SDK内部敏感数据的保护方法 Download PDF

Info

Publication number
CN115525879B
CN115525879B CN202211487227.4A CN202211487227A CN115525879B CN 115525879 B CN115525879 B CN 115525879B CN 202211487227 A CN202211487227 A CN 202211487227A CN 115525879 B CN115525879 B CN 115525879B
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.)
Active
Application number
CN202211487227.4A
Other languages
English (en)
Other versions
CN115525879A (zh
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.)
Yifang Information Technology Co ltd
Original Assignee
Yifang 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 Yifang Information Technology Co ltd filed Critical Yifang Information Technology Co ltd
Priority to CN202211487227.4A priority Critical patent/CN115525879B/zh
Publication of CN115525879A publication Critical patent/CN115525879A/zh
Application granted granted Critical
Publication of CN115525879B publication Critical patent/CN115525879B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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中部分需要使用敏感数据的类,通过iOS分类category来声明一个作为桥梁的只有setter或getter方法的无实例变量的属性,并声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。在调试模式中可以更全面的保护SDK内部敏感数据。

Description

一种针对iOS的SDK内部敏感数据的保护方法
技术领域
本发明涉及数据安全领域,具体涉及一种针对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中部分需要使用敏感数据的类,通过iOS分类category来声明一个作为桥梁的只有setter或getter方法的无实例变量的属性,并声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。
优选的,所述步骤S1中,在特定内存中创建一个不被任何对外公开类所持有或关联的单例对象,在该单例对象内部,创建相关敏感数据的属性,由单例对象来进行敏感数据持有与管理。
优选的,所述步骤S2中,对于敏感数据中的基础数据类型和非基础类型均使用无关的关键词定义命名。
优选的,所述步骤S3中,在敏感数据的类型属性真正赋值时,传入任意类型指针,以使用Xcode断点或底部属性查看器进行访问时显示为任意类型。
优选的,所述步骤S4中,所述步骤S4中,基于类别的引用,通过单例对象的全局对象获取方法,从而获取单例对象,并返回单例对象所持有的敏感数据。
与现有技术相比,本发明具有以下优点。
采用本方案,将SDK内部的敏感数据存放于特定内存中,防止调试模式下通过内存偏移破解敏感数据;使用与敏感数据无关的关键词来定义敏感数据的命名,扰乱破解者理解和视线,转移注意力;传入任意类型指针,对敏感数据类型进行类型混淆,提升调试模式下的防破解性;对SDK中部分需要使用敏感数据的类,进行壳属性声明,并进行读方法的改造,防止运行时通过KVC破解敏感数据;实现了在调试模式中可以更全面的保护SDK内部敏感数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种针对iOS的SDK内部敏感数据的保护方法的步骤框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”、“第四”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本实施例提出一种针对iOS的SDK内部敏感数据的保护方法,参考图1,包括如下步骤:
步骤S1:将SDK内部的敏感数据存放于外部没有直接渠道、直接桥梁可以访问到的特定内存中;
步骤S2:使用与敏感数据无关的关键词来定义敏感数据的命名;
步骤S3:传入任意类型指针,对敏感数据类型进行类型混淆;
步骤S4:对SDK中部分需要使用敏感数据的类,通过iOS分类category来声明一个作为桥梁的只有setter或getter方法的无实例变量的属性,并声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。
在本实施例中,步骤S1中,在特定内存中创建一个不被任何对外公开类所持有或关联的单例对象,在该单例对象内部,创建相关敏感数据的属性,由单例对象来进行敏感数据持有与管理。不能在公开类中直接持有敏感数据,由于敏感数据被设置成 Private私有的,即默认不公开,不在头文件中展示。但实际上,程序被加载到主存后,和是否设置成Private私有的,根本没有区别。调用者、破解方,只需简单地通过内存偏移,就可以从一个公开的数据变量逐个偏移到私有的不公开的数据变量,即在主存中,一样是暴露了。因此将敏感数据放在特定内存中,调用者、破解方则无法通过内存偏移就到达敏感数据字段,由于敏感数据和公开的字段,在主存上根本不是连续的,所以有效地防止此类破解手法。
在本实施例中,特定内存,指外部没有直接渠道、直接桥梁可以访问到的一块内存。比如如果暴露了API接口,那外部可直接访问,那不是特定内存。又比如暴露了API接口,虽然不能直接访问,但可通过内存偏移来找寻到,那也不是特定内存。因此,特定内存指SDK使用者、调试者,无法直接访问到的一块内存。
在本实施例中,步骤S2中,对于敏感数据中的基础数据类型和非基础类型均使用无关的关键词定义命名。甚至让命名,故意引导对方错误理解到其他方向,而认为已完成破解,停止进一步的关注。
在本实施例中,步骤S3中,在敏感数据的类型属性真正赋值时,传入任意类型指针,以使用Xcode断点或底部属性查看器进行访问时显示为任意类型。比如,正常下本应定义为PLVData类型的属性,可在真正赋值时,传入一个NSString字符串类型,则当使用Xcode断点或底部属性查看器进行访问时,显示并非PLVData类型,而是NSString字符串类型,以达到混淆视听的效果,提升破解难度。对于任意指针类型,只要是个类型,它的指针都一样是8个字节(32位机器则4个字节;64位机器则8个字节)。
在本实施例中,步骤S1至步骤S3数据的保护之后,需要考虑 SDK内其他安全的自有的类,在公开的类中,由于壳属性,不存在内存偏移的可能性,因为它没有实例变量,根本没东西可偏移到达。它没有实例变量,因此接收到 KVC 调用时会失败。但没有实例变量,如何保存敏感数据。方式就是直接访问单例中的敏感数据,即壳属性不负责管理数据,但可作为访问数据的桥梁。让SDK内部的其他合法类,继续正常访问敏感数据。
在本实施例中,步骤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 [PLVSFsharedInstance].lppi;则PLVLivePlaybackPlayer 仍然可以便捷地通过 self.llhh 进行播放器ID的读取使用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:包括如下步骤:
步骤S1:将SDK内部的敏感数据存放于外部没有直接渠道、直接桥梁可以访问到的特定内存中;
步骤S2:使用与敏感数据无关的关键词来定义敏感数据的命名;
步骤S3:传入任意类型指针,对敏感数据类型进行类型混淆;
步骤S4:对SDK中部分需要使用敏感数据的类,通过iOS分类category来声明一个作为桥梁的只有setter或getter方法的无实例变量的属性,并声明一个与getter方法同名的读方法进行方法的覆盖,在新增的同名的读方法内部进行重写,新增返回敏感数据的逻辑,新增类别的引用,完成读方法的改造。
2.根据权利要求1所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S1中,在特定内存中创建一个不被任何对外公开类所持有或关联的单例对象,在该单例对象内部,创建相关敏感数据的属性,由单例对象来进行敏感数据持有与管理。
3.根据权利要求2所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S2中,对于敏感数据中的基础数据类型和非基础类型均使用与敏感数据无关的关键词定义命名。
4.根据权利要求3所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S3中,在敏感数据的类型属性真正赋值时,传入任意类型指针,以使用Xcode断点或底部属性查看器进行访问时显示为任意类型。
5.根据权利要求4所述的一种针对iOS的SDK内部敏感数据的保护方法,其特征在于:所述步骤S4中,基于类别的引用,通过单例对象的全局对象获取方法,从而获取单例对象,并返回单例对象所持有的敏感数据。
CN202211487227.4A 2022-11-25 2022-11-25 一种针对iOS的SDK内部敏感数据的保护方法 Active CN115525879B (zh)

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 CN115525879A (zh) 2022-12-27
CN115525879B true 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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977553A (zh) * 2017-12-25 2018-05-01 中国电子产品可靠性与环境试验研究所 移动应用程序的安全加固的方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
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
US8261058B2 (en) * 2005-03-16 2012-09-04 Dt Labs, Llc System, method and apparatus for electronically protecting data and digital content
US9021605B2 (en) * 2007-01-03 2015-04-28 International Business Machines Corporation Method and system for protecting sensitive data in a program
US8800031B2 (en) * 2011-02-03 2014-08-05 International Business Machines Corporation Controlling access to sensitive data based on changes in information classification
CN106126981B (zh) * 2016-08-30 2019-04-02 电子科技大学 基于虚拟函数表替换的软件安全防护方法
US10540516B2 (en) * 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment
US10380355B2 (en) * 2017-03-23 2019-08-13 Microsoft Technology Licensing, Llc Obfuscation of user content in structured user data files
US11327728B2 (en) * 2020-05-07 2022-05-10 Microsoft Technology Licensing, Llc Source code text replacement by example

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977553A (zh) * 2017-12-25 2018-05-01 中国电子产品可靠性与环境试验研究所 移动应用程序的安全加固的方法及装置

Also Published As

Publication number Publication date
CN115525879A (zh) 2022-12-27

Similar Documents

Publication Publication Date Title
US8789188B2 (en) Method and apparatus for automatic determination of authorization requirements while editing or generating code
US9274768B2 (en) Runtime code hooking for print driver and functionality testing
US9075997B2 (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
US9251038B2 (en) Registration-based remote debug watch and modify
Barth et al. Cross-Origin JavaScript Capability Leaks: Detection, Exploitation, and Defense.
CN111400757B (zh) 防止安卓第三方库中native代码泄露用户隐私的方法
WO2022100063A1 (zh) 智能合约的日志生成及保存方法、装置、设备和存储介质
US10061940B2 (en) Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
CN115525879B (zh) 一种针对iOS的SDK内部敏感数据的保护方法
CN109902500B (zh) 一种通过链接库实现业务调用数据安全的方法及系统
US11416623B2 (en) Automatic penetration testing enablement of regression buckets
Kundu et al. A UML model-based approach to detect infeasible paths
CN114996338A (zh) 远程证明报告的处理方法、数据库服务端和数据库客户端
US10872043B2 (en) Systems and methods for integrity checking of code or data in a mixed security system while preserving confidentiality
Majumdar et al. Static provenance verification for message passing programs
Avijit et al. Binary rewriting and call interception for efficient runtime protection against buffer overflows
CN111625784B (zh) 一种应用的反调试方法、相关装置及存储介质
EP4428679A1 (en) Techniques for implementing a software application management framework
CN110569644A (zh) 调用请求的处理、功能函数的调用方法、装置及设备
Ene et al. Output-sensitive information flow analysis
US20210303698A1 (en) Code cleanup tool in business applications
JP2012164098A (ja) エントリ書換装置及びエントリ書換プログラム

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