博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码混淆
阅读量:6206 次
发布时间:2019-06-21

本文共 1864 字,大约阅读时间需要 6 分钟。

代码混淆选择性混淆步骤

代码混淆

选择性混淆

步骤

1、创建 和 func.list 文件

—— 就是脚本文件,将需要混淆的 属性名 和 方法名 用随机字符串换

func.list —— 用来罗列需要混淆的 方法名 和 属性名 。

$ touch confuse.sh$ touch func.list复制代码

2、添加进项目

3、添加运行脚本

4、设置脚本相对路径

这里设置的是 根路径;可以根据情况,放置到文件夹下

5、编写 脚本文件 内容

在 Xcode 中,对 文件,进行编写

#!/usr/bin/env bashTABLENAME=symbolsSYMBOL_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_FILErm -f $HEAD_FILEcreateTable touch $HEAD_FILEecho '#ifndef Demo_codeObfuscation_h#define Demo_codeObfuscation_h' >> $HEAD_FILEecho "//confuse string at `date`" >> $HEAD_FILEcat "$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    fidoneecho "#endif" >> $HEAD_FILE  sqlite3 $SYMBOL_DB_FILE .dump复制代码

6、设置权限 —— Permission denied

如果直接进行 command + B 编译

/Users/Company/Library/Developer/Xcode/DerivedData/lottery-dwewlqubikmoxoejkcmvvcncfvcg/Build/Intermediates.noindex/lottery.build/Debug-iphoneos/lottery.build/Script-68BE413C21073C8B0059B160.sh: line 2: /Users/Company/Desktop/GiteeRepository/cp55new/lottery_new/confuse.sh: Permission denied复制代码

这时候,要进行 脚本权限设置

进入项目目录下$ chmod 755 confuse.sh复制代码

7、进行编译

进行 command + B 编译之后,在项目目录下,会有一个 codeObfuscation 文件;将它拖进项目中

8、pch文件内,添加头文件

#import "codeObfuscation.h"复制代码

9、添加要混淆的方法名,属性名

1. 类方法2. 实例方法	2.1 实例方法,如果是多个参数;把冒号之前的
<方法字段>
都复制进去3. 属性复制代码

10、运行程序 —— 成功检验

转载地址:http://jokja.baihongyu.com/

你可能感兴趣的文章
Android 5.0新功能详解
查看>>
邓巴数定律
查看>>
traceroute和tracert的区别
查看>>
zabbix客户端安装
查看>>
外网访问内网Apache HTTP Server
查看>>
linux 系统优化
查看>>
第二次部署Zabbix 3.0使用percona模板监控MySQL,遇到的问题和解决过程
查看>>
servlet在获取PrintWiriter并使用后是否需要关闭
查看>>
Android笔记:关于so文件
查看>>
System.Threading.ThreadAbortException: 正在中止线程。
查看>>
安装Centos6.9出现故障
查看>>
Android 自定义Toolbar/ActionBar视图左边有空白
查看>>
Django---forms各种类型表单使用
查看>>
我的友情链接
查看>>
python3 functions
查看>>
CentOS-6.5(X64)使用yum安装LAMP环境
查看>>
shell笔记之sed编辑器的基础用法(下)
查看>>
JavaScript中的一些特殊用法(二)
查看>>
Exchange 2013 传输架构
查看>>
android 新adt多一个项目的解释
查看>>