摘要:本文探讨了iOS平台下的安全保护,以及几种常见的加固方法,包括字符串加密、类名方法名混淆、程序代码混淆和加入安全SDK等。通过这些方法,我们可以有效地提高iOS应用的安全性。

引言:

随着智能手机的普及,对移动应用的安全性要求越来越高。而在iOS平台上,相比于Android平台,能够进行的安全保护措施相对较少。只要手机没有越狱,基本上来说是比较安全的。但是一旦手机越狱,可能会带来一些安全方面的问题。因此,对于iOS应用的安全保护仍然十分必要。

iOS应用的加固产品相对较少,但目前已经有一些关于iOS加固的产品做得比较好。本文将介绍几种常见的iOS加固方法,以及一些相关的加固工具和产品。

最开始关于爱加密首创的IOS加密,个人感觉这只是一个噱头而已,因为没有看到具体的工具以及加固应用,所以也不知道它的效果怎么样了。

后来在看雪上面看到一个 有关于IOS加密的工具,但是感觉用起来太麻烦了,而且让产品方也不是很放心,要替换xcode默认的编译器。

不久前看到偶然看到一个IPA Guard的应用 https://www.ipaguard.com/也下下来试用了一下,感觉要比上面两个从使用上方面了许多,而且考虑的东西也是比较多的,最后加固后还有重签名功能。

IPA guard主界面:

重签名界面:


好了,看了别人做的一些工具,这里大概说下都有哪些加固方法以及大概的实现吧,本人也是刚接触这个方面不就,可能分析的深度没有那么深入,大家就随便听听吧。

现在的加固工具总的来说都是从以下几个方面来做的:

一、字符串加密:

**现状:**对于字符串来说,程序里面的明文字符串给静态分析提供了极大的帮助,比如说根据界面特殊字符串提示信息,从而定义到程序代码块,或者获取程序使用的一些网络接口等等。

**加固:**对程序中使用到字符串的地方,首先获取到使用到的字符串,当然要注意哪些是能加密,哪些不能加密的,然后对字符串进行加密,并保存加密后的数据,再在使用字符串的地方插入解密算法,这样就很好的保护了明文字符串。

二、类名方法名混淆

**现状:**目前市面上的IOS应用基本上是没有使用类名方法名混淆的,所以只要我们使用class-dump把应用的类和方法定义dump下来,然后根据方法名就能够判断很多程序的处理函数是在哪。从而进行hook等操作。

**加固:**对于程序中的类名方法名,自己产生一个随机的字符串来替换这些定义的类名和方法名,但是不是所有类名,方法名都能替换的,要过滤到系统有关的函数以及类,可以参考下开源项目: https://github.com/Polidea/ios-class-guard

三、程序代码混淆

**现状:**目前的IOS应用找到可执行文件然后拖到Hopper

**加固:**可以基于Xcode使用的编译器clang,然后在中间层也就是IR实现自己的一些混淆处理,比如加入一些无用的逻辑块啊,代码块啊,以及加入各种跳转但是又不影响程序原有的逻辑。

四、加入安全SDK

**现状:**目前大多数IOS应用对于简单的反调试功能都没有,更别说注入检测,以及其它的一些检测了。

**加固:**加入SDK,包括多处调试检测,注入检测,越狱检测,关键代码加密,防篡改等等功能。并提供接口给开发者处理检测结果。

总结:

虽然上述方法可以有效地提高iOS应用的安全性,但还有许多其他方面可以进行加固保护。相信随着对iOS应用安全意识的增加,我们将会采取更多的措施来保护自己的应用。

iOS安全加固探讨:代码混淆、类名方法名混淆等方法的更多相关文章

  1. java反射拼接方法名动态执行方法

    近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的.但是每个code确实对应一个方法的. code的值有很多个,自己又不想做ifelse或者s ...

  2. c#输入方法名来调用方法(反射)

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  3. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  4. 牛客网Java刷题知识点之方法覆盖(方法重写)和方法重载的区别

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=6 ...

  5. react-native-pg-utils(对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法.)

    react-native-pg-utils 对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法. 每次新建react-native项目之后都会发现有一些很常用的方法在这 ...

  6. iOS书摘之编写高质量iOS与OS X代码的52个有效方法

    来自<Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法>一书的摘要总结 一.熟悉Objective-C 了解Objective-C语言的起源 ...

  7. 第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法

    第一章 熟悉Objective -C   编写高质量iOS与OS  X代码的52 个有效方法   第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...

  8. 【读书笔记】--《编写高质量iOS与OS X代码的52个有效方法》

    1.Objective-C 起源: 在 C 语言基础上添加了面向对象特性,是 C 语言的超集.Objective-C 由 SmallTalk 语言演变过来,使用消息结构,运行环境由运行环境决定. OC ...

  9. 【iOS】swift 保持代码优美的10个方法

    这篇Swift风格指南与你看到的其他的指南有所不同,此篇指南主要焦点集中在打印和Web展示的可读写上.我们创建此篇风格指南的目的,是为了让我们的图书.教程以及初学者套件中的代码保持优美和一致,即使我们 ...

  10. M-Renamer方法名修改器,iOS项目方法名重构,Objective-C/Swift,代码模型预判,减少误改的机率,替换速度更快,可视化操作,傻瓜式操作,一键操作,引用处自动修改,马甲包的福音

    M-Renamer M-Renamer(Method-Name-Renamer)类方法名修改器,采用链式解析头文件,代码模型预判,减少误改的机率,替换速度更快:可以解析整个项目大多数类的方法,可视化操 ...

随机推荐

  1. 【已解决】【Tensorflow2.12.0版本以后合并CPU和GPU版】Tensorflow-gpu==2.12.0 安装失败解决办法

    直接上解决方式,需要知道原因的看后文. 直接安装 tensroflow,从 2022 年 12 月起 tensorflow-gpu 已经合并到 tensorflow 包中了 pip install t ...

  2. [ABC264Ex] Perfect Binary Tree

    Problem Statement We have a rooted tree with $N$ vertices numbered $1,2,\dots,N$. The tree is rooted ...

  3. 《深入理解 FFmpeg》第一章彩色插图汇总

    layout: post title: "<深入理解 FFmpeg>第一章彩色插图" tags: - "FFmpeg" 这是<深入理解 FFm ...

  4. Java核心知识体系8:Java如何保证线程安全性

    Java核心知识体系1:泛型机制详解 Java核心知识体系2:注解机制详解 Java核心知识体系3:异常机制详解 Java核心知识体系4:AOP原理和切面应用 Java核心知识体系5:反射机制详解 J ...

  5. Gradle导致Lombok不生效问题

    现象 从debug看是可以查询到数据的,但是返回起前端是没有数据的 解决办法 // 引入lombok注解处理器 annotationProcessor,不然lombok不会生效 annotationP ...

  6. LeetCode132:分割回文串(DP、回文)

    解题思路:有两个问点:1.如何快速当前字符串哪些的字串是回文:2.如何组合这些字串达到分割次数最少 针对问点1,可以开辟一个二维布尔数组 a[][],a[i][j]表示以索引i为起点,j为结束位置的字 ...

  7. Golang实现JAVA虚拟机-运行时数据区

    原文链接:https://gaoyubo.cn/blogs/8ae1f4ca.html 前置 Golang实现JAVA虚拟机-解析class文件 一.运行时数据区概述 JVM学习: JVM-运行时数据 ...

  8. 如何使用libgdx做游戏01---libgdx的安装

    一般来说使用这个工具做游戏的都是java开发者,这种技术在国外勉强算是必学的,而在国内却很少有这方面的知识. 接下来,我将讲解如何安装libgdx,也算是简单的libgdx入门 工具:idea.jdk ...

  9. 请注意,你的 Pulsar 集群可能有删除数据的风险

    在上一篇 Pulsar3.0新功能介绍中提到,在升级到 3.0 的过程中碰到一个致命的问题,就是升级之后 topic 被删除了. 正好最近社区也补充了相关细节,本次也接着这个机会再次复盘一下,毕竟这是 ...

  10. Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)

    Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战) 导入pom依赖 编写导出模板 @ApiOperation("导出xxx模板") @ ...