前言
因公司发展需要,本人19年中旬开始从事iOS马甲包业务,前期也使用过目前市面上其他得工具,实际效果不太理想。经过大量实践,开发出一款功能齐全的马甲包工具(支持OC、Lua、C++)。工具的主要功能OC已封装成Mac应用,其他功能还在封装中,敬请期待。(目前公测阶段: 免费)
提示
为了提高通用性,近期不断重构(>=v1.2.0)之前老版本的功能,为此新建测试工程【confuse_test】,大家在实际使用过程中如果遇到问题,欢迎扩展测试工程(在工程中请注明bug细节)。
1.2.0之前的老版本说明: 简介:不涉及语法,没有编译要求,但是混淆后可能出现局部漏改或者改错,请自行添加至黑名单过滤。 适用项目:C++、Swift、RN等还未适配的混合项目。 使用条件:目前能用1.1.3,其他过期了
自述
其实识别一个工具的优劣,只需看看它能否修改方法名的所有参数名(极少)、带block的参数的方法(极少),偏移元素(较少)。更别说“还有谁...”能识别宏、区分继承链等上下文关联内容。也欢迎大家使用不同工具混淆测试工程【confuse_test】,对比效果。 马甲包的本质:
- 阶段一减低重复率 ,本人开发初期的版本和目前市面上的其它工具基本相似,主要是‘名称’全局替换这一个基本的功能
- 阶段二减少相似度(相同元素的正态分布),目前该工具经过优化已经有了很大的改善,已经在慢慢往这方面靠近,详情见以下功能介绍。事物都有两面性,功能越强大混淆耗时越长,如果你的项目很大,混淆几个小时也是有可能的,请不要见怪,后续持续优化中。
功能
confuse是一款马甲包工具,尽可能模拟人工混淆,避免机核4.3、2.1、2.3.1、账号调查等。 目标:模拟人工修改一切能改的地方,这也是为什么本工具只有黑名单没有白名单的原因 详细功能如下:
已完成
- [资源替换],混淆前指定需要替换的资源文件夹,自动进行同名文件替换,方便快捷
- [删除注释]
- [修改图片],图片质量修改、大小偏移、颜色微调、透明度设置、RGB偏移、模式修改等
- [重命名图片]
- [重命名多语言],支持汉字,所有字符串将被修改
- [重命名属性],支持@property的所有类型
- 基本功能,改名字、前缀类似其他工具,不做过多描述
- 优势:
- 识别语法,识别类型、继承关系,属性名混淆和类名(包含继承链)关联,同名属性不同类混淆后将不一致,自动识别系统属性
- 可设置文件名Model后缀过滤
- 智能名词替换
- 优势:
- [重命名方法],近似Xcode的Rename功能
- 基本功能:改名字、前缀类似其他工具,不做过多描述
- 优势:
- 语法相关,识别类型、继承关系,支持多参修改,方法名混淆和类名(包含继承链)及类型关联,同名方法不同类、同类同名方法不同类型(类方法、对象方法)混淆后将不一致
- 智能名词替换
- 智能避开系统、第三方、Pod方法,并不是‘傻瓜式’的相等判断
- 优势:
- [插入方法],插入并调用上下文关联方法,告别“垃圾代码”
- 优势:
- 根据方法的返回值类型,在分类中创建相应的方法。同时封装原方法的返回值并调用。
- 可多次执行,指数x2递增
- 优势:
- [修改方法],模拟人工封装调用
- 优势:
- 对原方法进行拆分调用并根据参数类型(支持继承)局部调整,详情见[修改方法]参数类型汇总表
- 可多次执行,指数x2递增
- 优势:
- [重命名全局变量],智能名词替换
- [修改全局变量],替换全局变量名、全局变量转化为全局函数、混淆字符串变量值
- [修改局部变量],模拟人工封装调用,变量名关联类型
- 优势:
- 局部变量值运行时保持不变,详情见[修改局部变量]修改局部变量-支持类型汇总表
- 可多次执行,指数x2递增
- 优势:
- [修改字符串],加密处理(硬编码->Byte数组),自定义设置‘最少长度’、‘有效个数’
- [修改xib、storyboard],插入垃圾视图,并修改内部结构属性
- [修改字体],对项目中使用的字体随机微调,识别宏
- [修改颜色],对项目中UI控件颜色随机偏移,识别宏
- [UI布局偏移],支持Frame,Mansonry以及SDAutoLayout
- 优化中...~~[插入文件],插入ViewController类文件,相互调用及源文件调用,支持自动、收入导入项目~~
- [插入属性],类中自动初始化、调用及销毁
- [插入图片],类中自动初始化、调用及销毁
- 优化中...~~[插入文本],文件(json、txt、doc)~~
- [重命名类],类名及对应的文件名一起修改,支持近似替换,可指定添加前缀
- [修改项目],基本配置信息,例如:版本号、SDK的BundleID
以上所有功能均支持黑名单过滤,对指定的内容进行屏蔽,忽略混淆。
名词解释
- 智能名词替换:重命名时使用关联类型已有信息+相近语义+类型+部分旧词汇等组合,~~弃用‘随机单词无脑组合’~~
规划中
更新迭代将按照以下顺序依次进行
- Objective-C,重构的目的是为了提高工具的通用性和稳定性,及强化功能
- 优化插入垃圾,目标逼近正常开发,让插入的垃圾不在是垃圾,告别所谓的垃圾
- [插入文件],提取项目原有信息,进行合理组合并创建类,然后在源文件调用,支持自动、收入导入项目
- [插入文本],文件(json、txt、doc),尽可能模拟正常项目资源配置
- 重构《多语言》
- 移除混淆前需要创建目录Confuse、Discard要求(这部分是老代码,需要些时间适配,请见谅)
- 优化插入垃圾,目标逼近正常开发,让插入的垃圾不在是垃圾,告别所谓的垃圾
- C++,现有功能还不具备通用性,暂时不开放,准备重构中...
- 字符串加密混淆
- 方法
- 重命名
- 插入
- 修改
- 属性
- 重命名
- 修改
- 插入
- Cocos2d-x,现有功能不具备通用性,准备整合至C++中
- Lua的针对性太强了,暂时不开放,暂时不打算重构有需要在说吧
- Swift,本人实际项目使用不多,故排在最后,看用户需求再决定
图文介绍
运行APP效果图,使用前请详细阅读工具使用教程
更新日志
v2.2.1(2020.11.04)
- 优化[修改字符串],新增过滤static静态变量是字符串(需用户手动修改源码),并在预检查中显示扫描结果
- 优化所有重命名规则,移除随机拼接单词,使用(项目中同类型的词汇+相近替换+类型+部分旧词汇组合)
- 修复父类被多个子类继承且同时重写父类方法,有可能导致的修改不一致问题
- 移除[重命名图片]需要同时开启[修改图片]的限制
confuse更新说明 · 语雀
感谢反馈
shizu2014、myhonior、imbahong
链接导航
confuse使用说明 · 语雀
软件使用问答(Q&A) · 语雀
修改方法-支持参数类型汇总表 · 语雀
修改局部变量-支持类型汇总表 · 语雀