美文网首页ios 逆向
iOS 方法名代码混淆

iOS 方法名代码混淆

作者: Ray0218 | 来源:发表于2019-12-10 18:44 被阅读0次

利用class-dump可以很方便的导出程序头文件,让攻击者了解了程序结构方便逆向,所以混淆方法名,可以一定程度上加大逆向的阅读难度。

混淆的方法
方法名混淆其实就是字符串替换,有2个方法可以,一个是#define,一个是利用tops。
利用#define的方法有一个好处,就是可以把混淆结果合并在一个.h中,在工程Prefix.pch的最前面#import这个.h。不导入也可以编译、导入则实现混淆。

单段的selector,如func: ,可以通过#define func 来实现字符串替换。
多段的selector,如a:b:c: ,可以通过分别#define a 、b、c 来实现字符串替换。

操作步骤

1、创建混淆脚本文件如confuse.sh 和方法列表文件如function.list

切换到项目目录下

touch function.list

touch confuse.sh
chmod 755 confuse.sh //给脚本授权

打开confuse.sh文件,把如下脚本加入文件中。

2、导入脚本

截屏2019-12-10下午5.24.50.png
截屏2019-12-10下午5.27.43.png
${SRCROOT}/confuse.sh 

3、运行项目

shell脚本会在项目目录中生成一个codeObfuscation.h的文件,将codeObfuscation.h导入项目中,同时将之前创建的function.list文件也导入项目

4、添加需要混淆的方法名

打开function.list文件,把需要混淆的方法名复制进来(这里所说的方法名不单单只是.h文件中的,也可以是.m文件中的)


截屏2019-12-10下午5.49.36.png 截屏2019-12-10下午5.48.54.png

4、将codeObfuscation.h放到.pch文件中,运行项目

项目运行后,混淆的方法名会被替换成宏定义

截屏2019-12-10下午5.46.12.png
截屏2019-12-10下午5.51.15.png

通过class-dump查看.h文件得到的方法名是随机的字符串


截屏2019-12-10下午6.41.46.png

混淆方法名的shell脚本


!/usr/bin/env bash
TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
STRING_SYMBOL_FILE="func.list"
HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/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' >> $HEAD_FILE

echo '#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

原文链接:https://blog.csdn.net/yiyaaixuexi/article/details/29201699

相关文章

网友评论

    本文标题:iOS 方法名代码混淆

    本文链接:https://www.haomeiwen.com/subject/mxmggctx.html