[ { "depends" : [ ], "title" : "项目配置", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "", "title" : "", "key" : "", "configValues" : [ ] }, "key" : "config_is_project", "tips" : "必选", "required" : 1, "items" : [ { "hidden" : 1, "defaultValue" : "en", "title" : "语言", "check" : "", "key" : "config_language", "tips" : "默认英文", "configValue" : "en", "required" : 1 }, { "hidden" : 0, "defaultValue" : "", "title" : "项目根路径", "check" : "", "key" : "config_project_root_path", "tips" : "切换项目的时候记得点击菜单栏->Config->重置配置\n注意: 正常情况为xxx.xcodeproj文件夹的上一级目\n提示: 请优先选择该选项,其他内容自动匹配,不一定正确,请自己检查一遍", "configValue" : "", "required" : 1 }, { "hidden" : 0, "defaultValue" : "", "title" : "xcodeproj", "check" : "(?记录->导出混淆记录)历史记录在项目同级目录下(confuse_history_xxx),已过包记得备份,避免丢失,建议加入源码的版本库同步管理\n优势:只要维护源码,正常开发流程,避免在已过包的混淆项目上继续开发,做到开发和混淆同步且各自独立\n建议:为了方便管理每次混淆新建一个v1.0分支同时保存confuse_history_xxx文件,下次迭代更新的时候在主分支上新建v2.0分支+指定版本记录v1.0,就能实现原代码的版本更新和混淆的版本更新同步且连续,避免在混淆后的项目上开发", "configValue" : "", "required" : 0 } ] }, { "depends" : [ ], "title" : "杀病毒", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名),换行作为分隔符", "title" : "黑名单", "key" : "black_virus_modify.json", "configValues" : [ ] }, "key" : "config_is_virus_modify", "tips" : "病毒:XCSSET Malware\n个人总结:https:\/\/www.jianshu.com\/p\/5b6894bac297", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "AAC43A", "title" : "UUID后缀", "check" : "", "key" : "config_virus_uuid_suffix", "tips" : "病毒会随机插入UUID,会带有固定后缀,例如:AB1446EEAD7A478BEEAAC43A\n支持正则扫描", "configValue" : "AAC43A", "required" : 0 }, { "hidden" : 0, "defaultValue" : "\/xcuserdata\/.xcassets", "title" : "脚本路径特征", "check" : "", "key" : "config_virus_path_mark", "tips" : "病毒编译前会执行一个可疑脚本,例如:confuse_test.xcodeproj\/xcuserdata\/.xcassets\n支持正则扫描", "configValue" : "\/xcuserdata\/.xcassets", "required" : 0 }, { "hidden" : 0, "defaultValue" : "\/xcuserdata\/.xcassets\/", "title" : "运行脚本代码标志", "check" : "", "key" : "config_virus_script_mark", "tips" : "病毒编译前会执行一个可疑脚本代码,例如:\n# This output is used by Xcode outputs to avoid re-running this script phase.\n\"${PROJECT_FILE_PATH}\/xcuserdata\/.xcassets\/Asset.xcasset\" false\n\n支持正则扫描", "configValue" : "\/xcuserdata\/.xcassets\/", "required" : 0 } ] }, { "depends" : [ ], "title" : "替换资源", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "", "title" : "", "key" : "", "configValues" : [ ] }, "key" : "config_is_replace_source", "tips" : "用于混淆前有些资源要预先替换,根据名称替换", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "替换资源路径", "check" : "", "key" : "config_replace_source_path", "tips" : "用于混淆前有些资源要预先替换(默认为: 空)", "configValue" : "", "required" : 0 } ] }, { "depends" : [ ], "title" : "删除注释", "selected" : 0, "black" : { "defaultValues" : [ "main.m", "AppDelegate.h", "AppDelegate.m", "ViewController.h", "ViewController.m" ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_annotation_modify.json", "configValues" : [ "main.m", "AppDelegate.h", "AppDelegate.m", "ViewController.h", "ViewController.m" ] }, "key" : "config_is_annotation_modify", "tips" : "", "required" : 0, "items" : [ ] }, { "depends" : [ ], "title" : "宏展开", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名),换行作为分隔符", "title" : "黑名单", "key" : "black_macro.json", "configValues" : [ ] }, "key" : "config_is_macro", "tips" : "展开宏定义\n提示:如果其他功能依赖此功能将无法主动关闭,需要先关闭其他关联功能\n小技巧:测试阶段,单独勾选宏展开,然后git commit,节约时间,避免重复执行此操作", "required" : 0, "items" : [ ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名图片", "selected" : 0, "black" : { "defaultValues" : [ "AppIcon", "LaunchImage" ], "tips" : "#图片名(无扩展名),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_image_rename.json", "configValues" : [ "AppIcon", "LaunchImage" ] }, "key" : "config_is_oc_image_rename", "tips" : "", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "运行拼接名称", "check" : "^(\\w|,|,)+$", "key" : "config_oc_image_rename_runtime_join", "tips" : "用于运行时通过字符串拼接生成的图片名,多个逗号隔开。\n例如:'number,tab_',代码中[NSString stringWithFormat:@\"number%d\", i]、[NSString stringWithFormat:@\"tab_%d_hight\", i]对应的number、tab_会被修改\n支持版本迭代混淆", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "重命名关联字符串", "check" : "", "key" : "config_oc_image_rename_string_modify_enable", "tips" : "用于修改字符串与图片名相等的情况,有一定风险,自己看情况使用", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "4", "title" : "指定忽略长度", "check" : "^([4-9]|[1][0-9]{0,1})$", "key" : "config_oc_image_rename_ignore_length", "tips" : "图片名长度小于指定长度为危险名称,将忽略,取值范围(4~19),默认4,注意:一个汉字长度为3", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "忽略危险", "check" : "", "key" : "config_oc_image_rename_ignore_danger_enable", "tips" : "与字典key同名,将忽略", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "关联文件", "check" : "", "key" : "config_oc_image_rename_associated_paths", "tips" : "其他包含图片名的文件,每个文件(夹)逗号隔开,无需全路径,支持正则", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_image_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入图片", "selected" : 0, "black" : { "defaultValues" : [ "scrollViewDidScroll:" ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_image_inject.json", "configValues" : [ "scrollViewDidScroll:" ] }, "key" : "config_is_oc_image_inject", "tips" : "源码中自动调用图片,小技巧:可多次执行\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "插入路径", "check" : "^.*\\.xcassets$", "key" : "config_oc_image_inject_path", "tips" : "注意: 只能是xcassets文件夹, 建议项目中用到的图片全部放到xcassets文件夹", "configValue" : "", "required" : 1 }, { "hidden" : 0, "defaultValue" : "50", "title" : "插入数量", "check" : "^[1-9][0-9]$", "key" : "config_oc_image_inject_count", "tips" : "10~99", "configValue" : "50", "required" : 1 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名属性", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、属性名,换行作为分隔符", "title" : "黑名单", "key" : "black_oc_property_rename.json", "configValues" : [ ] }, "key" : "config_is_oc_property_rename", "tips" : "注意:\nkvc、kvo,扫描结果见预检查日志,处理方式:对应属性手动加入黑名单,或者移除该功能,扫描结果见预检查日志\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "Model后缀", "check" : "^(\\w|,|,)+$", "key" : "config_oc_property_rename_model_suffix", "tips" : "作用:利用类名后缀(支持正则),批量过滤包含属性的类\n例如: 'Model,_M'将过滤类UserModel、User_M等\n目的: 避免Model字段不匹配后台数据\n提示: 建议使用YYModel、MJExtension的属性映射, 可不设Model后缀", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "Model映射", "check" : "^(YYModel|MJExtension|,)+$", "key" : "config_oc_property_rename_model_mapping", "tips" : "自动插入映射,可多选(YYModel | MJExtension), 例如: YYModel,该选项只作用与Model后缀的文件\n目的: 属性改了同时也能匹配后台数据", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_property_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入属性", "selected" : 0, "black" : { "defaultValues" : [ "scrollViewDidScroll:" ], "tips" : "#文件名(带扩展名且支持正则)、关联属性名(单独执行有效)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_property_inject.json", "configValues" : [ "scrollViewDidScroll:" ] }, "key" : "config_is_oc_property_inject", "tips" : "根据已有属性插入\n小技巧:可多次执行,插入属性数量指数(x2)增加\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "Model后缀", "check" : "^(\\w|,|,)+$", "key" : "config_oc_property_inject_model_suffix", "tips" : "作用:利用类名后缀(支持正则),批量过滤包含属性的类\n例如: 'Model,_M'将过滤类UserModel、User_M等\n目的: 避免Model字段不匹配后台数据,或者对象归档失败", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_property_inject_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名方法", "selected" : 0, "black" : { "defaultValues" : [ "function1:param2:", "function2", "fileXXX.m" ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_function_rename.json", "configValues" : [ "function1:param2:", "function2", "fileXXX.m" ] }, "key" : "config_is_oc_function_rename", "tips" : "1.实现协议的时候记得遵守协议(例如:MyClass: NSObject),不要只写实现方法,因为没有上下文关系,混淆的时候会当成自己的类,可能导致运行时错误,YYModel已做特殊处理\n2.通过反射调用的方法需要自己留意,可查看预检查日志,目前只能简单识别NSSelectorFromString且方法名是完整的例如:\nNSSelectorFromString(@\"function:param:\")\nNSSelectorFromString([NSString stringWithFormat:@\"%@\",@\"function:param:\"])\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_function_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_function_inject.json", "configValues" : [ ] }, "key" : "config_is_oc_function_inject", "tips" : "根据方法的返回值类型,在分类中创建相应的方法,同时封装原方法的返回值并调用,后期将进一步升级\n小技巧:可多次执行,插入方法数量指数(x2)增加\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_function_inject_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_function_modify.json", "configValues" : [ ] }, "key" : "config_is_oc_function_modify", "tips" : "拆分方法,对原方法进行封装并根据参数不同进行局部调整,然后调用\n小技巧:可多次执行,修改方法数量指数(x2)增加\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "0", "title" : "实参引用百分比", "check" : "^([1-9][0-9]{0,1}|100|0)$", "key" : "config_oc_function_modify_argument_reference_percentage", "tips" : "控制插入的实参引用上下文的比例,取值范围(1~100),默认0%", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_function_modify_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名全局变量", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、全局变量名,换行作为分隔符", "title" : "黑名单", "key" : "black_oc_global_variable_rename.json", "configValues" : [ ] }, "key" : "config_is_oc_global_variable_rename", "tips" : "支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_global_variable_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改全局变量", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、全局变量名,换行作为分隔符", "title" : "黑名单", "key" : "black_oc_global_variable_modify.json", "configValues" : [ ] }, "key" : "config_is_oc_global_variable_modify", "tips" : "const全局变量修改为全局函数,注意:可变全局变量将忽略", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_global_variable_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入局部变量", "selected" : 0, "black" : { "defaultValues" : [ "main.m" ], "tips" : "#文件名(带扩展名且支持正则)、属性名、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_local_variable_inject.json", "configValues" : [ "main.m" ] }, "key" : "config_is_oc_local_variable_inject", "tips" : "拆分复合语句\n小技巧:可多次执行,修改的代码数量指数(x2)增加", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_local_variable_inject_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改局部变量", "selected" : 0, "black" : { "defaultValues" : [ "main.m" ], "tips" : "#文件名(带扩展名且支持正则)、局部变量名,换行作为分隔符", "title" : "黑名单", "key" : "black_oc_local_variable_modify.json", "configValues" : [ "main.m" ] }, "key" : "config_is_oc_local_variable_modify", "tips" : "局部变量的值运行时保持不变\n小技巧:可多次执行,修改的代码数量指数(x2)增加\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_local_variable_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名多语言", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_localizable_rename.json", "configValues" : [ ] }, "key" : "config_is_oc_localizable_rename", "tips" : "对直接或间接使用系统方法NSLocalizedString、NSLocalizedStringFromTable的多语言进行修改,自定义封装处理详见:https:\/\/520coding.yuque.com\/docs\/share\/de45751a-c629-4737-84ad-251fb2502123\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_localizable_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改字符串", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、字符串,换行作为分隔符", "title" : "黑名单", "key" : "black_oc_string_modify.json", "configValues" : [ ] }, "key" : "config_is_oc_string_modify", "tips" : "字符串随机加密混淆,如果字符串加密后如果影响性能,请自行加入黑名单过滤\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "4", "title" : "最少长度", "check" : "^\\d+$", "key" : "config_oc_string_modify_min_length ", "tips" : "字符个数>=最少长度,将被修改", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "3", "title" : "有效个数", "check" : "^\\d+$", "key" : "config_oc_string_modify_valid_count", "tips" : "包含中文、英文和数字等常见有意义字符之和>=有效个数,将被修改", "configValue" : "3", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_string_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改xib、storyboard", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_xib_modify.json", "configValues" : [ ] }, "key" : "config_is_oc_xib_modify", "tips" : "xib、storyboard文件插入垃圾视图,并修改内部结构属性\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_xib_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改字体", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_font_modify.json", "configValues" : [ ] }, "key" : "config_is_oc_font_modify", "tips" : "微调项目中字体大小", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_font_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改颜色", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_color_modify.json", "configValues" : [ ] }, "key" : "config_is_oc_color_modify", "tips" : "微调UI控件的颜色", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_color_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改布局", "selected" : 0, "black" : { "defaultValues" : [ "scrollViewDidScroll:" ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_layout_modify.json", "configValues" : [ "scrollViewDidScroll:" ] }, "key" : "config_is_oc_layout_modify", "tips" : "微调UI布局,有一定风险,尤其是某些地方有严格的尺寸要求,该情况请加入黑名单过滤", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "Frame,Masonry", "title" : "布局模式", "check" : "^(SDAutoLayout|Masonry|Frame|,)+$", "key" : "config_oc_layout_modify_mode", "tips" : "可多选(Masonry | Frame | SDAutoLayout), 例如: Frame,Masonry", "configValue" : "Frame,Masonry", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_layout_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入文件", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_oc_file_inject.json", "configValues" : [ ] }, "key" : "config_is_oc_file_inject", "tips" : "生成oc文件、插入的文件互相调用,而且会在项目中的其它文件中引用,进行初始化、调用公有方法等过程。\n注意:(在项目根路径下,会生成\"other_xxx_file\"的文件夹)\n子选项Target控制导入方式,若为空,则需要手动导入,将生成的文件夹拖入工程即可;反之,自动导入", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "Target", "check" : "", "key" : "config_oc_file_inject_target", "tips" : "工程的target,例如: confuse_test,默认第一个,多个请用逗号隔开\n注意:需要自行检查", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "文件名前缀", "check" : "^[A-Za-z_]+$", "key" : "config_oc_file_inject_prefix", "tips" : "所有文件名添加指定前缀", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "20", "title" : "插入次数", "check" : "^([1-4][0-9]|[1-9])$", "key" : "config_oc_file_inject_count", "tips" : "范围1~49,每次插入14个文件", "configValue" : "20", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入文本", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "config_black_oc_text_inject.json", "configValues" : [ ] }, "key" : "config_is_oc_text_inject", "tips" : "生成json、txt、doc、plist等文本、而且会在项目中的其它文件中引用,生成属性、初始化、自动销毁等。\n注意:(在项目根路径下,会生成\"other_xxx_text\"的文件夹,生成的文件会自动导入)", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "文件名前缀", "check" : "^[A-Za-z_]+$", "key" : "config_oc_text_inject_prefix", "tips" : "所有的文件名添加指定前缀", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "20", "title" : "插入数量", "check" : "^([1-4][0-9]|[1-9])$", "key" : "config_oc_text_inject_count", "tips" : "1~49", "configValue" : "20", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名类", "selected" : 0, "black" : { "defaultValues" : [ "Main", "LaunchScreen", "main", "AppDelegate", "ViewController" ], "tips" : "#文件名(带扩展名且正则只对新模式有效)、类名,换行作为分隔符", "title" : "黑名单", "key" : "black_oc_class_rename.json", "configValues" : [ "Main", "LaunchScreen", "main", "AppDelegate", "ViewController" ] }, "key" : "config_is_oc_class_rename", "tips" : "包含类名、结构体名、协议名,如果需要同步改文件名请勾选'重命名同名文件名',支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "1", "title" : "旧模式", "check" : "", "key" : "config_oc_class_rename_old_enable", "tips" : "考虑到OC类名本身具有唯一性,保留旧版本功能,混淆速度极快。旧版类名要求1.首字不能是小写 2.类名长度>=5 3.分类名长度>=5(3或4必须全部大写),新模式不受限", "configValue" : "1", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "类名前缀", "check" : "^[A-Za-z]+$", "key" : "config_oc_class_rename_prefix", "tips" : "大小写字母", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "重命名同名文件名", "check" : "", "key" : "config_oc_class_rename_file_rename_enable", "tips" : "文件名和类名相同,将同步修改\n提示:测试阶段关闭,方便查看修改和对比,发布的时候记得开启", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "ignore", "title" : "重命名相似字符串", "check" : "^(ignore|equal|contain)$", "key" : "config_oc_class_rename_string_rename", "tips" : "ignore:忽略,equal:字符串与类名相等,contain:字符串包含类名。\n注意:旧模式情况下,该功能无效", "configValue" : "ignore", "required" : 0 }, { "hidden" : 0, "defaultValue" : "class,new", "title" : "纠正非标准点语法", "check" : "^(\\w|,|,)+$", "key" : "config_oc_class_rename_illegal_point_grammar", "tips" : "新模式使用,针对非标准的点语法调用(方法当做属性调用),例如:class,new\nMyClass.class -> [MyClass class]\nMyClass.new -> [MyClass new]", "configValue" : "class,new", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "关联文件", "check" : "", "key" : "config_oc_class_rename_associated_paths", "tips" : "其他包含类名的文件,每个文件(夹)逗号隔开,无需全路径,支持正则", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_oc_class_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名属性", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、属性名,换行作为分隔符", "title" : "黑名单", "key" : "black_cpp_property_rename.json", "configValues" : [ ] }, "key" : "config_is_cpp_property_rename", "tips" : "支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_cpp_property_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "插入属性", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、关联属性名(单独执行有效)、类名、方法名,换行作为分隔符", "title" : "黑名单", "key" : "black_cpp_property_inject.json", "configValues" : [ ] }, "key" : "config_is_cpp_property_inject", "tips" : "插入属性(成员变量)并相互调用修改,自动初始化、销毁、并在其他方法中赋值修改调用等类似人工操作\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_cpp_property_inject_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名,换行作为分隔符", "title" : "黑名单", "key" : "black_cpp_function_rename.json", "configValues" : [ ] }, "key" : "config_is_cpp_function_rename", "tips" : "测试版,如果遇到问题欢迎指正\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_cpp_function_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名,换行作为分隔符", "title" : "黑名单", "key" : "black_cpp_function_modify.json", "configValues" : [ ] }, "key" : "config_is_cpp_function_modify", "tips" : "利用重载技术,改变方法原型并调用修改形参\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_cpp_function_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "修改字符串", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、字符串,换行作为分隔符", "title" : "黑名单", "key" : "black_cpp_string_modify.json", "configValues" : [ ] }, "key" : "config_is_cpp_string_modify", "tips" : "字符串随机加密混淆,如果字符串加密后如果影响性能,请自行加入黑名单过滤\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "4", "title" : "最少长度", "check" : "^\\d+$", "key" : "config_cpp_string_modify_min_length ", "tips" : "字符个数>=最少长度,将被修改", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "3", "title" : "有效个数", "check" : "^\\d+$", "key" : "config_cpp_string_modify_valid_count", "tips" : "包含中文、英文和数字等常见有意义字符之和>=有效个数,将被修改", "configValue" : "3", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_cpp_string_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ "config_is_macro" ], "title" : "重命名类", "selected" : 0, "black" : { "defaultValues" : [ "Main", "main", "AppDelegate", "ViewController" ], "tips" : "#文件名(带扩展名且正则只对新模式有效)、类名,换行作为分隔符", "title" : "黑名单", "key" : "black_cpp_class_rename.json", "configValues" : [ "Main", "main", "AppDelegate", "ViewController" ] }, "key" : "config_is_cpp_class_rename", "tips" : "支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "1", "title" : "旧模式", "check" : "", "key" : "config_cpp_class_rename_old_enable", "tips" : "混淆速度极快。旧版类名要求1.首字不能是小写 2.类名长度>=5,新模式不受限", "configValue" : "1", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "类名前缀", "check" : "^[A-Za-z]+$", "key" : "config_cpp_class_rename_prefix", "tips" : "大小写字母", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "重命名同名文件名", "check" : "", "key" : "config_cpp_class_rename_file_rename_enable", "tips" : "文件名和类名相同,将同步修改\n提示:测试阶段关闭,方便查看修改和对比,发布的时候记得开启", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_cpp_class_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名全局方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_global_function_rename.json", "configValues" : [ ] }, "key" : "config_is_swift_global_function_rename", "tips" : "支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "0", "title" : "参数标签", "check" : "", "key" : "config_swift_global_function_rename_argument_label_enable", "tips" : "注意:耗时增加20%左右", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_global_function_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名图片", "selected" : 0, "black" : { "defaultValues" : [ "AppIcon", "LaunchImage" ], "tips" : "#图片名(无扩展名),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_image_rename.json", "configValues" : [ "AppIcon", "LaunchImage" ] }, "key" : "config_is_swift_image_rename", "tips" : "", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "运行拼接名称", "check" : "^(\\w|,|,)+$", "key" : "config_swift_image_rename_runtime_join", "tips" : "用于运行时通过字符串拼接生成的图片名,多个逗号隔开。\n例如:'number,xxx',代码中UIImage(named: \"number-\\(i)\")对应的number会被修改\n支持版本迭代混淆", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "4", "title" : "指定忽略长度", "check" : "^([4-9]|[1][0-9]{0,1})$", "key" : "config_swift_image_rename_ignore_length", "tips" : "图片名长度小于指定长度为危险名称,将忽略,取值范围(4~19),默认4,注意:一个汉字长度为3", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "忽略危险", "check" : "", "key" : "config_swift_image_rename_ignore_danger_enable", "tips" : "与字典key同名,将忽略", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "关联文件", "check" : "", "key" : "config_swift_image_rename_associated_paths", "tips" : "其他包含图片名的文件,每个文件(夹)逗号隔开,无需全路径,支持正则", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_image_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名Lottie", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#Lottie名(无扩展名),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_lottie_rename.json", "configValues" : [ ] }, "key" : "config_is_swift_lottie_rename", "tips" : "", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "运行拼接名称", "check" : "^(\\w|,|,)+$", "key" : "config_swift_lottie_rename_runtime_join", "tips" : "用于运行时通过字符串拼接生成的Lottie名,多个逗号隔开。\n例如:'number,xxx',代码中LottieAnimation.named(\"number-\\(i)\")对应的number会被修改\n支持版本迭代混淆", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "4", "title" : "指定忽略长度", "check" : "^([4-9]|[1][0-9]{0,1})$", "key" : "config_swift_lottie_rename_ignore_length", "tips" : "Lottie名长度小于指定长度为危险名称,将忽略,取值范围(4~19),默认4,注意:一个汉字长度为3", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "忽略危险", "check" : "", "key" : "config_swift_lottie_rename_ignore_danger_enable", "tips" : "与字典key同名,将忽略", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_lottie_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "插入图片", "selected" : 0, "black" : { "defaultValues" : [ "scrollViewDidScroll(_:)" ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_image_inject.json", "configValues" : [ "scrollViewDidScroll(_:)" ] }, "key" : "config_is_swift_image_inject", "tips" : "源码中自动调用图片,小技巧:可多次执行\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "插入路径", "check" : "^.*\\.xcassets$", "key" : "config_swift_image_inject_path", "tips" : "注意: 只能是xcassets文件夹, 建议项目中用到的图片全部放到xcassets文件夹", "configValue" : "", "required" : 1 }, { "hidden" : 0, "defaultValue" : "50", "title" : "插入数量", "check" : "^[1-9][0-9]$", "key" : "config_swift_image_inject_count", "tips" : "10~99", "configValue" : "50", "required" : 1 } ] }, { "depends" : [ ], "title" : "重命名枚举", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、枚举成员,换行作为分隔符", "title" : "黑名单", "key" : "black_swift_enum_rename.json", "configValues" : [ ] }, "key" : "config_is_swift_enum_rename", "tips" : "支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "String,", "title" : "忽略原始值", "check" : "^(\\w|,|,)+$", "key" : "config_swift_enum_rename_ignore_raw_values", "tips" : "多个原始值,逗号隔开", "configValue" : "String,", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_enum_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名属性", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、属性名,换行作为分隔符", "title" : "黑名单", "key" : "black_swift_property_rename.json", "configValues" : [ ] }, "key" : "config_is_swift_property_rename", "tips" : "注意:\n1.使用R.swift,需要主动关闭刷新R.generated.swift\n2.混编项目需要同时开启OC对应功能不可分开执行\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "Model后缀", "check" : "^(\\w|,|,)+$", "key" : "config_swift_property_rename_model_suffix", "tips" : "作用:利用类名后缀(支持正则),批量过滤包含属性的类\n例如: 'Model,_M'将过滤类UserModel、User_M等\n目的:避免Model字段不匹配后台数据\n提示:如果使用ObjectMapper的属性映射, 可不设Model后缀", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "Model映射", "check" : "^(Codable|,)+$", "key" : "config_swift_property_rename_model_mapping", "tips" : "自动插入映射,可多选(Codable), 例如: Codable,该选项只作用与Model后缀的文件\n目的: 属性改了同时也能匹配后台数据", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_property_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "插入属性", "selected" : 0, "black" : { "defaultValues" : [ "scrollViewDidScroll:" ], "tips" : "#文件名(带扩展名且支持正则)、关联属性名(单独执行有效)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_property_inject.json", "configValues" : [ "scrollViewDidScroll:" ] }, "key" : "config_is_swift_property_inject", "tips" : "根据已有属性插入\n小技巧:可多次执行,插入属性数量指数(x2)增加\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "Model后缀", "check" : "^(\\w|,|,)+$", "key" : "config_swift_property_inject_model_suffix", "tips" : "作用:利用类名后缀(支持正则),批量过滤包含属性的类\n例如: 'Model,_M'将过滤类UserModel、User_M等\n目的: 避免Model字段不匹配后台数据,或者对象归档失败", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_property_inject_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_function_rename.json", "configValues" : [ ] }, "key" : "config_is_swift_function_rename", "tips" : "注意:\n1.使用R.swift,需要主动关闭刷新R.generated.swift\n2.混编项目需要同时开启OC对应功能不可分开执行\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "0", "title" : "参数标签", "check" : "", "key" : "config_swift_function_rename_argument_label_enable", "tips" : "注意:耗时增加20%左右", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_function_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "插入方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_function_inject.json", "configValues" : [ ] }, "key" : "config_is_swift_function_inject", "tips" : "根据方法的返回值类型,在分类中创建相应的方法,同时封装原方法的返回值并调用,后期将进一步升级\n小技巧:可多次执行,插入方法数量指数(x2)增加\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_function_inject_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改方法", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_function_modify.json", "configValues" : [ ] }, "key" : "config_is_swift_function_modify", "tips" : "拆分方法,对原方法进行封装并根据参数不同进行局部调整,然后调用\n小技巧:可多次执行,修改方法数量指数(x2)增加\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "50", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_function_modify_percentage", "tips" : "取值范围(1~100),默认50%", "configValue" : "50", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名全局变量", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、全局变量名,换行作为分隔符", "title" : "黑名单", "key" : "black_swift_global_variable_rename.json", "configValues" : [ ] }, "key" : "config_is_swift_global_variable_rename", "tips" : "支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_global_variable_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改字体", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_font_modify.json", "configValues" : [ ] }, "key" : "config_is_swift_font_modify", "tips" : "微调项目中字体大小", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_font_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改颜色", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_color_modify.json", "configValues" : [ ] }, "key" : "config_is_swift_color_modify", "tips" : "微调UI控件、colorset的颜色", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_color_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改布局", "selected" : 0, "black" : { "defaultValues" : [ "scrollViewDidScroll" ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考#selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_layout_modify.json", "configValues" : [ "scrollViewDidScroll" ] }, "key" : "config_is_swift_layout_modify", "tips" : "微调UI布局,有一定风险,尤其是某些地方有严格的尺寸要求,该情况请加入黑名单过滤", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "Frame,SnapKit", "title" : "布局模式", "check" : "^(Frame|SnapKit|,)+$", "key" : "config_swift_layout_modify_mode", "tips" : "可多选(Frame | SnapKit), 例如: Frame,SnapKit", "configValue" : "Frame,SnapKit", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_layout_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "插入局部变量", "selected" : 0, "black" : { "defaultValues" : [ "main.m" ], "tips" : "#文件名(带扩展名且支持正则)、属性名、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_local_variable_inject.json", "configValues" : [ "main.m" ] }, "key" : "config_is_swift_local_variable_inject", "tips" : "拆分复合语句\n小技巧:可多次执行,修改的代码数量指数(x2)增加", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_local_variable_inject_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改局部变量", "selected" : 0, "black" : { "defaultValues" : [ "main.m" ], "tips" : "#文件名(带扩展名且支持正则)、局部变量名,换行作为分隔符", "title" : "黑名单", "key" : "black_swift_local_variable_modify.json", "configValues" : [ "main.m" ] }, "key" : "config_is_swift_local_variable_modify", "tips" : "局部变量的值运行时保持不变\n小技巧:可多次执行,修改的代码数量指数(x2)增加\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_local_variable_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改字符串", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、字符串,换行作为分隔符", "title" : "黑名单", "key" : "black_swift_string_modify.json", "configValues" : [ ] }, "key" : "config_is_swift_string_modify", "tips" : "字符串随机加密混淆,如果字符串加密后如果影响性能,请自行加入黑名单过滤\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "4", "title" : "最少长度", "check" : "^\\d+$", "key" : "config_swift_string_modify_min_length ", "tips" : "字符个数>=最少长度,将被修改", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "3", "title" : "有效个数", "check" : "^\\d+$", "key" : "config_swift_string_modify_valid_count", "tips" : "包含中文、英文和数字等常见有意义字符之和>=有效个数,将被修改", "configValue" : "3", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_string_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改xib、storyboard", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_xib_modify.json", "configValues" : [ ] }, "key" : "config_is_swift_xib_modify", "tips" : "xib、storyboard文件插入垃圾视图,并修改内部结构属性\n支持部分版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_xib_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "插入文件", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "black_swift_file_inject.json", "configValues" : [ ] }, "key" : "config_is_swift_file_inject", "tips" : "生成swift文件、插入的文件互相调用,而且会在项目中的其它文件中引用,进行初始化、调用公有方法等过程。\n注意:(在项目根路径下,会生成\"other_xxx_file\"的文件夹)\n子选项Target控制导入方式,若为空,则需要手动导入,将生成的文件夹拖入工程即可;反之,自动导入", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "Target", "check" : "", "key" : "config_swift_file_inject_target", "tips" : "工程的target,例如: confuse_test,默认第一个,多个请用逗号隔开\n注意:需要自行检查", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "文件名前缀", "check" : "^[A-Za-z_]+$", "key" : "config_swift_file_inject_prefix", "tips" : "所有文件名添加指定前缀", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "20", "title" : "插入次数", "check" : "^([1-4][0-9]|[1-9])$", "key" : "config_swift_file_inject_count", "tips" : "范围1~49,每次插入14个文件", "configValue" : "20", "required" : 0 } ] }, { "depends" : [ ], "title" : "插入文本", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则)、方法名(参考@selector),换行作为分隔符", "title" : "黑名单", "key" : "config_black_swift_text_inject.json", "configValues" : [ ] }, "key" : "config_is_swift_text_inject", "tips" : "生成json、txt、doc、plist等文本、而且会在项目中的其它文件中引用,生成属性、初始化、自动销毁等。\n注意:(在项目根路径下,会生成\"other_xxx_text\"的文件夹,生成的文件会自动导入)", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "文件名前缀", "check" : "^[A-Za-z_]+$", "key" : "config_swift_text_inject_prefix", "tips" : "所有的文件名添加指定前缀", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "20", "title" : "插入数量", "check" : "^([1-4][0-9]|[1-9])$", "key" : "config_swift_text_inject_count", "tips" : "1~49", "configValue" : "20", "required" : 0 } ] }, { "depends" : [ ], "title" : "重命名类", "selected" : 0, "black" : { "defaultValues" : [ "Main", "LaunchScreen", "main", "AppDelegate", "ViewController" ], "tips" : "#文件名(带扩展名且正则只对新模式有效)、类名,换行作为分隔符", "title" : "黑名单", "key" : "black_swift_class_rename.json", "configValues" : [ "Main", "LaunchScreen", "main", "AppDelegate", "ViewController" ] }, "key" : "config_is_swift_class_rename", "tips" : "包含类名、结构体名、枚举名、协议名,如果需要同步改文件名请勾选'重命名同名文件名',注意:\n1.混编项目未勾选旧模式,需要同时开启OC对应功能不可分开执行\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "1", "title" : "旧模式", "check" : "", "key" : "config_swift_class_rename_old_enable", "tips" : "考虑到Swift类名本身具有一定的唯一性,保留旧版本功能,混淆速度极快。旧版类名要求1.首字不能是小写 2.类名长度>=5,新模式不受限", "configValue" : "1", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "类名前缀", "check" : "^[A-Za-z]+$", "key" : "config_swift_class_rename_prefix", "tips" : "大小写字母", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "0", "title" : "重命名同名文件名", "check" : "", "key" : "config_swift_class_rename_file_rename_enable", "tips" : "文件名和类名相同,将同步修改\n提示:测试阶段关闭,方便查看修改和对比,发布的时候记得开启", "configValue" : "0", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_swift_class_rename_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改图片", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_image_modify.json", "configValues" : [ ] }, "key" : "config_is_image_modify", "tips" : "小技巧:可多次执行\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "", "title" : "自定义RGBA", "check" : "^(#([0-9A-Fa-f]{2}){3,4}=#([0-9A-Fa-f]{2}){3,4}(,|$))*$", "key" : "config_image_modify_custom_rgba", "tips" : "偏差范围2,空忽略,例如:#FF1122FF=#004400FF,#AABBCC=#FFBBDD", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "像素点信息", "check" : "^(\\d+_\\d+(,|$))*$", "key" : "config_image_modify_point_info", "tips" : "日志显示像素点的实际信息,空忽略,例如:8_9,12_23", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "4", "title" : "RGBA偏移", "check" : "^\\d$", "key" : "config_image_modify_rgba_offset", "tips" : "偏移(0~9)范围,0忽略", "configValue" : "4", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "主题色", "check" : "^(\\d|[1-9]\\d|[1-2]\\d\\d|3[0-5]\\d|360|)$", "key" : "config_image_modify_hsv_hue", "tips" : "生成统一颜色风格,取值范围(0~360),空忽略", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "10", "title" : "像素点数", "check" : "^([0-9]|[1-9][0-9])$", "key" : "config_image_modify_point_count", "tips" : "微调(0-99)个像素点,实际上限总像素的1%,0忽略", "configValue" : "10", "required" : 0 }, { "hidden" : 0, "defaultValue" : "70", "title" : "质量调整", "check" : "^([67]\\d|80|0)$", "key" : "config_image_modify_quality", "tips" : "百分比(60~80),0忽略", "configValue" : "70", "required" : 0 }, { "hidden" : 0, "defaultValue" : "2", "title" : "大小偏移范围", "check" : "^\\d$", "key" : "config_image_modify_size_offset", "tips" : "偏移(0~9)个像素范围,实际上限为长或宽的4%,0忽略", "configValue" : "2", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "模式比例", "check" : "(?#json_dictionary)", "key" : "config_image_modify_mode_rate", "tips" : "默认比例:contrast、blur、level、gamma,例如:{\"contrast\":1,\"blur\":2},空忽略", "configValue" : "", "required" : 0 }, { "hidden" : 1, "defaultValue" : "", "title" : "模式指令", "check" : "", "key" : "config_image_modify_mode_cmd", "tips" : "图片修改指令集", "configValue" : "", "required" : 0 }, { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_image_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改Lottie", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_lottie_modify.json", "configValues" : [ ] }, "key" : "config_is_lottie_modify", "tips" : "模拟Lottie文件结构且不影响实际效果。\n注意:预检查日志会扫描需要手动处理的部分", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_lottie_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改文件属性", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "#文件名(带扩展名且支持正则),换行作为分隔符", "title" : "黑名单", "key" : "black_file_property_modify.json", "configValues" : [ ] }, "key" : "config_is_file_property_modify", "tips" : "修改文件MD5值、创建时间、修改时间、访问时间\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "100", "title" : "百分比控制", "check" : "^([1-9][0-9]{0,1}|100)$", "key" : "config_file_property_modify_percentage", "tips" : "取值范围(1~100),默认100%", "configValue" : "100", "required" : 0 } ] }, { "depends" : [ ], "title" : "修改工程", "selected" : 0, "black" : { "defaultValues" : [ "test_target", "test_sdk", "test_target.xcodeproj" ], "tips" : "#target名称、xcodeproj(带扩展名),换行作为分隔符", "title" : "黑名单", "key" : "black_xcode_project_modify.json", "configValues" : [ "test_target", "test_sdk", "test_target.xcodeproj" ] }, "key" : "config_is_xcode_project_modify", "tips" : "无需删除Cocoapods工程\n支持版本迭代混淆", "required" : 0, "items" : [ { "hidden" : 0, "defaultValue" : "1", "title" : "修改uuid", "check" : "", "key" : "config_xcode_project_uuid_enable", "tips" : "所有xx.xcodeproj的uuid都将被修改,如需过滤,请在黑名单中设置", "configValue" : "1", "required" : 0 }, { "hidden" : 0, "defaultValue" : "1", "title" : "修改target", "check" : "", "key" : "config_xcode_project_target_rename_enable", "tips" : "提示:target名称要唯一,关联的文件名,文件夹名和工程配置都会一起修改。请保证工程文件名.xcodeproj和target名称保持一致,以免漏改", "configValue" : "1", "required" : 0 }, { "hidden" : 0, "defaultValue" : "", "title" : "自定义target名称", "check" : "", "key" : "config_xcode_project_target_rename_mapping", "tips" : "格式要求:name1=replace1,name2=replace2\n例如:confuse_test=confuse_replace1,confuse_sdk=confuse_replace2", "configValue" : "", "required" : 0 } ] }, { "depends" : [ ], "title" : "文件对比", "selected" : 0, "black" : { "defaultValues" : [ ], "tips" : "", "title" : "", "key" : "", "configValues" : [ ] }, "key" : "config_is_file_difference_begin", "tips" : "用于查看混淆前后文件的修改百分比,预计占用总时间10%左右,大项目建议关闭,用git工具对比", "required" : 0, "items" : [ ] } ]