2021-01-01 00:00:00
zl
iOS混淆笔记
入职新公司,没有带笔记,结果就N脸懵了,记在掘金方便往后查找。
混淆:
下载安装链接:https://github.com/HikariObfuscator/Hikari/releases
将Hikari.xctoolchain解压到~/Library/Developer/Toolchains/ 或/Library/Developer/Toolchains/ 即可。区别是前者只有当前用户可用,后者所有用户都可使用
1.选择Xcode -> Toolchains -> HikariObfuscator将混淆工具和项目关联。
2.将所有与要运行的target相关的target(包括pod进来的库)Enable Index-While-Building 的值改为NO。
3.Optimization Level 的值设置为 None[-O0]
3.如果是全局混淆,则在需要混淆的target中直接将Other C Flags的值加上所需的混淆标记
Other C Flags
- 每个flag前加需要上-mllvm
一般添加以下三种标记:
-mllvm -enable-fco
-mllvm -enable-funcwra
-mllvm -enable-strcry
-mllvm -enable-acdobf
4.编译即可完成混淆
其余全部标记:
-mllvm -enable-bcfobf 启用伪控制流
-mllvm -enable-cffobf 启用控制流平坦化
-mllvm -enable-splitobf 启用基本块分割
-mllvm -enable-subobf 启用指令替换
-mllvm -enable-acdobf 启用反class-dump
-mllvm -enable-indibran 启用基于寄存器的相对跳转,配合其他加固可以彻底破坏IDA/Hopper的伪代码(俗称F5)
-mllvm -enable-strcry 启用字符串加密
-mllvm -enable-funcwra 启用函数封装
-mllvm -enable-allobf 依次性启用上述所有标记
- 如果无法提审:正常使用Hikari工具链编译后删除IPA的Info.plist下的
DefaultToolchainOverrideInfo
。然后重启Xcode和Organizer。
对于代码信息的修改,可以使用KLGenerateSpamCode程序,根据文档提示进行修改。
Github地址: https://github.com/klaus01/KLGenerateSpamCode
对于各功能的使用,需要注意顺序。
删除空行和注释可能存在少部分代码的误删。
项目过于复杂不建议修改类文件前缀,可能产生未知bug。部分目录修改前缀也不可取,未在目录内的引用不会更改,需要手动更改。
垃圾代码生成器,使用工具ChaosTool
下载地址:https://www.yaozuopan.top
/* 支持返回值/属性/参数类型 **/:NSString/NSArray/NSData/NSDictionary/UIImage 最好删除UIimage,否则部分垃圾代码容易产生报错