iOS代码混淆之XHObfuscator工具

假如想象 提交于 2019-12-13 15:36:21

iOS代码混淆之XHObfuscator工具

QQ群:750020052

V1.0版本发布(2019/12/13)

    笔者从2015年开始从事iOS开发,经历了市场对iOS开发需求的高点和低点,也经历了苹果本身对审核的宽松和严苛,曾经历了一夜之间十几款App被4.3,也曾收获无数的2.1大礼包.由于笔者所在公司面向B端服务,这种被拒的现象仍在发生…

    为了减少这类问题,笔者想到了代码混淆,如果能够将模板代码混淆,让苹果认为是两种代码就可以减少4.3的概率.于是,笔者利用全部的业余时间开发了专门针对iOS项目代码混淆的工具XHObfuscator.

    XHObfuscator提供了简洁的操作界面:

主页.jpg

主页功能介绍:***请仔细阅读以下内容***

软件内置海量词汇(15W+),用户亦可设置用户词库,在混淆时会先随机选取用户词库内容,再随机选取内置词库进行补充;
目前功能只支持OC版本;Swift相关功能正在开发中

关于忽略路径: 请手动添加想要忽略的文件,文件夹(以英文逗号分隔)

关于三方库:

软件默认会过滤以下三方库及以Pod方式集成的三方库;如果三方库不是以pod集成又不在默认列表中,请手动添加到忽略路径中

AFNetworking,Bugly,JPush,Masonry,MJExtension,MJRefresh,Reachability,SVProgressHUD,
ReactiveObjC,SDWebImage,UMeng,JCore,FMDB,AMap,GoogleMaps,GooglePlaces,YYKit,
IQKeyboardManager,FDFullscreenPopGesture,MBProgressHUD,SDCycleScrollView,

  • 属性混淆 :
    • 使用设置界面属性混淆前缀的内容混淆
    • 项目内集成了系统全部的属性,在混淆时会将系统属性全部过滤,自创建的与系统同名的属性也会被过滤
    • @synthesize标记的属性,在声明的位置和@synthesize标记的位置都会修改,在具体使用中不会修改,请在参照混淆日志在文件内全局替换
  • 方法混淆 :
    • 使用设置界面方法混淆前缀的内容混淆,项目本身
    • 项目内集成了系统全部的方法,在混淆时会将系统方法全部过滤,自创建的与系统同名的方法也会被过滤
  • 类名(文件名)混淆 :
    • 使用设置界面类名混淆前缀的内容混淆
    • 仅会修改与文件名同名的类
  • 目录混淆 :
    • 使用设置界面目录混淆前缀的内容混淆
    • 不会修改与项目xcodeproj文件同级的项目同名文件夹
  • 修改项目名称 :
    • 使用设置界面项目名称修改的内容修改项目名
    • 如果填写了替换原有前缀,修改项目时会将原有前缀替换为设置中的前缀内容
    • 会自动修改pch文件路径
    • 修改后请点击选择新的Scheme,如找不到,新建一个即可
  • 删除注释
  • 英文字符串加密
    • 对纯英文字符串进行硬编码加密,可设置加密等级:30%,60%,100%
    • 使用设置界面字符串加密前缀的内容加密
  • 中文字符串加密
    • 对包含中文的字符串进行base64加密,可设置加密等级:30%,60%,100%
    • 使用设置界面字符串加密前缀的内容加密
  • 敏感词过滤
    • 过滤项目中包含的黄赌毒等敏感词汇
  • 修改图片资源hash值 :
    • 翻新项目中图片hash值
  • 修改图片资源名称 :
    • 使用设置界面图片翻新前缀的内容修改图片名
    • 仅会修改asset中的图片名称
  • 添加垃圾类和垃圾代码 :
    • 会在项目根目录创建文件夹为垃圾代码前缀内容的同名文件夹,需要手动导入到项目中(也可以自动导入项目,但测试时发现间所需较长,遂暂时取消自动导入功能
    • 添加垃圾代码功能待添加)
  • 翻新xcodeproj中文件ID :
    • 采用自创建文件ID,替换项目配置文件的ID
    • 关于Xcode默认的ID的生成规则,目前无资料可查,关于采用自创建规则的影响,仍不可知,介意请慎用
  • 点击开始混淆,会顺序执行功能
  • 开始混淆前,需保证项目名,项目根目录,代码根目录的名称相同

设置.jpg

用户设置界面:

  • 如图所示,混淆前对应功能需手动设置所需前缀,如对应功能没有设置,则默认为XH;字符串加密默认为XHSTRING
  • 点击保存,相应配置会保存到服务器

词库.jpg

用户词库界面:

  • 单词之间需以英文逗号分隔
  • 点击提交后会上传到服务器

生成套图.jpg

生成套图界面:

  • 点击选择icon上方按钮,会打开文件选择器,选择需要添加的icon
  • 为保证生成的图片的清晰度,选择的icon尺寸最好大于等于1024
  • 点击选择背景填充色上方按钮,会打开调色板,选择需要的颜色
  • 点击导出套图>>>会在桌面导出全部尺寸的iPhone,iPad的启动图标和启动图

反馈建议.jpg

反馈建议界面:

  • 在使用过程中,有任何问题,建议可在此处提交,笔者会及时处理

QQ群.jpg

QQ群:

  • 欢迎扫码加入群聊,在这里可以沟通上架遇到的问题,可以愉快的吹水,可以更及时的反馈问题和建议

部分效果展示:

中文加密前后对比
中文加密前后对比.jpg


英文加密前后对比
英文加密前后对比.jpg


类名混淆前后对比
类名混淆前后对比.jpg


目录混淆前后对比
目录混淆前后对比.jpg


垃圾类内容展示
垃圾类内容展示.jpg


项目名混淆前后对比
项目名混淆前后对比.jpg

软件下载地址

码云: https://gitee.com/XHStudio/XHObfuscator

Github: https://github.com/XHStudios/XHObfuscator


写在最后:

本软件非专业iOS开发请慎用

  • 本软件可能会产生编译错误;在混淆前,请做好代码备份,软件也会对项目进行Git仓库初始化
  • 出现错误时,请参照混淆日志,在文件内或者项目全局进行替换
  • 如果项目已经创建Git,但未commit,软件不会进行commit操作,请知悉
  • 此软件非免费开源软件,希望可以帮到您;笔者会持续进行版本迭代,每次升级的内容会在文章开头详细说明!
  • 详情可入群私聊群主,感谢大家的支持!
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!