首页 > 其他分享 >【教程】 iOS混淆加固原理篇

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

时间:2024-02-26 10:22:59浏览次数:19  
标签:混淆 教程 加密 逆向 iOS 应用程序 原理篇 加固

 

摘要

本文介绍了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应用程序的安全性,减少被逆向工程和反编译的风险。

标签:混淆,教程,加密,逆向,iOS,应用程序,原理篇,加固
From: https://www.cnblogs.com/sdges/p/18033747

相关文章

  • iOS App 上架指南及关键建议
    引言上架AppStore是将iOS应用提交申请并上线的过程,旨在让应用在AppStore上展示,吸引用户并获取流量。本文将介绍iOS上架的整体流程,并提供一些建议和注意事项。 一、iOS上架的整体流程1.申请开发者账号首先,需要申请苹果的开发者账号。开发者账号分为个人账号、公司账号和......
  • 智能AI客服系统+企业专属AI知识库实现原理+配置教程
    企业专属AI知识库实现原理知识库是GPT用户咨询问题,调用文本转向量接口将问题转为向量数据,向量化搜索知识数据库,将相关知识文本整合后发送给GPT聊天补全接口 知识库服务主要基于以下两个接口:OpenAI聊天接口(/v1/chat/completions)OpenAI向量生成接口(/v1/embeddings......
  • Redis 教程
    Redis教程Redis概述Redis(RemoteDictionaryServer),即远程字典服务。是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把......
  • Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行
    前言:之前有网友说Mvc系列的教程对新手不友好,因此补充新手入门系列教程。在开始使用Taurus.Mvc 进行Web应用开发之前,建议可以观摩一下之前的文章:WebAPI系列教程因为两者的教程,有相通的部分,唯一的差别部分,在于Web应用涉及到UI界面。本系列的目录大纲为:Taurus.MVCWebMVC......
  • Flutter 和 RN 的iOS 打包部署
    前沿现在科技的发展,现在多端适配已经成为趋势, 关于打包和发布的文字描述进入项目目录:在终端中切换到ReactNative或者Flutter项目的根目录。打开Xcode项目:打开Xcode并在菜单中选择File->Open,然后选择ReactNative项目中的.xcworkspace文件。步骤2:配置Build......
  • 基于Python的地图绘制教程
    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括rasterio、geopandas、cartopy等,可通过pip等方式安装。1示例代码1.1导入相关模块importrasterioimportgeopandasasgpdimportnumpyasnpimportcartopy.crsasccrsimportmatplotlib.pyplot......
  • 3阶魔方还原教程
    还原过程黄心白色十字(拼顶层十字)确定中点和最下层一致并做成白心白色十字(拼底层十字)对齐固定中点与最下层中点一致翻转向下90度此时白色为底色置于最下层确定最下层与中心方块一致(拼底层角块全白)当第一层有白色混合棱角移到另外两色块中间使用右手公式(上左下右)......
  • pytest简易教程(33):pytest常用插件 - 多重校验(pytest-assume)
     pytest简易教程汇总,详见:https://www.cnblogs.com/uncleyong/p/17982846应用场景对同一用例,要执行多个断言,查看断言是否都成功哪怕某个断言失败,后面断言依然能执行(assert实现不了) 插件安装pipinstall pytest-assume 使用方式pytest.assume(表达式)如果使用assert......
  • pytest简易教程(34):pytest常用插件 - 测试报告(pytest-html)
     pytest简易教程汇总,详见:https://www.cnblogs.com/uncleyong/p/17982846关于pytest-html通过命令行方式,生成xml/html格式的测试报告,存储于用户指定路径报告会覆盖上一次的 插件安装pipinstallpytest-html 使用方式命令行格式:pytest--html=./report/report.html......
  • pytest简易教程(28):pytest常用插件 - 重复测试(pytest-repeat)
     pytest简易教程汇总,详见:https://www.cnblogs.com/uncleyong/p/17982846使用场景某功能不稳定,重复执行多次,以便复现问题 插件安装安装:pipinstallpytest-repeat 使用方式一:命令行参数参数:--count:重复运行次数,必填--repeat-scope:默认function,还可以是class......