代码混淆,项目安全

本文详细介绍了如何在iOS项目中实现代码混淆,以增强代码安全。首先,在项目根目录创建confuse.sh和gbFunc.list文件,用于混淆代码。接着,创建GBConfuse.h文件,将混淆后的字符串定义为宏,避免被反编译。在confuse.sh中执行代码混淆操作,包括处理文件、生成随机字符串、维护数据库等。通过Run Script和Prefix Header (PCH) 文件确保混淆在编译阶段执行。最后,使用class-dump进行反编译测试,证明混淆效果。参考链接提供进一步信息。
摘要由CSDN通过智能技术生成

常见的项目安全实践一:代码混淆


一、在项目根目录下新建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 *

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值