iOS开发/App安全/代码自动混淆笔记

2017 年 12 月 19 日 CocoaChina _Grabin

最近接触银行类项目,对app安全才有了些认识...比较尴尬,除了之前经常做的网络参数加密解密,以及防止数据重放之外,还提到了防范反编译的风险,其实Apple算比较安全的了,反编译过来也就看到.h文件....但把代码混淆还是会比较好些。


一、在项目根目录下新建confuse.sh 和 gbFunc.list 文件


说明:


confuse.sh 文件在编译过程中会执行gbFunc.list 用于自动混淆代码时,存放过滤出来需要混淆的方法名


touch confuse.sh

touch gbFunc.list



二、新建GBConfuse.h


说明:


GBConfuse.h 是在自动混淆代码时,将会把自动生成的字符串定义成宏,存放在此文件,也便于查看。



注意:需要把.h文件移到项目文件外,因为放项目文件中,到时被反编译过来,还是能得到GBConfuse.h里面的东西的,就能通过比对,得到方法。(后面用class-dump反编译过来就明白了...)



三、在confuse.sh中添加如下代码


#!/usr/bin/env bash


TABLENAME=symbols


SYMBOL_DB_FILE="symbols"


#func.list路径

STRING_SYMBOL_FILE="$PROJECT_DIR/GBFunc.list"


#项目文件路径

CONFUSE_FILE="$PROJECT_DIR/Safedemo"


#Confuse.h路径

HEAD_FILE="$PROJECT_DIR/GBConfuse.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 "/^GBSAFE_/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 GBConfuse_h

#define CodeConfuse' >> $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


需要修改的代码在于文件路径:




四、添加 Run Script




五、添加 PCH 文件





六、在ViewController中添加以"GBSAFE_"为前缀的测试方法



七、测试


运行报错如下:


原因是.sh文件没有权限,所以需要去开启权限。



在confuse.sh文件目录下,执行命令:


chmod 755 confuse.sh



运行成功!


先打包一个.ipa安装包进行测试!


先不进行代码混淆:



把.ipa文件类型改成.zip,解压得到.app文件



新建Hear文件夹用于保存反编译后得到的文件:



用class-dump进行反编译


class-dump -H 要破解的可执行文件路径 -o 破解后的头文件存放路径



得到没有进行代码混淆的文件:


可以看到都是项目中一些.h文件,打开可以看到完整的方法名....


然后客户说测试公司说不安全...


需要进行代码混淆...



在PCH文件中,引用GBConfuse.h:



重新打包..就可以得到混淆后的.ipa..


下面就是混淆后的结果。




总结:


其实,原理应该就是在编译过程中,把需要混淆的代码生成随机字符串进行替换....


八、参考文章



登录查看更多
0

相关内容

sqlite 的第三个主要版本
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
计算机视觉最佳实践、代码示例和相关文档
专知会员服务
18+阅读 · 2019年10月9日
【初学者系列】tensorboard学习笔记
专知
7+阅读 · 2019年10月4日
手把手教你用Python实现“坦克大战”,附详细代码!
机器学习算法与Python学习
11+阅读 · 2019年6月8日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
已删除
生物探索
3+阅读 · 2018年2月10日
Python | 50行代码实现人脸检测
计算机与网络安全
3+阅读 · 2018年1月23日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Arxiv
5+阅读 · 2019年2月28日
Arxiv
3+阅读 · 2018年6月14日
Arxiv
7+阅读 · 2018年6月8日
Arxiv
8+阅读 · 2018年2月23日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
计算机视觉最佳实践、代码示例和相关文档
专知会员服务
18+阅读 · 2019年10月9日
相关资讯
【初学者系列】tensorboard学习笔记
专知
7+阅读 · 2019年10月4日
手把手教你用Python实现“坦克大战”,附详细代码!
机器学习算法与Python学习
11+阅读 · 2019年6月8日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
已删除
生物探索
3+阅读 · 2018年2月10日
Python | 50行代码实现人脸检测
计算机与网络安全
3+阅读 · 2018年1月23日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
相关论文
Top
微信扫码咨询专知VIP会员