一般做了防调试的话,被调试进程会退出的,是防动态分析措施。

代码混淆加花这些是防静态分析措施.

反调试是防动态分析措施.

混淆的方法

方法名混淆其实就是字符串替换,有2个方法可以,一个是#define,一个是利用tops。

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

单段的selector,如func: ,可以通过#define func 来实现字符串替换。

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

注意!!!

1.不可以混淆iOS中的系统方法;

2.不可以混淆iOS中init等初始化方法;

3.不可以混淆xib的文件,会导致找不到对应文件;

4.不可以混淆storyboard中用到的类名;

5.混淆有风险,有可能会被App Store 拒掉。

代码易读字符串混淆

混淆分许多思路,比如:

1)花代码花指令,即随意往程序中加入迷惑人的代码指令

2)易读字符替换

防止class-dump出可读信息的有效办法是易读字符替换

1. cd到你自己的项目目录级

2. 创建两个文件:

命令 :touch  confuse.sh

touch  func.list

confuse.sh: 存放混淆的脚本

func.list:      需要混淆的方法、变量名

3..配置Build Phase

在工程Build Phase中添加执行脚本操作,执行confuse.sh脚本

这里需要注意的是 $PROJECT_DIR/confuse.sh这个的路径和创建pch文件时的路径是一样的,$PROJECT_DIR代表整个工程,/confuse.sh是这个文件的路径。

4. 然后command + B编译一下,如果报错了就cd到项目的目录级下,然后输入命令行 chmod 755 confuse.sh或chmod 777 confuse.sh 给我们的脚本本间授权

5. 成功之后会自动生成一个codeObfuscation.h文件,(在代码的本地目录里有,show in Finder 看下,能找到)

6.然后在pch文件中导入codeObfuscation.h文件。

打开项目,修改XXX-Prefix.ch ,添加混淆头文件:

#import "codeObfuscation.h"

---------------------------------------------------------

func.list 里写要混淆的方法

confuse.sh 写混淆的脚本

codeObfuscation.h 里会自动生成替代func.list里的方法

#ifndef Demo_codeObfuscation_h

#define Demo_codeObfuscation_h

---------confuse.h---------

#!/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

#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

oc代码混淆_iOS 代码混淆相关推荐

  1. oc代码混淆_OC代码混淆工具

    之前用python写了一个OC代码混淆脚本(python脚本),每次运行不方便,且其他人使用起来困难,就尝试写了一个mac工具. 工具地址:点我下载   密码:2405 现阶段工具还处于初级阶段,功能 ...

  2. oc代码混淆_oc代码混淆

    #!/usr/bin/env python#coding=utf8 importosimportreimportrandom#规避文件夹 exclude_dirs = ["JBSDKOthe ...

  3. android 代码签名apk,[Android]混淆代码后生成带签名的apk

    Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来. 我们可以从android sdk的tools目录下看到有一个proguard目录.说明具有了代码混淆的功能. 至于如何 ...

  4. java proguard 使用_使用proguard混淆java9代码

    序 本文主要研究一下如何使用proguard混淆java9代码 maven com.github.wvengen proguard-maven-plugin package proguard 6.0. ...

  5. 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】

    Java 代码混淆介绍:https://www.bilibili.com/video/BV1UE411A7rW?p=60 Android 反编译利器 jadx:GitHub上直接下载:https:// ...

  6. Android逆向笔记-Proguard混淆Android代码以及去打印日志信息

    本笔记只记录其现象和功能,不记录具体怎么去用他. 这个Proguard全称应该是project guard,用来混淆Android代码的.如下未使用Proguard的类: 使用Proguard后: 这 ...

  7. Android Studio禁止混淆JNI代码

    1.在AS项目工程下: app/proguard-android.txt 或:app/proguard-rules.pro 禁止混淆JNI代码: # 设置所有 native 方法不被混淆 -keepc ...

  8. Android APK代码混淆与资源混淆详解,你确定不看?

    APK的混淆分为资源混淆与代码混淆.一般大部分都使用两者结合.尤其是目前主流的应用. 其中的优点: 防止被恶意破解逆向分析 减少apk体积,也是瘦身的方法 代码可阅读性降低 其中的缺点: 调试不方便( ...

  9. Android高级混淆和代码保护技术

    本文讲的是 Android高级混淆和代码保护技术, 这是一篇关于 Android 代码保护的文章,旨在介绍代码混淆.防止逆向工程的各种高级技巧.大家都很忙,我也赶着回去继续开发我的新应用,因此话不多说 ...

最新文章

  1. 如何学习android高级编程
  2. 利用SAP FR高效预测客户需求
  3. g++ 4.4.7 template 没问题,前面应该程序问题!!
  4. c#_按值传递与按引用传递的区别
  5. AI修行三十篇文章到不惑,已经掌握了什么,接下来还要说什么
  6. qt: 获取sql数据表的所有的字段;
  7. 【渝粤题库】陕西师范大学210029 幼儿园游戏(学前儿童游戏)作业
  8. ASP.Net网站部署失败
  9. C#如何使用httpwebrequest通过代理访问网页
  10. GNU/Linux下有多少是GNU的?
  11. 获取到的数组在webview中成了字符串
  12. linux上apache和php结合
  13. 金融科技领域的安全威胁及金融科技安全分析
  14. 万年历代码java功能_java 的万年历代码
  15. 恒河aq7275测试软件,横河-AQ7275OTDR测试培训技巧.ppt
  16. 基于Vue的移动端h5页面的电子签名
  17. 长方形面积计算机方式,长方形正方形面积计算
  18. 计算机地图制图pdf,计算机地图制图(资料).pdf
  19. 洛谷P1308 统计单词数
  20. 2017 蓝桥杯决赛 C++B(2)瓷砖样式 dfs + hash去重

热门文章

  1. linux服务器网站被cc攻击,Linux被DDOSCC攻击如何解决
  2. 干货丨时序数据库DolphinDB即时编译(JIT)详解
  3. 实习面试TOUTIAO
  4. Android Home键、锁屏键监听
  5. ios程序员的创业之路
  6. 轻松一下,我的成长历程,看看我历次的msn签名:)
  7. Lua入门(1) 编译环境、变量类型与三种结构的实现
  8. 今天项目报错: No operations allowed after connection closed
  9. 影响云服务器租用价格的因素有哪些
  10. Windows 安装Redis(图文详解)