zoukankan      html  css  js  c++  java
  • 代码混淆

    混淆原理

    代码编译阶段将符号(方法名、属性名等)替换成随机生成的字符串

    长话短说,直接上步骤。

    混淆集成步骤

    步骤一、创建shell文件(confuse.sh)并配置相应的运行环境。

    • 在项目根目录下新建一个文件夹
      image.png
    • 这里取文件夹名称为CodeObfuscation,如下图所示
      image.png
    • 在上一步的文件下新建一个shell文件(.sh文件)
      image.png
    • 输入文件名:confuse.sh,点击Create按钮
      image.png
      image.png
    • 给.sh文件添加运行环境
      image.png
    • 添加.sh文件的读取路径$PROJECT_DIR/CodeObfuscation/confuse.sh,如下图
      image.png
    • 给.sh文件添加运行内容(运行代码)
      将下面的代码复制粘贴到confuse.sh文件中
    TABLENAME=symbols
    SYMBOL_DB_FILE="$PROJECT_DIR/CodeObfuscation/symbols"
    STRING_SYMBOL_FILE="$PROJECT_DIR/CodeObfuscation/func.list"
    HEAD_FILE="$PROJECT_DIR/CodeObfuscation/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

    步骤二、创建func.list文件

    image.png

    • 输入文件名:func.list,点击Create按钮
      image.png

    步骤三、创建codeObfuscation.h文件

    image.png

    • 输入codeObfuscation.h,点击Create按钮
      image.png

    步骤四、包含codeObfuscation.h到pch文件中,添加要混淆的方法名或属性名到func.list

    image.png

    • 给func.list文件中添加要混淆的方法名或属性名
      image.png

    步骤五、更改confuse.sh文件的运行权限

    • 打开终端,cd到CodeObfuscation文件夹(不会cd到这个文件夹的可以私聊我)
    • 在终端输入ls命令并回车查看文件夹内的文件内容如下
      image.png
    • 输入sudo chmod 777 confuse.sh命令并回车如下图
      image.png
    • 更改文件权限为可读可写可运行,此时需要键入开机密码,mac下不显示输入的内容,输入完毕直接回车即可。
    • 更改confuse.sh文件运行权限完成

    步骤六、查看结果

    • 查看codeObfuscation.h文件内容变化,如下图
      image.png

    步骤七、确认结果

    如何知道替换成功了呢?我们找到替换的方法名或属性名,点击跳转到定义,会跳转到codeObfuscation.h中,说明替换成功。
    image.png

  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/Acee/p/11490944.html
Copyright © 2011-2022 走看看