欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Swift实现代码混淆详解,

来源: 开发者 投稿于  被查看 21754 次 评论:260

Swift实现代码混淆详解,


目录
  • 1. 新建相关文件
  • 2. 导入文件至项目
  • 3. 修改项目配置
    • 3.1 修改TARGETS配置
    • 3.2 修改指令文件
      • 3.2.1 打开confuse.sh文件,复制并粘贴一下文本
      • 3.2.2 修改指令文件权限
    • 3.3 修改需要混淆的方法名文件
      • 3.4 修改pch文件配置
      • 4. 运行效果

        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 列举内存管理与异常处理具体代码
        • Swift代码自定义UIView实现示例
        • Swift Self详解及简单实例代码

        用户评论