iOS代码混淆----自动

先大致解释一下“编译"、"反编译":

编译:就是把千千万万行字符串(也叫代码,或者源文件),变成010101010101(机器码,也叫目标代码)

编译过程:预处理-编译-汇编-链接

我的脚本运行在预处理阶段。

反编译:就是把0101010111110001100(机器码,也叫目标代码),变成千千万万行字符串(也叫代码,或者源文件)

     最近三年一直待在银行做App,由于银行对安全要求较高,所以iOS的代码必须要有混淆的措施,初期实施了念茜姐的混淆方案,但是领导说,我们要自动混淆,方法名字不能一个一个的添加到func.list中,所以方法名只能从.m和.h文件中抽取了,但是如何屏蔽系统的方法名,暂行的策略是:将自己定义的方法名全部添加一个前缀。

    例如 “hsk_funtion1”; “hsk_funtion2”;“hsk_funtion3”;

在Xcode-->Target--->Build Phases--->添加Run Script

添加Run Script

通过class-dump 反编译之后:Appdelegate 效果

通过class-dump 反编译之后:ViewController 效果

codeObfuscation.h宏定义文件、confuse.sh脚本文件、func.list函数列表文件的关系。

程序每次预处理,都就会执行confuse.sh,从.m和.h文件中按照"一定的规则"抽取需要混淆的函数名,全部写到func.list中,然后再从func.list中逐行提取函数名进行宏定义,宏定义使用随机字符串,然后写到codeObfuscation.h文件中。

func.list函数列表抽取,和宏定义是脚本自动完成,不需要手动抽函数和手动宏定义呢。

由上可知,这种方法非常的复杂麻烦,我们这边推荐一个全新的混淆思路和工具-ipa guard,有兴趣的小伙伴们可以尝试这款新工具,目前还是免费阶段。

Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。


 

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

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

相关文章

什么是数据库?数据库有哪些基本分类和主要特点?

数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发,详细解读了数据库的主要类别和基本特点,并就大模型时代备受瞩目的数据库类型——向量数据库进行了深度剖析,供大家在了解数据库领域的基本概念时起到一点参考作用。 …

讲解机器学习中的 K-均值聚类算法及其优缺点。

K-均值聚类算法是一种无监督学习算法,常用于对数据进行聚类分析。其主要步骤如下: 首先随机选择K个中心点(质心)作为初始聚类中心。 对于每一个样本,计算其与每一个中心点的距离,将其归到距离最近的中心点…

kafka分区数和log.segment.bytes引发的kafka主题数据总字节数的疑问

突然想到一个问题, ①kafka broker的log.segment.bytes配置指定触发日志片段关闭的最大字节总数,当日志片段大小该值时,当前日志片段会被关闭,新的日志片段会被打开。 ②kafka的主题分区数是固定的,一个分区对应一个日…

计算机视觉驾驶行为识别应用简述

一、什么是计算机视觉识别? 计算机视觉识别是一种基于图像处理和机器学习的人工智能应用技术,可以用于多个场景。常见应用场景包括人脸识别、场景识别、OCR识别以及商品识别等。今天以咱们国产系统豌豆云为例,为大家梳理一下在车辆驾驶行为中…

Kafka -- 架构、分区、副本

1、Kafka的架构: 1、producer:消息的生产者 2、consumer:消息的消费者 3、broker:kafka集群的服务者,一个broker就是一个节点,主要是负责处理消息的读、写的请求和存储消息。在kafka cluster中包含很多的br…

什么是Java虚拟机(JVM),它的作用是什么?

什么是Java虚拟机(JVM) Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分,它是一种在不同操作系统上运行Java程序的虚拟计算机。 JVM的作用是执行Java字节码(Java bytecode&#…

雷达波形之一——LFM线性调频波形

文章目录 前言一、线性调频信号的形式1、原理2、时域表达式3、频域表达式 二、MATLAB 仿真1、涅菲尔积分①、MATLAB 源码②、仿真结果 2、LFM①、MATLAB 源码②、仿真结果1) 典型 LFM 波形,实部2) 典型 LFM 波形,虚部3) LFM 波形的典型谱 前言 线性调频…

亚马逊云科技海外服务器初体验

目录 前言亚马逊云科技海外服务器概述注册使用流程实例创建性能表现用户体验服务支持初体验总结 前言 随着云原生技术的飞速发展,越来越多的企业和开发者选择云服务器来作为自己的使用工具,云原生技术的发展也促进了云服务厂商的产品发展,所…

Java自学第6课:电商项目(2)

1 创建工具类并连接数据库 在工程src右键单击new,新建util包 再创建DBUtil类 数据库交互需要有数据库支持的包,这是官方给出的类库。 先声明1个代码块 // 静态代码块 只加载1次static{try {Class.forName("com.mysql.jdbc.Driver");} catch (…

华为gre带验证key案例

配置FW_A。 a.配置接口的IP地址,并将接口加入安全区域。 system-view [sysname] sysname FW_A [FW_A] interface GigabitEthernet 1/0/1 [FW_A-GigabitEthernet1/0/1] ip address 1.1.1.1 24 [FW_A-GigabitEthernet1/0/1] quit [FW_A] interface GigabitEthernet 1/…

NAT协议

目录 NAT 前言 NAT地址转换表 NAT分类 前言 静态NAT 192.168.1.2访问200.1.1.2执行过程 动态NAT 192.168.1.2访问200.1.1.2执行过程 NAPT 192.168.1.2的5000端口访问200.1.1.2的80端口执行过程 基本命令 配置动态NAPT转换 定义内外网接口 配置NAPT 静态NAPT配置…

利用SSH将本地仓库文件推送至远程仓库(GitHub)

使用以下命令创建公钥: ssh-keygen -t rsa -C "xxxxx.com"填写自己的邮箱,无需设置密码,一路回车即可。 使用以下命令查看 SSH 秘钥: cd ~/.ssh.ssh 目录存放在用户主目录下,里面存放了 id_rsa 和 id_rsa…

简述SVM

概述 SVM,即支持向量机(Support Vector Machine),是一种常见的监督学习算法,用于分类和回归问题。它是一种基于统计学习理论和结构风险最小化原则的机器学习方法。 SVM的主要思想是在特征空间中找到一个最优的超平面…

linux rsyslog安装配置

syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/rsyslog.conf文件。syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点。syslog使用UDP 514/TCP 514端口。 1.环境信息 环境信息 HostnameIpAddressOS versionModuleNoterh…

【Shell脚本8】Shell printf 命令

Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化…

Elasticsearch 集群状态详解

cluster state 返回结果详解 GET /_cluster/statehttps://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html详细信息如下: {"cluster_name": "business-log","cluster_uuid": "ArYy-qmCTbCQTDUI8o…

conda清华源安装cuda12.1的pytorch

使用pytorch官方提供的conda command奇慢无比,根本装不下来(科学的情况下也这样) 配置一下清华源使用清华源装就好了 清华源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 配置方法:conda config --…

strtok函数详解:字符串【分割】的利器

目录 一,strtok函数简介 二,strtok函数的用法 三,strtok函数的注意事项 一,strtok函数简介 strtok函数可以帮助我们将一个字符串按照指定的分隔符进行分割,从而得到我们想要的子字符串。 🍂函数头文件&am…

腾讯待办是不是停了?怎么用其它提醒软件查看导出的ics文件

腾讯待办是腾讯企业旗下的业务产品,其主要以微信小程序的形式使用,定位于待办事项和日程管理工具,支持罗列日程待办清单、设定定时提醒,帮助大家规划日常事务和进行时间管理,成功创建待办事项后可在对应的公众号和绑定…

Python教程之字典(Dictionary)操作详解

文章目录 前言一、创建字典二、访问字典里的值三、访问字典里的值四、删除字典元素五、字典键的特性六、字典内置函数&方法七、字典练习代码关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Py…