Swift实现代码混淆详解
更新时间:2021年11月26日 11:40:39 作者:shengkuiwang
本文详细讲解了Swift实现代码混淆的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
1. 新建相关文件
新建文件confuse.sh和func.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中的条件切换语句switch...case学习教程
这篇文章主要介绍了Swift中的条件切换语句switch...case学习教程,Swift中的switch...case支持的数据类型很多,非常之强大,需要的朋友可以参考下2016-04-04
如何在Swift 中使用 async let 并发运行后台任务
Swift 异步编程是一种编写允许某些任务并发运行而不是按顺序运行的代码的方法,这篇文章主要介绍了在Swift中使用async let并发运行后台任务,需要的朋友可以参考下2023-06-06
详解Swift中的Characters字符类型与String字符串类型
Swift中的字符串操作相当便捷,下面我们来详解Swift中的Characters字符类型与String字符串类型,需要的朋友可以参考下2016-06-06


最新评论