美文网首页Android开发
【OC&Swift】代码混淆工具开发过程分享

【OC&Swift】代码混淆工具开发过程分享

作者: itzhangbao | 来源:发表于2019-08-29 16:51 被阅读0次

    前言

    由于 App Store 上架难度的不断攀升,开发者无不被各种被拒、被调查、被封号所烦恼,所以会通过各种办法提升过审几率,由于上传到 AppStore 上的应用相关信息都会被记录在苹果审核服务器上,只要产生版本构建都会被记录包括被拒审的应用,所以需要对原来项目进行处理换号上架,进入正题:

    文章创建时间:2019年08月29日

    文章最后更新日志:

    时间 内容 计划
    2019年08月29日 创建文章 完成工程创建、实现修改工程名

    持续更新中。。。(此句还在,请您放心,证明我还活着~)

    声明

    1. 本文只做理论分析,不确保文章内容都为可行,具体以实际操作为准;
    2. 开发混淆工具类思路分析及开发过程和知识点分享;
    3. 说不定的并承诺,最开始关注并对此项目有帮助的朋友给予使用一定时间的权限,并记录在此文章中
    4. 此工具完成时间待确定,加班加点的整~

    罗列出提升过包率的一些操作:

    1. 白包过审后,版本更新时添加变成功能包,5图和关键词一起加上, 这里白包为应用或者小游戏,一般分为棋牌类、游戏类的副包
    2. H5小游戏包->做开关功能包
    3. 支付类可使用H5支付,支付也有几种方案实现支付宝和微信避开内购,fromscheme字段后面细说,这不是本文重点
    4. 先写几个后面再加。。。

    补充技能点:

    1. 隐私政策、用服务协议、技术支持、这几个可以放在简书上或者是网易的 lofter
    2. 数据:青花瓷、Python
    3. Logo:Mac自带的 keynote、这个在线设计logo这里、这个厉害在线设计这里
    4. 设计:推荐六款个人常用的App设计辅助工具
    5. 配色:12个超好用的配色网站
    6: 图标:iconfont、其他图片资源就是个大资源网站上搜吧

    注意事项:

    1. 不要用公司账号去上公司的包,先搞一个个人账号上,过审后移交给公司账号,避免公司账号直接被调查,一脸懵逼;
    2. 如果被拒多次,要换电脑和ip,保证ip+电脑+账号都是关联再一个环境上面,可以避免其他已经过审的包收到牵连;
    3. 先写几个后面再加。。。


    我是分割线


    扯多了~开始说一下我最近研究的混淆 要同时支持 OC+Swift 两种语言:
    先说说为什么要搞代码混淆:一个是为了项目的安全,别人反编译你的包后分析难度加大,再者混淆后的代码为全新的代码,然后可以去提交给苹果审核,苹果越严,马甲包的需求越大,成正比。

    混淆工具思路分析:

    现有工具:
    四款iOS加固工具评测

    正则:
    这也是现在大多数混淆工具的方法,正则+Python;
    此方案待确定,因为需要写一大堆正则类匹配语法中各种各样的样式,稍微有点繁琐

    OC+正则:
    KLGenerateSpamCode
    iOS 使用正则从文件内容检索出OC方法

    shell脚本
    可参考 aron1992 的教程:
    aron1992链接

    语法树:
    clang-只支持iOS,不支持swift,所以还需要搞一个swift单独来处理siwft语法树(swift的语法树分析有 swfit-ast,活着参考swiftlint);

    swift:
    swift-ast

    clang的文章:
    也可以先考虑使用 Clang 做一个OC版本的工具,后期再想办法做swift的兼容
    深入剖析 iOS 编译 Clang / LLVM
    iOS编译器LLVM + Clang架构分析以及三种混淆方案实践分析
    Objective-C混淆之方法名混淆
    使用Xcode开发iOS语法检查的Clang插件
    LLVM代码研读(2) --- LLVM前端: Clang剖析
    代码混淆之 libclang.dylib 应用
    iOS代码混淆

    swift+oc:
    Drafter: 一个在iOS项目中分析代码结构的工具

    以上就是参考资料,开始着手造轮子:

    工程为 Mac 应用

    • UI界面
    • 需要一个漂亮有内涵的icon
    • 要起一个响亮的名字

    以上征集建议!

    项目功能罗列:

    代码混淆
    • 更改工程名

      • 随机
      • 自定义
    • 方法混淆

      • 随机混淆
      • 添加前缀
      • 修改前缀
    • 类名混淆

      • 随机混淆
      • 添加前缀
      • 修改前缀
    • 属性混淆

      • 随机混淆
      • 添加前缀
      • 修改前缀
    • 字符串可逆加密

    文件混淆
    • 修改对应的.h、.m、.mm、.swift、.pch文件

      • 随机
      • 添加前缀
      • 修改前缀
    • 修改文件夹名称

      • 随机
      • 添加前缀
      • 修改前缀

    垃圾代码

    • 自动生成垃圾代码
    • 垃圾代码自动调用

    注释

    • 删除注释
    • 修改注释
    • 添加注释

    资源混淆

    • 修改图片名称或前缀
    • 修改图片 Hash 值
    • bundle中 和 Assets.xcassets 中图片

    词库

    • 内置对应词库
    • 手动添加对应词库

    忽略

    • 文件夹忽略
    • 词汇忽略

    其他

    • 自动打包ipa、签名、重签名
    • 一件生成各种尺寸Icon
    • 一件还原

    以上就是混淆工具的大致雏形,我会一步一步的完成所有功能的开发,并分享开发过程中遇到的问题,开发进度会实时更新文章开头处;
    欢迎留下各位的想法和建议;
    或者有什么好的文章也可以推荐给我,我会添加到此文当中,并加上您的贡献。

    相关文章

      网友评论

        本文标题:【OC&Swift】代码混淆工具开发过程分享

        本文链接:https://www.haomeiwen.com/subject/xdriectx.html