混淆加固利器 - Obfuscator for iOS

为什么要进行代码混淆?

源码面前,了无秘密。

在 iOS 开发中,很多工程师都会对自己的代码成果进行混淆,除了为了掩藏那些怕为人知的蹩脚代码外,最主要的还是为了防止别人逆向截获到代码逻辑,通过 hook 注入等手段进行控制和篡改,这样导致搭建的代码逻辑被得以窥视,程序的安全防线就会崩溃,防线之下就全是危险了。

面对如此大的风险,我们能做什么加以防范呢?
答案:混淆你的工程。

代码混淆是故意模糊源代码的行为,目的是使源代码变得难以阅读和理解其逻辑,如果又将所有注释删除的话,那通过混淆之后代码的可读性将更加降低,几乎无法得出程序的真实语义,应用程序分析难度就会变得很大,这样一定程度上阻止了逆向工程。 而源代码经过混淆之后,尽管与混淆之前相比,样子虽已经变成了“熟悉的陌生人”,但是它在功能上又百分百无异于原始代码。

无论是在做商业应用程序还是MJ包开发以应对苹果4.3等审核条款,代码混淆都变得必不可少,已经是程序开发收尾一环中的标配。

一般混淆方案

常见的方案一般有:
1.文件名混淆:
2.字符串加密:对程序中所使用到的字符串进行加密,防止逆向通过字符串定位到我们的业务代码;
3.花指令,通过构造特殊的指令使得反编译器出错,烦扰反编译的进行;
4.重写代码的部分逻辑或修改源码的各种行文格式;
5.类名、变量/属性名、函数/方法名混淆:将工程中类名、变量/属性名、函数/方法名等进行替换,替换目的追求代码逆向之后难以阅读逻辑;

Obfuscator for iOS - 混淆利器

值得一提的是,在 iOS 开发中,如果最终是为了上架 AppStore,在提交审核之前,不应当简单地使用无意义字符串进行替换这些重要代码元素。因为根据大量提包过往的经验表明:苹果禁止提交审核的包中出现这种故意混淆代码的行为。

如果我们按照市面上的混淆软件进行这种“无脑混淆”的话,大概率会吃到苹果的好人卡,我们的混淆要有目的性,不是为了追求彻彻底底的混淆,而是为了追求最有价值的混淆,在极致和价值中保持克制和平衡,追求价值最大化。

这就需要一个更符合苹果审核政策的混淆方案,在这里向大家推荐一款专门针对 iOS 开发、 majia、定制包等人员使用的混淆软件:Obfuscator,软件最近刚上线,注册加群即可免费试用,试用结束后可私聊群主进行购买。

在这里贴下 QQ 的讨论群 :782314620
群里面向 iOS 开发、苹果审核解决方案讨论、定制包、开发者账号、tf签等等问题的交流探讨,欢迎加入进来吧。
注 : 加群申请需验证信息,请直接填写本文链接地址即可。

软件截图:
image

前面提到了 Obfuscator 是针对 iOS 开发人员的混淆软件,为了规避苹果审核时可能被拒的各种风险如代码重复、刻意混淆等,Obfuscator 在混淆方面保持克制的同时,在有价值的混淆选项中进行挖掘完善,目前有以下混淆选项来防范被拒:

  • 目录/文件名混淆:
  • 工程目录结构的混淆:重新调整工程目录的逻辑结构,将其打乱混排,更进一步地让源码可读性降到最低。
  • 工程名/工程uuid混淆:
  • 图片等资源类的混淆:压缩、修改图片的感知 hash 值;
  • 类、变量/属性、函数/方法混淆:内置了四十个苹果分类关联性强的词库进行匹配,避免无意义字符串的出现,软件的语义化还在完善中;
  • 注入属性/方法:被注入的属性和方法都真实的被调用,避免成为垃圾代码;
  • 注入混淆类:真实调用,不做垃圾类;
  • 对注入的属性/方法进行调用:强行关联源代码中的对象,真实调用被注入的属性方法,属性、参数、返回值等都有被真实使用;

这个混淆工具在应对苹果机审时的 全量扫描二进制包以检测相似度 的问题上,已经内部测试提交AppStore应用 100+ 次,除去开发者账号的权重问题之外,无一被 4.3条款 驳回。当然,由于苹果的审核机制不透明,涉及到MJ包提交的网络环境、账号权重相似性关联的问题,就需要由MJ包开发者自己去规避了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容

  • 目录 一、为什么要加固 二、加固的几种方法 三、基于念茜如何加固 四、其他人的加固方法 前言 APP加固之代码混淆...
    dvlproad阅读 19,443评论 7 42
  • 1. 加固的缘由❓ 我们都知道,在越狱机型上,如果程序的可执行文件被获取到,就可以通过一些逆向工具来反编译我们的程...
    纯情_小火鸡阅读 3,760评论 1 8
  • 原文链接:http://fighting300.com...众所周知的是大部分iOS代码一般不会做加密加固,因为i...
    fighting300阅读 3,331评论 1 3
  • 目的 为了进一步增加应用的安全性,防止我们的应用程序很容易的被攻击者分析、破解、重打包,提高攻击者逆向分析应用的难...
    miracle洛洛阅读 4,360评论 3 21
  • 一、iOS安全攻防 1.本地数据攻防 1.1 文件存储 每个App的文件都保存在一个沙盒目录中。每个沙盒都包含Do...
    zgsddzwj阅读 1,554评论 3 4