Swift实现代码混淆详解

 更新时间:2021年11月26日 11:40:39   作者:shengkuiwang  
本文详细讲解了Swift实现代码混淆的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

1. 新建相关文件

新建文件confuse.shfunc.list

创建文件方式如下:

$ cd ~/Desktop/ceshi
$ touch confuse.sh
$ touch func.list

最终结果如下:


2. 导入文件至项目

将创建的confuse.sh文件以及func.list文件导入项目
最终结果如下

3. 修改项目配置

3.1 修改TARGETS配置

如果没有RunScript。请点击红框内+进行新增

RunScript内输入的文本

$PROJECT_DIR/confuse.sh

3.2 修改指令文件

3.2.1 打开confuse.sh文件,复制并粘贴一下文本

#!/usr/bin/env bash

TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
STRING_SYMBOL_FILE="func.list"
HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"
export LC_CTYPE=C

#维护数据库方便日后作排重
createTable()
{
    echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
}

insertValue()
{
    echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
}

query()
{
    echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
}

ramdomString()
{
    openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
}

rm -f $SYMBOL_DB_FILE
rm -f $HEAD_FILE
createTable

touch $HEAD_FILE
echo '#ifndef Demo_codeObfuscation_h
#define Demo_codeObfuscation_h' >> $HEAD_FILE
echo "//confuse string at `date`" >> $HEAD_FILE
cat "$STRING_SYMBOL_FILE" | while read -ra line; do
    if [[ ! -z "$line" ]]; then
        ramdom=`ramdomString`
        echo $line $ramdom
        insertValue $line $ramdom
        echo "#define $line $ramdom" >> $HEAD_FILE
    fi
done
echo "#endif" >> $HEAD_FILE

sqlite3 $SYMBOL_DB_FILE .dump

3.2.2 修改指令文件权限

$ cd ~/Desktop/ceshi
$ chmod 755 confuse.sh

3.3 修改需要混淆的方法名文件

打开func.list文件,在文件内输入需要进行方法名混淆的方法名

示例如下:

imageCompress
blurImage
viewDidLoad

3.4 修改pch文件配置

1、如果没有PrefixHeader.pch这种文件,则需要新建一个
2、打开PrefixHeader.pch文件

#ifndef PrefixHeader_pch
#define PrefixHeader_pch

// Include any system framework and library headers here that should be included in all compilation units.
#import "CodeObfuscation.h"

#endif /* PrefixHeader_pch */

4. 运行效果

运行com+B

希望本文所述对大家的Swift开发和学习有所帮助。

相关文章

  • swift 3.0 实现短信验证码倒计时功能

    swift 3.0 实现短信验证码倒计时功能

    这篇文章主要介绍了swift 3.0 实现短信验证码倒计时功能的相关资料,需要的朋友可以参考下
    2017-02-02
  • 浅谈Swift编程中switch与fallthrough语句的使用

    浅谈Swift编程中switch与fallthrough语句的使用

    这篇文章主要介绍了Swift编程中switch与fallthrough语句的使用,用于基本的流程控制,需要的朋友可以参考下
    2015-11-11
  • Swift实现表格视图单元格多选

    Swift实现表格视图单元格多选

    这篇文章主要为大家详细介绍了Swift实现表格视图单元格多选,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 解析Swift语言面相对象编程中的继承特性

    解析Swift语言面相对象编程中的继承特性

    这篇文章主要介绍了解析Swift语言面相对象编程中的继承特性,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Swift 常量与变量实例详解

    Swift 常量与变量实例详解

    这篇文章主要介绍了Swift 常量与变量实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • swift5.3 UIColor使用十六进制颜色的方法实例

    swift5.3 UIColor使用十六进制颜色的方法实例

    这篇文章主要给大家介绍了关于swift5.3 UIColor使用十六进制颜色的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Swift开发中switch语句值绑定模式

    Swift开发中switch语句值绑定模式

    本文给大家分享Swift开发中switch语句值绑定模式,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2016-12-12
  • 深入理解Swift中的访问控制关键字

    深入理解Swift中的访问控制关键字

    这篇文章主要给大家介绍了Swift中访问控制关键字的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • swift控件工厂类的实现代码

    swift控件工厂类的实现代码

    这篇文章主要为大家详细介绍了swift控件工厂类的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • iOS Swift读取本地json文件报错的解决方法

    iOS Swift读取本地json文件报错的解决方法

    只要是app开发者都知道,从服务器端获得的数据要不就是json格式的数据,要么就是xml格式的数据,而这篇文章主要给大家介绍了关于iOS Swift读取本地json文件报错的解决方法,需要的朋友可以参考借鉴,下面来一起学习学习吧。
    2017-11-11

最新评论

?


http://www.vxiaotou.com