安装
我的硬件环境
环境:macOS High Sierra 10.13.4 Xcode9.3.1
class-dump下载地址:https://link.jianshu.com/?t=http://stevenygard.com/projects/class-dump/
1,终端输入mkdir ~/bin,在当前用户根目录下创建一个bin目录。
2,把下载下来的 dmg 打开,复制文件里面的class-dump到创建的bin目录下。赋予其可执行权限:
终端运行 chmod +x ~/bin/class-dump
3. 打开~/.bash_profile文件:
终端运行:vi ~/.bash_profile
在文件最上方加一行:
export PATH=$HOME/bin/:$PATH,
然后保存并退出(在英文输入法中依次按下esc和: (冒号),然后输入wq,回车即可);
如图
4,测试是否安装成功
终端运行 pwd class-dump
终端运行 class-dump
如果出现如下界面 即安装成功
使用
1,在项目中创建一个Config文件夹
2,在Config文件夹中 创建一个 func.list 和 confuse.sh 两个文件 (如果不想自己创建 百度上一堆 拉进去即可)
如果自己创建 吧下面一坨代码拷贝进去即可
confuse.sh文件
#!/usr/bin/env bash
TABLENAME=symbols
SYMBOL_DB_FILE="$PROJECT_DIR/$PROJECT_NAME/Config/symbols"
STRING_SYMBOL_FILE="$PROJECT_DIR/$PROJECT_NAME/Config/func.list"
HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/Config/TestCodeConfuscation.h"
exportLC_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 -base6464| tr -cd'a-zA-Z'|head -c16
}
rm -f $SYMBOL_DB_FILE
rm -f $HEAD_FILE
createTable
touch $HEAD_FILE
echo '#ifndef TestCodeConfuseUse_TestCodeConfuscation_h
#define TestCodeConfuseUse_TestCodeConfuscation_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文件 随便如下
fc_Function1
fc_Function2
3,引入脚本路径 如图
command + B 编译一下 (我的并没有报错 网上有人报错) 为保证效率先清理一下 再编译
然后用终端找到 Config文件夹 然后输入 chmod 755 confuse.sh 如图
command + B 编译一下 为保证效率先清理一下 再编译
此时在Config文件夹自动会生成symbols 和 TestCodeConfuscation.h 两个文件 然后把这个两个文件添加到项目有中如图
添加过后如图所示
然后在pch文件中引入 TestCodeConfuscation.h 然后运行 就已完成代码混淆
检查一下是否成功
能力有限,有些地方可能不对 。望不吝赐教!
参考链接
网友评论