美文网首页
iOS代码混淆

iOS代码混淆

作者: Bobo_Ma | 来源:发表于2018-06-01 17:38 被阅读0次

    一、 在进行代码混淆之前,我们需要在我们的项目中增加两个文件:confuse.sh(存放混淆的脚本)和func.list(需要混淆的方法、变量名)

    1.打开终端先cd到你项目的路径下回车

    2.在终端中输入 touch confuse.sh 回车

    3.输入touch func.list回车

    4.打开我们的项目文件夹,就能看到多了两个文件。打开我们的工程,右键项目名称把我们创建的这两个文件添加到项目中去


    2986999-0679576ba75a3e8e.png.jpeg

    二、 打开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
    
    
    
    

    三、 配置 Build Phase

    1. 点击工程名称 — > Build Phase — > Run Script


      D8CB8077-A7B8-40CB-8081-CCC2306C9F1F.png

    2.在里面添加 $PROJECT_DIR/confuse.sh


    2986999-73c32cdfa363d9bf.png.jpeg

    3.编译一下,会发现报错:


    2986999-7fe444988ba84ddb.png.jpeg
    4.切换到工程目录下,输入命令行 chmod 755 confuse.sh 给脚本授权

    5.编译一下项目,然后在工程目录下,我们会多出一个codeObfuscation.h文件(这里面是用来装混淆前 —> 混淆后的代码对比)

    1423FA80-9320-4474-9B87-6CBCD8D65B43.png
    四、添加pch文件(不知道怎么添加.pch,有个链接地址能帮到你ios中pch文件的创建与配置
    )
    1.配置的路径
    0EEBD4E4-D261-4524-B53E-8AF71675F42D.png
    2.打开PCH文件,导入头文件:
    D9BDC644-2703-4543-B86D-9081517C885D.png
    五、混淆的变量,方法名
    1.下面我们举例子,比如我想混淆以下的变量和方法:
    63A684A7-3AEA-4834-959B-FF0C5A8D16AA.png
    2.打开 func.list 文件,把名称复制进去
    7630567C-C54E-44D0-AA8F-BC10C43DEBDD.png
    3.点击编译,这样子我们需要混淆的代码就已经混淆成功了。但是也不会影响到我们的阅读。这里是通过宏定义来修改的
    86DE63B9-DF17-4BB8-809F-043AC518B853.png
    4.混淆的代码,其实就是通过把敏感的变量、代码通过宏来修改掉:
    C84D21D8-C41C-4803-834B-C2C49DB5614A.png
    六、注意:
    1、 系统的方法
    2、XIB中拖线的控件名
    这些都不能用这个方法混淆,因为会导致运行的时候出错。

    相关文章

      网友评论

          本文标题:iOS代码混淆

          本文链接:https://www.haomeiwen.com/subject/wayksftx.html