博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS代码混淆----自动
阅读量:6079 次
发布时间:2019-06-20

本文共 1141 字,大约阅读时间需要 3 分钟。

  hot3.png

1.4版本

来自的技术支持

来自 的建议

阅读本篇文章,需要先会. O(∩_∩)O谢谢。推荐的安装步骤

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

编译:就是把千千万万行字符串(也叫代码,或者源文件),变成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函数列表抽取,和宏定义是脚本自动完成,不需要手动抽函数和手动宏定义呢。

有童鞋疑问会不会影响上架,答曰:不会!相当于命名一些函数名字为:

-(void)ad123a131{}

-(void)lvsndj231376qe{}

-(void)qute1q123ae8999asdq{}

这样命名函数,Apple 会拒绝吗?

源代码下载地址:

您的星星,是我最大的鼓励。最近想把集成到CocoaPods,敬请期待。O(∩_∩)O谢谢

另送一份:iOS 脚本打包 傻瓜版,无需改变配置

 

推荐文章:

作者:Coder_Hou
链接:https://www.jianshu.com/p/0d42e5c6361c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://my.oschina.net/huqiji/blog/1627810

你可能感兴趣的文章
我的友情链接
查看>>
Mybatis自动创建表和更新表结构
查看>>
小松鼠邮件(squirrelmail)服务器部署(squirrelmail+Postfix)
查看>>
java速度入门_十考试复习
查看>>
无间道
查看>>
UIimageView图片加载
查看>>
Python 17.5 使用模板
查看>>
echarts爬坑记录
查看>>
Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等
查看>>
防止XenApp系统资源被使用过度的三种方案
查看>>
关于python 缺少dbm模块问题
查看>>
新建Android项目是自动生成appcompat_v7
查看>>
事物的4中隔离级别,及在spring事物中的对应关系
查看>>
ADSL基本知识介绍及ADSL上行带宽
查看>>
mysql之SQL执行计划分析EXPLAIN
查看>>
爱加密联合应用之星(APPSTAR)为开发者提供免费云加密服务
查看>>
如何辨别优秀的程序员
查看>>
Java设计模式百例 - 简单工厂模式
查看>>
solr 空值查询和不包含子字段的数据统计
查看>>
XPE中常用的网络功能组件及其描述
查看>>