iOS 方法名混淆 代码混淆

一.目的:

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
屏幕快照 2018-11-22 下午2.36.35.png

接下来把这两个文件加到工程中


屏幕快照 2018-11-22 下午3.08.38.png

在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/[ ]*$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文件这里不再阐述了哈


iOS 方法名混淆 代码混淆_第1张图片
屏幕快照 2018-11-22 下午3.28.03.png

[图片上传中...(WechatIMG1.jpeg-103601-1542872148151-0)]
这时在配置一下路径就差不多啦


iOS 方法名混淆 代码混淆_第2张图片
WechatIMG1.jpeg

第四步点击加号 new run script phase 就会出现第五步啦


iOS 方法名混淆 代码混淆_第3张图片
屏幕快照 2018-11-22 下午3.37.19.png

设置好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的审核机制越来越严格了.添加这个脚本会直接导致审核被拒绝了..代码混淆是为了过机审那一关..可还是被拒绝了

iOS 方法名混淆 代码混淆_第4张图片
屏幕快照 2018-11-22 下午5.08.25.png
iOS 方法名混淆 代码混淆_第5张图片
WechatIMG3.jpeg

同志们需要混淆代码用到脚本的慎重使用了

你可能感兴趣的:(iOS 方法名混淆 代码混淆)