美文网首页iOS
iOS 马甲包处理探索

iOS 马甲包处理探索

作者: 羽裳有涯 | 来源:发表于2018-11-28 15:25 被阅读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

参数说明

  • (必填) 源码文件夹绝对路径(如:/Users/kelei/Documents/work/git/projectName/source
  • -modifyProjectName [原名称]>[新名称] 修改工程名。程序会修改原名称-Swift.hPodfile原名称-Bridging-Header.h源码文件夹绝对路径原名称.xcodeproj原名称.xcworkspace的名称和内容。Podfile被修改后需要手动pod install
  • -modifyClassNamePrefix [工程文件 xcodeproj 绝对路径] [原前缀]>[新前缀] 修改源代码类名前缀。程序会扫描源码文件夹绝对路径下的 .h .swift 文件,修改文件名,修改使用该类名的代码,修改工程文件中的文件名。文件名有原前缀的会修改成新前缀,如:原前缀ViewController变成新前缀ViewController;没有原前缀的会增加新前缀,如:ViewController变成新前缀ViewController
  • -spamCodeOut [垃圾代码文件输出目录] [垃圾代码方法增加的参数名] 生成垃圾代码。程序会扫描源码文件夹绝对路径下的 .m .swift 文件中的类和方法,并生成categoryextension文件,文件中的方法是在代码原方法的基础上增加垃圾代码方法增加的参数名参数。如:-spamCodeOut /dir AppLog,会将- (void)setupKeys {}生成为+ (BOOL)setupKeysAppLog:(NSInteger)AppLog { return AppLog % 20 == 0; },会将- (void)foo:(NSString *)str {}生成为+ (BOOL)fooAppLog:(NSInteger)AppLog { return AppLog % 23 == 0; }
  • -ignoreDirNames [忽略文件夹名称字符串] 忽略这些文件夹,对-modifyClassNamePrefix-spamCodeOut-deleteComments参数有效。目前只会忽略源码文件夹绝对路径下一级的这些目录。如:/p/s -ignoreDirNames categorys,那么/p/s/categorys会被忽略,但/p/s/viewControllers/categorys不会忽略。
  • -handleXcassets 修改xxx.xcassets文件夹中的 png 资源文件名,同时也Contents.json文件中的关联名称,不会影响代码中使用图片。
  • -deleteComments 删除工程目录下 .h .m .swift 文件中的注释和空行。

另外修改图片 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. 用别的电脑打包

已知问题

  • 生成的垃圾代码文件可能是 .m 文件中实现的私有类,编译垃圾代码可能会报错,删除该垃圾代码 .h .m 文件及可。
    git混淆代码地址:

二、修改方法名

先会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地址:

相关文章

  • iOS 马甲包处理探索

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

  • iOS马甲包处理

    版权声明:本文为Jumbo原创文章,采用[知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议],转载前...

  • 关于马甲包

    1、什么是iOS马甲包? iOS马甲包就是苹果上架的时候,有些软件限制不能上架,所以需要马甲包,马甲包就是苹果应用...

  • iOS马甲包审核以及常见审核问题

    iOS马甲包审核以及常见审核问题 iOS马甲包审核以及常见审核问题

  • iOS马甲包白包

    专业iOS马甲包,iOS白包开发 企鹅:271786106

  • iOS 马甲包垃圾代码生成脚本

    iOS马甲包制作+OC、Swift垃圾代码生成脚本 马甲包 iOS shell脚本一键添加垃圾代码 Swift垃圾...

  • iOS马甲包

    iOS马甲包技术提供 联系 Q 1623875277

  • iOS 马甲包制作工具和脚本,一次搞定问题

    iOS 马甲包制作(Config 配置)准备阶段 链接:马甲包不影响母本的情况下Config配置(这里不多说---...

  • 马甲包混淆方案

    iOS 马甲包 混淆 马甲包是利用各大市场规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同...

  • ios马甲包

    一、什么是马甲包    马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和...

网友评论

    本文标题:iOS 马甲包处理探索

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