iOS安全攻防之代码混淆

  iOS 代码安全之代码混淆实践:

  前言:

  在8月份的时候写了个关于 class-dump 反编译的文章( 使用 Class-dump 反编译),利用 class-dump 工具可以反编译出工程的头文件,这样很方便“坏人”了解工程代码结构,参数传输,严重危及了应用安全。为了应对反编译,需要对工程进行“代码混淆”。
  正文:
  首先在工程目录下新建个存放反编译文件的文件夹,然后拖进工程。
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  在 Config 文件目录下新建 .sh 和 .list 文件。
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  拖进工程。
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  添加 编译脚本代码。
#!/usr/bin/env bash

TABLENAME=symbols

SYMBOL_DB_FILE="$PROJECT_DIR/$PROJECT_NAME/Config/symbols"

STRING_SYMBOL_FILE="$PROJECT_DIR/$PROJECT_NAME/Config/func.list"

HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/Config/TestCodeConfuscation.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 TestCodeConfuseUse_TestCodeConfuscation_h

#define TestCodeConfuseUse_TestCodeConfuscation_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

 

 

  添加脚本编译选项。

   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
command + B ,发现运行报错(Permission denied)。
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  解决方案:
  终端输入进入Config目录,输入 chmod 755 confuse.sh , 回车。
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
      然后再编译一下即可。打开 Config 目录,会发现多了两个文件。symbols 和 TestCodeConfuscation.h
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  新建个 prefix header 文件,引入  TestCodeConfuscation.h
     iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  重新 build 
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  接下来就可以在 func.list 文件中 添加你所需要混淆的代码了。
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
  编译之后,会发现在 TestCodeConfuscation.h 中生成了混淆后的方法或变量名
   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客

  此时再用 class-dump 一下,会发现已经完成混淆了。

   iOS 代码安全之代码混淆实践 - Zach Toby - Zach Toby的博客
     大功告成。

  文章部分参见念茜的博客

 

转载于:https://www.cnblogs.com/ZachRobin/p/6892538.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值