iOS

iOS 马甲包处理探索

2018-11-28  本文已影响92人  羽裳有涯

前言

本工具用于应对苹果对重复应用的审核(Guideline 4.3 Design Spam),避免苹果机审检测概率。

p2.png
图片一
图片二
  1. 修改工程名
  2. 修改类名前缀
  3. 扫描工程中的代码,生成同等数量的 Category 文件,文件中及是同等方法数量的垃圾代码。
  4. 修改 xxx.xcassets 文件夹中的 png 资源文件名。
  5. 删除代码中的所有注释和空行。

使用

使用源码

  1. 下载源码。
  2. 用 Xcode 打开工程并配置参数。如图
  3. 运行

使用二进制文件,在终端中执行 GenerateSpamCode

$ ./GenerateSpamCode \
/Users/kelei/Documents/work/git/projectName/source \
-deleteComments

参数说明

另外修改图片 hash 值的方法

使用 ImageMagick 对 png 图片做轻量压缩,及不损失图片质量,又可改变图片文件 hash 值。方法:

  1. 安装 ImageMagick,brew install imagemagick
  2. 压缩工程目录下所有 png 文件,find . -iname "*.png" -exec echo {} \; -exec convert {} {} \;

使用经验

就我 2017-11 月的提交情况来看,只需要做如下修改就可以上马甲包了。

  1. 修改工程名
  2. 修改类名前缀
  3. 修改图片文件 Hash 值
  4. 修改 .xcassets 中的图片文件名
  5. 用别的电脑打包

已知问题

二、修改方法名

先会class-dump. O(∩_∩)O谢谢。推荐San心两yi_钟的安装步骤

先大致解释一下“编译"、"反编译":

编译:就是把千千万万行字符串(也叫代码,或者源文件),变成010101010101(机器码,也叫目标代码)

编译过程:预处理-编译-汇编-链接

我的脚本运行在预处理阶段。

反编译:就是把0101010111110001100(机器码,也叫目标代码),变成千千万万行字符串(也叫代码,或者源文件)

 最近三年一直待在银行做App,由于银行对安全要求较高,所以iOS的代码必须要有混淆的措施,初期实施了[念茜姐](http://blog.csdn.net/yiyaaixuexi/article/details/29201699)的混淆方案,但是领导说,我们要自动混淆,方法名字不能一个一个的添加到func.list中,所以方法名只能从.m和.h文件中抽取了,但是如何屏蔽系统的方法名,暂行的策略是:将自己定义的方法名全部添加一个前缀。

例如 “hsk_funtion1”; “hsk_funtion2”;“hsk_funtion3”;

修改前缀如图

在Xcode-->Target--->Build Phases--->添加Run Script

通过class-dump 反编译之后:Appdelegate 效果

通过class-dump 反编译之后:ViewController 效果

codeObfuscation.h宏定义文件、confuse.sh脚本文件、func.list函数列表文件的关系。

程序每次预处理,都就会执行confuse.sh,从.m和.h文件中按照"一定的规则"抽取需要混淆的函数名,全部写到func.list中,然后再从func.list中逐行提取函数名进行宏定义,宏定义使用随机字符串,然后写到codeObfuscation.h文件中。

func.list函数列表抽取,和宏定义是脚本自动完成,不需要手动抽函数和手动宏定义呢。

源代码下载地址:

您的星星,是我最大的鼓励。最近想把HSKConfuse集成到CocoaPods,敬请期待。O(∩_∩)O谢谢

另送一份:iOS 脚本打包 傻瓜版,无需改变配置 github地址

WKWebView 获取JS端的console.log日志

修改方法git地址:

上一篇 下一篇

猜你喜欢

热点阅读