一.目的:
1.通过审核
原因是规避代码相似度极高而过不了机审.增加代码.代码混淆
2.安全需要
对安全性能要求较高的产品.防止别人通过class-dump反编译你的应用得到源码
文章主要讲解方法名混淆的问题。如有问题,还请大神指点! OK let do it
二.执行:
1.打开终端 先cd到工程的目录下 创建两个脚本文件
confuse.sh
func.list
*****$ cd /Users/king/Desktop/test
*****$ touch confuse.sh
*****$ touch func.list
接下来把这两个文件加到工程中
在confuse.sh 中加入脚本代码.脚本代码来自念茜姐姐(博客:)如下
https://blog.csdn.net/yiyaaixuexi/article/details/29201699
#!/usr/bin/env bash
TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
//下边这三个要行需要根据自己文件路径
STRING_SYMBOL_FILE="$PROJECT_DIR/BaseFrame/func.list"
CONFUSE_FILE="$PROJECT_DIR/BaseFrame/"
HEAD_FILE="$PROJECT_DIR/BaseFrame/Supporting Files/codeObfuscation.h"
export LC_CTYPE=C
#取以.m或.h结尾的文件以+号或-号开头的行 |去掉所有+号或-号|用空格代替符号|n个空格跟着<号 替换成 <号|开头不能是IBAction|用空格split字串取第二部分|排序|去重复|删除空行|删掉以init开头的行>写进func.list
grep -h -r -I "^[-+]" $CONFUSE_FILE --include '*.[mh]' |sed "s/[+-]//g"|sed "s/[();,: *\^\/\{]/ /g"|sed "s/[ ]*</</"| sed "/^[ ]*IBAction/d"|awk '{split($0,b," "); print b[2]; }'| sort|uniq |sed "/^$/d"|sed -n "/^HYF_/p" >$STRING_SYMBOL_FILE
#维护数据库方便日后作排重,一下代码来自念茜的微博
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 中加入需要混淆的方法名 (随意写两个方法名)
HYF_Function1
HYF_Function2
另再创建一个.h文件 codeObfuscation.h 并加入方法名
#ifndef Demo_codeObfuscation_h
#define Demo_codeObfuscation_h
#define HYF_Function1 JIUHkoTUOpodkHJK
#define HYF_Function2 BpfFGCqvmxHVCtct
#endif
再把codeObfuscation.h 的头文件加入到.pch 文件 配置pch文件这里不再阐述了哈
[图片上传中...(WechatIMG1.jpeg-103601-1542872148151-0)]
这时在配置一下路径就差不多啦
第四步点击加号 new run script phase 就会出现第五步啦
设置好confuse.sh路径就好了
接下来直接调用一下该方法就行了
-(void)HYF_Function1
{
//打印方法名
NSLog(@"Current method: %@",NSStringFromSelector(_cmd));
}
到这里就收工了.中途有可能会出现报小红点点.有可能的情况
1.路径配置问题
处理.仔细检查路径的问题.修改好正确的就OK
2.没有权限问题
回到终端执行代码.开放权限
chmod 755 coufuse.sh
大功告成.有啥问题欢迎评论哦
demo URL :
https://github.com/kingiiyy/Confuseshell
更新时间: 2018-11-25
Oh no 刚刚收到个不好的消息.现在iOS的审核机制越来越严格了.添加这个脚本会直接导致审核被拒绝了..代码混淆是为了过机审那一关..可还是被拒绝了
同志们需要混淆代码用到脚本的慎重使用了