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

news2025/1/13 2:56:24

摘要

本文介绍了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.coloradmin.cn/o/1471132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab|基于DistFlow潮流的配电网故障重构(输入任意线路)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序采用适用于辐射状网络的DistFlow潮流模型,可输入任意故障线路编号,得到优化重构结果。这个程序是配电网故障重构可视化matlabyalmip的升级版,原来的程序是以电压质量作…

用39块钱的全志V851se视觉开发板做了个小相机,还可以物品识别、自动追焦!

用39块钱的V851se视觉开发板做了个小相机。 可以进行物品识别、自动追焦! 这个超低成本的小相机是在V851se上移植使用全志在线开源版本的Tina Linux与OpenCV框架开启摄像头拍照捕获视频,并结合NPU实现Mobilenet v2目标分类识别以及运动追踪等功能…并最终…

CentOS删除除了最近5个JAR程序外的所有指定Java程序

帮我写一个shell脚本,ps -eo pid,lstart,cmd --sort=-start_time | grep "pgz-admin"查到的结果,返回的所有进程PID,第六个之上的,全部kill 当然,你可以创建一个简单的Shell脚本来完成这个任务。以下是一个例子: #!/bin/bash# 获取包含 "pgz-admin"…

SSM框架学习笔记07 | Spring MVC入门

文章目录 1. HTTP协议2. Spring MVC2.1. 三层架构2.2. MVC(解决表现层的问题)2.3. 核心组件 3. Thymeleaf3.1. 模板引擎3.2. Thymeleaf3.3. 常用语法 代码 1. HTTP协议 网址:https://www.ietf.org/ (官网网址) https:…

什么是系统工程(字幕)37

0 00:00:00,740 --> 00:00:03,200 但是呢,我们往后面看 1 00:00:04,100 --> 00:00:08,920 刚才我们讲到那个说,应该是组合关系 2 00:00:08,920 --> 00:00:09,522 对吧 3 00:00:09,522 --> 00:00:11,330 不是泛化关系 4 00:00:12,520 --&…

JavaWeb 自己给服务器安装SQL Server数据库遇到的坑

之前买的虚拟主机免费送了一个SQL Server数据库,由于服务器提供商今年下架我用的那款虚拟主机产品,所以数据库也被收回了。我买了阿里云云服务器,但是没有数据库,于是自己装了一个SQL Server数据库,总结一下遇到的坑。…

JAVA毕业设计129—基于Java+Springboot+thymeleaf的物业管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootthymeleaf的物业管理系统(源代码数据库)129 一、系统介绍 本项目前后端分离,本系统分为管理员、小区管理员、用户三种角色 1、用户: 登…

栈和堆什么意思,Rust所有权机制又是什么

栈和堆什么意思 栈:存储基本数据类型和引用数据类型的指针引用(地址),基本数据类型占据固定大小的内存空间。 堆:存储引用数据类型的值,引用数据类型包括对象,数组和函数,在堆中,引用数据类型…

WhatsApp Business API入门:功能、收费、申请方法全解析

WhatsApp Business API是为企业量身打造的一种高级服务,它提供了一组编程接口(API),而不是一个可以直接操作的用户界面。与免费版的WhatsApp Business应用不同,WhatsApp Business API并不能在应用商店如App Store或Goo…

git之远程操作

一.分布式版本控制系统 分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕…

01背包问题:组合问题

01背包问题:组合问题 题目 思路 将nums数组分成left和right两组,分别表示相加和相减的两部分,则: left - right targetleft right sum 进而得到left为确定数如下,且left必须为整数,小数表示组合不存在&…

osmnx笔记:从OpenStreetMap中提取点和边的shp文件(FMM文件准备内容)

1 导入库 import osmnx as ox import time from shapely.geometry import Polygon import os import numpy as np 2 提取Openstreetmap 的graph Gox.graph_from_place(Huangpu,Shanghai,China,network_typedrive,simplifyTrue) ox.plot_graph(G) 3 提取graph中的点和边 gdf…

2/22作业

1.按位置插入 void insert_pos(seq_p L,datetype value,int pos) { if(LNULL) { printf("入参为空\n"); return; } if(seq_full(L)) { printf("表已满\n"); return; } if(pos>L->len|…

软考45-上午题-【数据库】-数据操纵语言DML

一、INSERT插入语句 向SQL的基本表中插入数据有两种方式: ①直接插入元组值 ②插入一个查询的结果值 1-1、直接插入元组值 【注意】: 列名序列是可选的,若是所有列都要插入数值,则可以不写列名序列。 示例: 1-2、插…

100天精通Python(实用脚本篇)——第117天:基于selenium实现反反爬策略之代码输入账号信息登录网站

文章目录 专栏导读1. 前言2. 实现步骤3. 基础补充4. 代码实战4.1 创建连接4.2 添加请求头伪装浏览器4.3 隐藏浏览器指纹4.4 最大化窗口4.5 启动网页4.6 点击密码登录4.7 输入账号密码4.8 点击登录按钮4.9 完整代码4.10 GIF动图展示 五、总结 专栏导读 🔥&#x1f5…

three中界面交互gui.js库的使用

gui.js库(可视化改变三维场景) dat.gui.js说白了就是一个前端js库,对HTML、CSS和JavaScript进行了封装,学习开发的时候,借助dat.gui.js可以快速创建控制三维场景的UI交互界面,你打开课件中案例源码体验一下就能感受到。 学习dat…

AWK Programing Language | 史上最全 awk 一本通

博客原文 文章目录 awk 工作模式语法格式内置变量格式化输出 printf模式匹配awk 算数运算条件语句循环语句字符串函数awk 常用选项awk 与 shell 中数组shell 中数组awk 中数组 脚本练习 awk 工作模式 与 sed 相同, 都是逐行处理 语法格式 awk ‘BEGIN{}pattern{commands}END{…

matlab倒立摆小车LQR控制动画

1、内容简介 略 54-可以交流、咨询、答疑 2、内容说明 略 摆杆长度为 L,质量为 m 的单级倒立摆(摆杆的质心在杆的中心处),小车的质量为 M。在水平方向施加控制力 u,相对参考系产生位移为 y。为了简化问题并且保其实质不变,忽…

[ffmpeg] x264 配置参数解析

背景 创建 x264 编码器后,其有一组默认的编码器配置参数,也可以根据需要修改参数,来满足编码要求。 具体参数 可修改的参数,比较多,这边只列举一些常用的。 获取可以配置的参数 方式1 查看 ffmpeg源码 libx264.c…

【JVM】聊聊JVM生产环境常见的OOM问题

对于JVM来说,因为划分有固定的区域来执行字节码文件,无外乎,出问题的,也就是按照对应分分区会有常见的OOM问题。 栈 对于栈来说,栈的主要作用就是用于方法的执行,方法调用入栈、方法调出出栈。但是如果我…