当前位置:网站首页 > 国际新闻 > 正文

烤鱼的做法,技能专栏丨根据多重替换方法的iOS代码混杂计划,澳币

admin 0

导语

本文将从几个方面论述什么是代码稠浊以及它的运用办法和会遇到的问题,一起共享了TalkingData自己研制的代码稠浊方案,欢迎转发保藏。

1

概述

1.1 什么是代码稠浊?

代码稠浊,是将计算机程序的代码转换成一种功用上的等价,可是难于阅览和了解的办法的行为。代码稠浊可以用于程序源代码,也可以用于程序编译而成的中间代码。履行代码稠浊的程序被称作代码稠浊器。现在现已存在许多种功用各异的代码稠浊器。

代码稠浊的首要意图是为了维护源代码,阻挠反向工程。反向工程素心竹月会带来许多问题,比如知识产权走漏、程序缺点露出易受攻击等。

本方案首要针对程序源代码中的字符串、类名以及函数螺旋电缆称号等进行稠浊。因为此种稠浊办法较为简略,防止了因为操作中间代码而简略改动程序逻辑等。

1.2 代码稠浊的通用办法

1.3 代码稠浊的一些问题

2

实际问题

因为TalkingData协作的不乏金融类、证券类职业企业,此类职业的特点是和人民币休戚相关,成为许多不法分子来牟取不法利益的重灾区,因而安全便是此类职业的相关运用程序的重中之重。以往选用寻常的办法对SDK进行编译打包,尽管说像AppStore这样的应烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币用商城会选用一些代码等级tyingart的安全措施,可是这些安全措施也不乏被破解的或许,技能总是有缺点的。

2.1 问题一:现有加密/加固效劳的东西供给商是否满意咱们的需求

在前期调研过程中,咱们测验了两家SDK加密加固东西,尽管两者均可以完成对SDK的加固,也完成了代码逻辑的稠浊,乃至在原有的代码中插入了稠浊视听的“废物代码”等等,可是两者均是经过修正代码编译的中间代码完珍珠内裤沈美溪成的代码加固。此类加固办法均是经过修正原始编译器的办法进行的操作,或许直接供给了一套修正后的编译器替换官方编译器,此类办法不得不说肯定是大牛著作,可是针对咱们自qqav群由的SDK效劳来说,此类办法或许并不合适,原因如下:

2.2 问题二:开源的一些稠浊东西是否满意咱们的需求

在网络上也有许多相关的代码稠浊东西,有的乃至可以在代码稠浊的根底上,参加逻辑稠浊等操作,可是这些东西基本上现已中止更新,代码的状况还停留在前期Objective-C的版别上,假如咱们对其进行改造,所花费的时刻精力有点因小失大。别的一点,开源东西是存在必定的开源协议约束的,因而一切咱们来烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币说,运用后也有必要遵从相应的协议,可是面临咱们当时的事务办法,暂时还不太合适。

2.3 问题三:自研稠浊东西所面临的问题

面临各种稠浊烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币东西,终究决议自研一套契合咱们当时要求,而且可以完美集成到当时打包流程中完成自动化的稠浊东西,该东西和现有打包可以完好集成,对现有SDK代码以及青岛够级英豪打包脚本代码无侵入性。可是这儿也会遇到一些问题:

3

稠浊东西CodeObscure

该东西首要用于Objective-C代码稠浊,以防止class-dump等反编译代码东西脱狱者解读代码,进步SDK的安全性。该东西终究规划为根底装备后全自动运转,无需对现有打包脚本以及项目工程进行其他额定操作。

3.1 根底原理

此东西运用Ruby言语编写。此东西会默许西町村屋遍历项目特点、办法和类名进行稠浊。当然假如简略的进行遍历的话,会发生无穷无尽的过错,因为你不能稠浊Apple供给的官方API,也不能稠浊framework和.a的静态编译的库。所以在稠浊代码的时分有必要排除去。该东西现已内置了过滤体系的办法。假如项目中运用Pod或许运用了静态库,或许其洪发直播室他比较特别的第三方库,可以运用codeobscure -l [途径1,途径2..]的办法去过滤这些库文件,运转codeobscure -o [项目名.xcodepro]开端稠浊你的代码。

当然并不意味这你运转了烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币就必定没过错,该东西最大的简化了稠浊代码的作业,因为不同的人编写的代码或许各不相同。假定你调用了NSClassFromString("classNameA")而这个类正好被混颜丹晨老公陈昊淆了,它不辨认classNameA究竟是什么。那么怎样处理这个过错呢。最简略的办法便是在codeObfuscation.h中查询classNameA并删去它的#define即可。

!假如你运转了codeobscure -l [途径1,途径2..],那么它会记载下来要过滤的东西。假如你下次不想过滤现已过滤的库,运转codeobscure -r来重置。

3.2 稠浊办法

一般状况下,放置class-dump较为有用的办法是对代码进行字符串替换,因而该东西侧重完成了字符串替换的办法,针对扫描项目工程得到的特点、办法和类名等进行字符串替换,终究经过#define的办法在codeObfuscation.h中界说。字符串的替换供给了两种字符串生成办法,随机字符串随机单词

随机字符串,即经过随机函数生成必定长度的字符串,对特点、办法和类名等进行等价替换;

随机单词,即经过随机单词生成东西得到随机单词列表,之后经过随机函数挑选某些单词,对特点、办法和类名等进行等价替换。(这儿随机单词生成东西运用了RandomWord类库)

注:滑动检查完好代码(下同)

// 生成成果示例:

r : #definegetHeight ZbgTCtOTDmEazebk

w : #definegetHeight nodulatedBasutoland

3.3 稠浊字符缓存

在项目迭代开发发布过程中,大多烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币数状况下并不会改动代码以及代码逻辑,仅仅是从头打包或许细小的改动等,此类状况下再次对项目工程进行稠浊的时分,就不需求从头设置过滤的字符以及文件。针对此种状况,该东西供给了过滤字符缓存的东西,运用微型数据库SQLite3对稠浊中的一些字符进行缓存,待下次运用的时分直接加载而无需去遍历项目代码。

!因为Apple新版体系有SIP(体系完好性维护)默许是敞开的,所以因为装置办法不同,或许在运转指令的时分呈现:attempt to write a readonly database (SQ梁学铭Lite3::ReadOnlyE烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币xcepti烤鱼的做法,技能专栏丨依据多重替换办法的iOS代码稠浊方案,澳币on)的问题。假如呈现这个问题,请在指令行上加上sudo。

3.4 该东西现在的缺乏

3.5 装置攻略

因为本项目资源归于内部运用,此部分暂不共享。

3.6 运用实例

运用过程中请运用肯定途径

codeobscure-o /Examples/Messenger.xcodeproj -l /Examples/Pods /Examples/Download

codeobscure-o /Examples/Messenger.xcodeproj -f f,c释奴止戈

codeobscure-i 朝鲜飞行员是什么梗XcodeprojPath

codeobscure-r

codeobscure-o /Examples/Messenger.xcodeproj -t w -s

3.7 codeobscure -h 指令协助

运用东西是时分,途径直接用肯定途径,不支持相对途径。(直接把文件拖到终端显示出来的途径便是肯定途径)

Usage: obscure code forObjective会计科目背诵顺口溜-C project

-p, --prefix class name prefix 当时要稠浊的项目类前缀(TDAT, TDAA, TDGA)

-o, --obscure xcodeproj path 要稠浊的项目工程xcodeproj文件肯定途径

-l, --load path1,path2,path3 指定不需求稠浊的文件肯定途径

-r, --reset 重置 -l 记载的要过滤的关键字

-f, --fetch type1,type2,type3 获取需求混山田一二三淆的类型, 默许参数是c,p,f。c:类名,p:特点,f:办法

-i, --ignore xcodeproj path 生成ignoresymbols文件,用于手动9891游戏交易渠道写入要过滤的关键字。eg:name,age ...

-t, --type replaceType 指定替换的形hi文式,默许r。 r:随机字符串 w:单词

-s, --strict 严厉形式过滤,而且用单词形式进行替换。适用于KVO和Runtime比较多的代码

4

未来愿景

当时该东西现已在测验渠道经过各项打包测验,在不久的将来,咱们将在线上产品的打包中看到该选项,期望该东西可以到达预期的方针。在不断的产品演进过程中,该东西肯定会有所过期乃至不契合实际需求,因而该东西也会跟着事务的优化改从而优化改善,尽最大努力使得该东西可以发挥其细小“螺丝钉”式的效能。

作者:TalkingData 张永超

部分内容来源于百度百科

规划 开发 技能 周日八点党食字路口
声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。