iOS 安全 之 方法混淆

作者: AKyS佐毅 | 来源:发表于2016-05-29 12:21 被阅读2494次

    APP安全(安全防护篇)

     对APP的安全防护主要是对程序进行加密,其中加密有五个方向
    
      1.URL编码加密 对程序中出现的URL进行编码加密,防止URL被静态分析。
      2.本地数据加密 对NSUserDefaults,sqlite存储文件数据加密,保护帐号和关键信息。
      3.网络传输数据加密 对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取。
      4.方法体,方法名高级混淆 对应用程序的方法名和方法体进行混淆,保证源码被逆向后无法解析代码。
      5.程序结构混排加密 对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低。
    

    今天重点说一下 方法体 方法名的混淆。
    首先看效果吧:

    84B10B95-A4CE-4305-BD59-37A671BBF513.png

    #使用hopper disassembler 反编译iPA之后不能得到相应的方法调用信息

    FE50C8B4-A19A-4279-A01E-0D4F64870724.png

    那么如何做到呢?
    创建shell脚本:

    TABLENAME=symbols
    SYMBOL_DB_FILE="symbols"
    STRING_SYMBOL_FILE="fun.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
    

    第二 声明要替换的方法名列表

          在上边脚本中提到了 STRING_SYMBOL_FILE="fun.list",意思就是运行脚本的时候会到这个文件去读取需要替换的方法名,重新写入符号表中。
          nameAction
          refreshAction
    

    第三步: 生成对应的转义之后的无序字符串

    47A87D69-4262-48E4-957F-5AD91014932F.png

    具体demo 很早之前写的 ,链接 Blank_佐毅

    另外
    招聘UI交互设计师啦!
    招聘UI交互设计师啦!
    招聘UI交互设计师啦!
    招聘UI交互设计师啦!
    招聘UI交互设计师啦!

    嗯,重要的事情说五遍。

    相关文章

      网友评论

      • dedenc:你好,很想知道你的哪几种加密方式有什么方法,比如说怎么打乱顺序,加码看不到我真正的内部.m实现。 我用hopper还是可以看到比较清晰的伪代码。 希望楼主能讲下 谢谢
      • 困惑困惑困惑:其他几种方式如何加密呢

      本文标题:iOS 安全 之 方法混淆

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