iOS-代码混淆的简单demo

代码混淆就是将原有程序中方法名 、类名或者属性名通过自定义方式给予改变,以增加app的安全性或者是为了通过AppStore的审核。

经过查看资料针对修改方法名写了一个简单的demo,如有不对的地方,请各位大神不吝赐教~~

参考的大神地址:https://www.jianshu.com/p/66bb2d45b3c2

混淆文件解释

confuse.sh 脚本文件

func.list 需要混合的方法或者属性名

codeObfuscation.h 混淆后代码的对比显示

混淆步骤

一、创建文件

两种方式:

1、工程中手动创建:

创建个文件夹方便管理文件

image

创建shell文件 confuse.sh:

image
image

同样创建func.list文件:

image
image

同理创建头文件 codeObfuscation.h

image

2、终端命令行创建:

cd 到项目中:

创建文件夹: mkdir CondeObfuscation

创建.sh:touch confuse.sh

创建.list: touch func.list

创建.h:touch codeObfuscation.h

image

二、配置sh相关环境

屏幕快照 2019-04-10 下午5.24.48.png
添加.sh路径:$PROJECT_DIR/CodeObfuscation/confuse.sh
屏幕快照 2019-04-10 下午5.27.20.png

在.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

三、将codeObfuscation.h头文件添加到pch文件中

工程中添加pch文件参考:[地址]https://blog.csdn.net/iven_ma/article/details/64439436

添加头文件

四、开始运行项目

可能报错的地方:
1.找不到.sh文件

报错1

修改:
改为绝对地址

2.sh文件权限问题

报错2

修改方法:给.sh文件授权

授权

3.symbols报错
报错2

修改方法将confuse.sh文件中symbols的地址改为:
修改symbols地址

五、开始测试

激动人心的时候到啦,终于可以开始测试啦
1.在func.list文件中添加要修改的方法名:functionCodefuscationTest


测试

2.终端中运行脚本. confuse.sh


运行脚本报错

emmm...可以看到报错啦 找不到codeObfuscation.h和func.list文件。同理在confuse.sh文件中将codeObfuscation.h地址改为绝对地址
修改方法

再次运行

. confuse.sh

查看结果:


被混淆的方法名颜色变了哦

codeObfuscation.h中记录

大功告成啦!!
我是参考大牛的代码, 然后自己走了一遍,出现的问题以及解决方法都在上方,如有不对的地方请各位大牛赐教!!万分感谢~~

你可能感兴趣的:(iOS-代码混淆的简单demo)