静态分析工具使用和注意事项?
静态分析工具是通过对比两个ipa文件中的执行文件、资源文件相似度的工具,主要是通过符号对比、字符串对比、文件对比检测两个ipa的相似度。
一.如何做ipa对比
-
使用xcode打开准备上架的应用工程,进入工程设置,把证书和配置文件切换成AppStore证书和配置文件(Adhoc和Develement证书最终文件会有差异,后面章节会讲解)
-
Xcode 菜单 Product/Archive 打包一个ipa出来,导出到桌面上(因为第一步比较简单不做过多讲解)
-
运行 crab-orange.app 混淆工具,找到【编译设置】,把证书和配置文件切换成AppStore专用的
-
混淆结束后,点击 【导出文件】 按钮,到桌面
-
在 crab-orange.app 主界面,找到【工具箱】/【对比分析】工具,双击运行
-
在界面上,会看到
IPA.1
和IPA.2
两个文件路径输入框,点击输入框右边按钮,选对应的文件,然后点【生成报表】,选一个目录,然后等待完成就可以了
二.敏感词的作用和使用方式?
敏感词功能是通过给定一些需要搜索的词语(英文大小写敏感),在文件名或者执行文件中搜索相关词语,并在最终报表里面列举出来
如何导入敏感词
-
创建一个文本文件,每输入一个词语,换一行
-
在对比工具主界面找到敏感词设置,点击导入,选中刚才编辑的文件,完成导入
如何导出敏感词
- 在对比工具主界面找到敏感词设置,点击导出,选择一个目录,完成导出
三.SDK设置的作用
SDK设置的主要目的是通过预先采集一个本地SDK数据库,通过在对比分析的最终报表中把SDK中的一些干扰信息修剪掉,或者通过分析ipa调用了那些SDK得到另一种特征信息
如何导入
针对付费版本工具作者会一般会提供一个数据库文件,包含一些常见的sdk,如果想自己增加,后面章节会讲解
- 对比工具主界面找到SDK设置,点击导入,选择给你的db文件,完成导入
如何导出
- 在对比工具主界面找到SDK设置,点击导出,选择一个目录,完成导出
如何采集
要想自己采集,首先要注意一点,由于很多SDK会有包含现象,比如说一个libpng,能就包含zip压缩之类的,所以采集中我们要注意想得到很干净的就需要知道这些SDK的构成,通过编辑依赖文件才能做到
-
首先需要设置SDK(Root),点击输入框,右边的查找按钮,就能自动找到相关SDK目录
-
然后设置扫描目录,比如这里我们把执行文件都放在
~/Documents/ThridSDK
目录下,然后在ThridSDK
目录下建立一个Cocos2dx
目录,然后我们找一个Cocos2dx的静态库或者动态库(最好找一个静态库,动态库一般成分太复杂,会把一些静态库直接打包进去,就需要写很多依赖才能得到干净的) - 创建一个
~/Documents/ThreadSDK.txt
文件,设置为依赖配置路径 ,文件格式如下Cocos2dx > libzip > liblua > libpng
- 点击【开始采集】按钮,等待完成操作
四.报表如何看?
要看懂报表,首先要搞明白几个指标,分别是内置符号
(执行文件建立的一些函数符号、静态数据符号)、引用符号
(引用的外部SDK符号、操作系统函数符号)、文件名
(ipa内部所有名称匹配)、文件签名
(ipa内所有文件的md5)、字符串
(执行文件中常量声明、界面相关文件中的常量声明)、可执行文件
(所有可执行程序的名称)、元数据-记录
(执行程序中的 ObjC/Swift runtime 对象/协议/扩展)、元数据-成员
(执行文件中的 ObjC/Swift runtime 字段/方法)
敏感词扫描了那些内容?
目前敏感词只扫描了执行程序中的符号、字符串、元数据(记录/成员)、文件名,其他的文件中信息未扫描
为什么一定要是AppStore证书?
看起来只有AppStore证书打包出来的应用,包含执行程序的上传符号表,其他证书生成的ipa文件中,不包含这部分符号表,会导致最终生成的报表文件中,内置符号匹配率过高