【教程】 iOS混淆加固原理篇

目录

摘要

引言

正文

1. 加固的缘由

2. 编译过程

3. 加固类型

1) 字符串混淆

2) 类名、方法名混淆

3) 程序结构混淆加密

4) 反调试、反注入等一些主动保护策略

4. 逆向工具

5. OLLVM

6. IPA guard

7. 代码虚拟化

总结


摘要

本文介绍了iOS应用程序混淆加固的缘由,编译过程以及常见的加固类型和逆向工具。详细讨论了字符串混淆、类名、方法名混淆、程序结构混淆加密等加固类型,并介绍了常见的逆向工具和代码虚拟化技术。

在这里插入图片描述

引言

在iOS开发中,为了保护应用程序免受逆向工程和反编译的威胁,需要对应用程序进行混淆加固。本文将从混淆加固的缘由、编译过程、加固类型和逆向工具等方面展开讨论。

正文

1. 加固的缘由

在越狱机型上,应用程序的可执行文件容易被获取并进行反编译,导致数据泄露和程序被篡改等安全问题。iOS应用程序混淆加固的主要缘由包括但不限于:

  • 任意读写文件系统数据

  • HTTP(S)实时被监测

  • 重新打包ipa

  • 暴露的函数符号

  • 未加密的静态字符

  • 篡改程序逻辑控制流

  • 拦截系统框架API

  • 逆向加密逻辑

  • 跟踪函数调用过程(objc_msgSend)

  • 可见视图的具体实现

  • 伪造设备标识

  • 可用的URL schemes

  • runtime任意方法调用

2. 编译过程

使用Xcode构建iOS程序的编译过程包括预处理、符号化、宏定义展开、语法和语义分析、生成代码和优化等步骤。Objective-C采用GCC,而Swift采用swift()作为前端,二者都使用LLVM作为编译器后端。

3. 加固类型

iOS应用程序混淆加固主要包括字符串混淆、类名、方法名混淆、程序结构混淆加密和一些主动保护策略,如反调试、反注入等。

1) 字符串混淆

对应用程序中使用到的字符串进行加密,保证源码被逆向后不能看出字符串的直观含义。

2) 类名、方法名混淆

对应用程序的方法名和方法体进行混淆,保证源码被逆向后很难明白其真正功能。

3) 程序结构混淆加密

对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低。

4) 反调试、反注入等一些主动保护策略

增大破解者调试、分析App的门槛。

4. 逆向工具

常见的iOS逆向工具包括ipa guard、Hopper、IDA等,它们可以被用于反汇编、反编译和调试32位/64位英特尔处理器的Mac、Linux、Windows和iOS可执行程序。

5. OLLVM

OLLVM是基于LLVM进行编写的一个开源项目,主要用于对前端语言生成的中间代码进行混淆。它包含控制流扁平化、指令替换和虚假控制流程等功能,用于增加代码的混淆度。

6. IPA guard

IPA guard 是一个基于Obfuscator-LLVM对Xcode的适配的工具,用于对iOS应用程序进行混淆加固。

在这里插入图片描述

7. 代码虚拟化

代码虚拟化是一种基于虚拟机的代码保护技术,通过自定义字节码替换原生指令,并由程序中的解释器来解释执行,以增加程序的保护性和防止恶意代码对系统造成破坏。

总结

本文介绍了iOS应用程序混淆加固的原理和常见方法,包括编译过程、加固类型、逆向工具和代码虚拟化技术。通过合理选择加固方法和工具,可以提高iOS应用程序的安全性,减少被逆向工程和反编译的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491958.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍 PIL+IPython.display+mtcnn for 音视频读取、标注

1. nn.NLLLoss是如何计算误差的? nn.NLLLoss是负对数似然损失函数,用于多分类问题中。它的计算方式如下:首先,对于每个样本,我们需要将其预测结果通过softmax函数转换为概率分布。softmax函数可以将一个向量映射为一个概率分布&…

Python Web开发记录 Day3:BootStrap

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 三、BootStrap1、BootStrap-初体验2、BootStrap…

Linux之vim的使用详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.vim简介 二.vim的基本概念 三.vim的基本操作 3.1准备 …

智能SQL生成:后端技术与LLM的完美结合

文章目录 引言一、什么是大模型二、为什么选择LLM三、开发技术说明四、系统架构说明五、编码实战1. Maven2. 讯飞大模型配置类3. LLM相关的封装4. 编写LLM的service5. 编写controller6. 运行测试 六、总结 引言 本篇文章主要是关于实现一个类似Chat2DB的根据自然语言生成SQL的…

国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托--校园招聘历年题库和真题

作为准备参加国有企业校园招聘的应聘者,掌握相关企业的招聘试题资料是至关重要的。国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托等知名国有企业在中国经济中扮演着重要的角色,每年都会举行校园招聘活动,吸引大批毕业生和应…

【Linux】CentOS 7搭建Postfix邮件服务器

先说明一下,此文章是参考别的大神写的文章,修改和整理出来的。 本来作为自己的笔记,最后想了一下,还是分享给大家。 一、实验环境 硬件环境: Linux服务器一台,IP地址:192.168.17.200&#xff…

【人脸朝向识别与分类预测】基于PNN神经网络

课题名称:基于PNN神经网络的人脸朝向识别分类 版本日期:2024-02-20 运行方式:直接运行PNN0503.m文件 代码获取方式:私信博主或 QQ:491052175 模型描述: 采集到一组人脸朝向不同角度时的图像,图像来自不…

ThreadPoolExecutor原理详情讲解

一、简介 ThreadPoolExecutor是Java中的一个类,它实现了ExecutorService接口,用于创建一个线程池。线程池是一种线程使用模式,它维护着一组线程,等待监督管理者分配可以并发执行的任务。ThreadPoolExecutor的主要目标是减少在创建…

Animated Trees Package

此软件包包含30个高质量的全动画树木。所有模型都是用Blender 3D制作的。 要安装URP或HDRP材质,请选择主文件夹中的“URP Materials”或“HDRP Materials”包文件,并导入所有文件。 下载:​​Unity资源商店链接资源下载链接 提取码:3gng 效果图:

正大国际:高频交易可以做吗?

第一种:抄单交易 这种做法也可以称之无脑型抄单,就是一旦进场之后,几秒钟内,不管是盈利还是亏损就要立即出来。交易时间一般是2-5秒,每天可能要做上几百次,或者上千次来回交易。这种做法对品种有要求&…

纯国产轻量化数字孪生:智慧城市、智慧工厂、智慧校园、智慧社区。。。

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础,以降本增效为目标,支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…

腾轩科技传媒分享创建舞蹈家百度百科词条流程

近年来,随着互联网的不断发展,人们获取信息的方式也逐渐多样化,其中百度百科作为一个综合性的知识平台,为人们提供了一个方便快捷的途径来获取各种知识和信息。在百度百科上,每个人都有可能成为一个有影响力的人&#…