码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【教程】 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应用程序的安全性,减少被逆向工程和反编译的风险。

  • 相关阅读:
    设计模式之职责链模式应用例题
    【数据结构基础_树】Leetcode 108.将有序数组转换为二叉搜索树
    87 GB 模型种子,GPT-4 缩小版,超越ChatGPT3.5,多平台在线体验
    OAuth2.0详细介绍与实践(通俗易懂)
    实例详解在Go中构建流数据pipeline
    国内的PMP证书含金量到底如何
    刷题记录(NC16645 [NOIP2007]矩阵取数游戏,NC207781 迁徙过程中的河流,NC235953 最大m个子段和)
    scrapy基本使用
    若依SpringBoot+Vue分离版打包部署(前端)
    Elastic Observability 中的原生 OpenTelemetry 支持
  • 原文地址:https://blog.csdn.net/gfdjhg/article/details/136294002
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号