• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 代码混淆(swift版)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近项目做了安全检查,得分有点低,主要就是因为代码没有混淆。

最近研究代码混淆,顾记录一下整个经过。

混淆原理

同网上大部分一样,把类名、常量、变量等生成一串随机字符串。

第一步:在相应的项目工程下新建一个confuse.sh 和 func.list文件

    $ cd /Users/xx/Desktop/xxx  

    $ touch confuse.sh

    $ touch func.list

 

第二步:将新建的两个文件拖到项目工程中,并配置confuse.sh脚本

把这两个文件拖入工程中,并在Build Prases 中添加脚本,如下图

 

 

 

第三步:把下面代码复制到confuse.sh 中

#!/usr/bin/env bash

TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
STRING_SYMBOL_FILE="$PROJECT_DIR/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 CodeObfuscation_h
#define 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

 

 第四步,修改权限

chmod 755 confuse.sh

 

第五步,pch 中,导入文件

#import "CodeObfuscation.h"

如果没有的话,就新建一个,并配置好 pch 路径

编译一下

如果报错"CodeObfuscation.h" file not found
把 pch 文件中这一句注释掉,再次编译;

//#import "CodeObfuscation.h"

然后 把这一句打开,再次编译即可;

第六步,把需要混淆的类和变量名写入 func.list 文件中

 

 

编译就可以看到

 

 

 

 

 恭喜,已经成功了!

 

参考文章:

https://www.jianshu.com/p/5b6cbbe79e78

https://www.jianshu.com/p/f3ad9c107757

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift之代码混淆的调研实施小记发布时间:2022-07-13
下一篇:
Swift - UITableView发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap