iOS混淆马甲包常见误区

技术说明

出于某种需求,一些刚接触iOS混淆的用户,很多东西还不是很明白,以下是一些常见的技术误区,汇总如下

项目 作用 说明 验证工具
删除注释 没用 注释不参与编译 Hopper、IDA
宏定义混淆 没用 宏在预编译阶段会展开替换,改宏名无效 Hopper、IDA
文件夹名混淆 没用 文件夹只是给开发者方便区分,代码编译链接之后只有一个二进制文件 Hopper、IDA
枚举名混淆 Swift有用 在 Swift 中,枚举类型是一等(first-class)类型,有用
OC、C、C++枚举的枚举本质上无符号整形,编译完和名称无关
Hopper、IDA
局部变量名称混淆 没用 局部变量的名称最终编译成寄存器,和名称无关 Hopper、IDA
打乱函数申明、定义顺序 基本没用 函数申明只是为了后期代码链接,声明不参与编译。单纯改定义顺序用处不大,因为一个排序结果都是一样。
属性、方法、类、图片等名称混淆:只加前后、单词随机拼接、字符随机组合 有害 刻意加前后缀只会增加风险,移除前后缀对apple的智能AI太小儿科了,无意义的单词拼接大概率触发封号,字符随机组合试用用app加固,提审只会2.3.1 好的命名应该尽可能:短、常见、有意义。例如:view、title、name、x、y等
插入垃圾代码 双刃剑 没有语义(简单独立伪代码,简单独立插入,一些全局方法的频繁调用)的垃圾代码,大概率触发封号 当你一眼就感觉这代码很别扭

好的混淆工具完全能做到以上需求,建议新用户多对比,多实践,不要轻易相信任何你无法验证真伪的说词。

总结

马甲包提审前要能说服自己,任何的投机取巧,侥幸心理都是不可取的。

参考

WHC_ConfuseSoftware
DiffHelper
STCObfuscator
iOS_NQConfuseTool
ZFJObsLib
520coding/confuse

你可能感兴趣的:(iOS混淆马甲包常见误区)