iOS代码混淆教程

混淆原理

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

长话短说,直接上步骤。

混淆集成步骤

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

  • 在项目根目录下新建一个文件夹

    新建文件夹

    我这里取文件夹名称为CodeObfuscation,如下图所示
    文件夹

    **注意** 这里的文件夹必须在目录中真实存在(Xcode9 New Group会自动创建对应的真实文件夹)。

  • 在上一步的文件下新建一个shell文件(.sh文件)

    shell文件创建步骤1

    输入文件名:confuse.sh,点击Create按钮
    shell文件创建步骤2

    shell文件创建步骤3

  • 给.sh文件添加运行环境

    运行环境步骤1

    添加.sh文件的读取路径$PROJECT_DIR/CodeObfuscation/confuse.sh,如下图
    运行环境步骤2

  • 给.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文件

创建func.list文件步骤1

输入文件名:func.list,点击Create按钮
创建func.list文件步骤2

创建func.list文件步骤3

步骤三、创建codeObfuscation.h文件

创建codeObfuscation.h文件步骤1

输入codeObfuscation.h,点击Create按钮
创建codeObfuscation.h文件步骤2

创建codeObfuscation.h文件步骤3

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

  • 包含codeObfuscation.h到pch文件中

    pch文件配置

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

    需要混淆的方法名

command + R运行项目,此时你会发现报错。

报错查看

点击具体错误后下拉到最下面查看具体内容
错误信息

Permission denied翻译成中文就是.sh文件没有运行权限

如何更改confuse.sh文件的运行权限呢,如下步骤。

  • 打开终端,cd到CodeObfuscation文件夹(不会cd到这个文件夹的可以私聊我)
  • 在终端输入ls命令并回车查看文件夹内的文件内容如下
    CodeObfuscation文件夹内容
  • 输入sudo chmod 777 confuse.sh命令并回车如下图
    更改文件权限为可读可写可运行

    此时需要键入开机密码,mac下不显示输入的内容,输入完毕直接回车即可。
  • 更改confuse.sh文件运行权限完成

重新回到xcode项目,command + R运行项目,运行成功。

步骤五、查看结果

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

替换结果

步骤六、确认结果

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

查看替换结果

功夫不负有心人,祝大家工作顺利

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 148,827评论 1 317
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 63,511评论 1 266
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 99,318评论 0 218
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,108评论 0 189
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,112评论 1 266
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,387评论 1 185
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,905评论 2 283
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,657评论 0 177
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,144评论 0 223
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,744评论 2 225
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,100评论 1 236
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,565评论 2 222
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,041评论 3 216
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,769评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,301评论 0 178
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,173评论 2 239
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,313评论 2 242

推荐阅读更多精彩内容

  • 前言 什么!我们的代码拿去安全扫描啦?什么!还扫描出来问题啦?什么!源码都别看到啦? 居于上一篇文章iOS简单逆向...
    甘邦阅读 17,916评论 24 40
  • app风靡的时代,总有一些奇葩的需求。为了刷量,刷排名,制作壳包,为了通过苹果爸爸审核,想到代码混淆,垃圾代码等策...
    二斤寂寞阅读 22,520评论 11 52
  • 代码易读字符串混淆 混淆分许多思路,比如: 1)花代码花指令,即随意往程序中加入迷惑人的代码指令 2)易读字符替换...
    Mikayla321阅读 7,365评论 5 13
  • iOS表面上看来是比android安全的多的,在网络上针对android的加密保护也比iOS多得多,但是这并不意味...
    张囧瑞阅读 6,106评论 7 30
  • 2018年3月8日星期四天气晴 今天下午学校里举行猜灯谜活动。开学前我们也报名参加的,也做了灯笼,可是开学的那天早...
    周鲁玲阅读 90评论 0 0