文档章节

苹果私有API检查工具开源项目

小薇
 小薇
发布于 2015/11/05 22:44
字数 617
阅读 393
收藏 5

iOS-private-api-checker 苹果iOS私有API检查工具 Developer tool to scan iOS apps for private API usage before submitting to Apple https://github.com/hustcc/iOS-private-api-checker

iOS私有API检查工具

私有API检查的原因在于:苹果在app提审的时候,会检查app使用私有api的情况,对于使用了私有api的app,不予通过,这个工具的目地就是在提审之前检查一下,提高通过率。

一、如何使用

1. 构建私有api库

  • db/dsidx_dbs.py文件为解析docSet.dsidx的库,请实现将docSet.dsidx内容导出到sqlite中。docSet.dsidx是xcode作为代码提示的数据库,表示是apple公开的公有api。

  • 修改config.py中sdks_config字典,增加各个version的sdk路径,然后运行build_api_db.py,会自动解析私有api,存存储到sqlite中。

  • (项目中的数据库内容是我编译sdk7.0的数据,可以直接用。)

2. 检查ipa私有api

运行方式有二,建议第二种web方式:

  1. 修改iOS_private.py main方法中的ipa路径,运行即可。

  2. 使用Web上传运行的方式,运行python run_web.py(请先配置flask运行环境),然后浏览器输入127.0.0.1:9527 将ipa拖入上传框等待即可看到检查结果。

web_screenshot

二、检查原理

  1. 通过mac上xcode的开发环境,找出不同sdk版本的public framework和private framework;通过class-dump反编译出public framework中的api,分别设置为集合PU和PR。
  2. 通过xcode代码提示的sqlite数据库查询出所有的document api,设置为集合DA。
  3. 那么PU - DA为公有framework中的私有api,设置为A
  4. PR为私有framework中的api都不能使用,则私有api集合PRAPI = A + PR
  5. 使用class-dump反编译ipa中的app文件,然后和PRAPI集合取交集即可获得。
  6. 其中有一些细节的集合操作,来准确定位api,例如使用方法名和类名来唯一确定API方法。

三、参考项目

四、Note

  1. 私有的api = (class-dump Framework下的库生成的头文件中的api - (Framework下的头文件里的api = 有文档的api + 没有文档的api)) + PrivateFramework下的api
  2. 私有api在公开的Framework及私有的PrivateFramework都有。
  3. 请暂时暂mac上运行,linux上暂时没有找到合适的、代替otool的工具,求推荐^^!

本文转载自:https://github.com/hustcc/iOS-private-api-checker

共有 人打赏支持
小薇

小薇

粉丝 348
博文 32
码字总数 6185
作品 26
杭州
个人站长
私信 提问
iOS 私有 API 检查工具--iOS-private-api-checker

iOS私有API检查工具 私有API检查的原因在于:苹果在app提审的时候,会检查app使用私有api的情况,对于使用了私有api的app,不予通过,这个工具的目地就是在提审之前检查一下,提高通过率。 ...

小薇
2015/11/09
2.3K
1
告别被拒,如何提升iOS审核通过率(上篇)

iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬。那么问题来了,我们有没有什么办法准确把握苹果审核准则,...

冰冰燕
2017/01/05
0
0
苹果私有API检查工具

@小薇 你好,想跟你请教个问题: 您好,看到您写了一个检查苹果私有API的项目,非常激动,谢谢您,不过我通过方案二,使用web上传了我打包的ipa文件,却报错:“检查失败,也许上传的包并非真...

snilwx
2016/10/06
410
1
iOS一个丝滑的全屏滑动返回手势

全屏返回手势 自 iOS7 之后,Apple 增加了 屏幕边缘右划返回 交互的支持,再配合上 UINavigationController 的交互式动画,pop 到上一级页面的操作变的非常顺畅和丝滑,从此,我很少再使用点...

北方人在上海
2016/07/23
37
0
ENTBOOST v1.3发布,开源企业IM,免费企业即时通讯

恩布互联ENTBOOST发布v1.3版本,主要版本更新内容: 增加批量导入企业部门和部门员工资料功能; 企业IM私有云增加支持不同密码验证机制和支持非邮箱格式帐号; 企业IM私有云增加客户端产品名...

akee
2014/10/10
3.8K
20

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 快捷键

快捷键图标。 官方的下载地址为:https://atlassianblog.wpengine.com/wp-content/uploads/2018/01/keyboard-shortcuts-infographics.pdf...

honeymose
39分钟前
1
0
Apache限定目录解析PHP,限制user_agent,PHP相关的配置

Apache限定目录解析PHP 配置前访问upload/index.php [root@test-a ~]# curl -x192.168.77.139:80 'www.test.com/upload/index.php'This is upload diretory 配置,/usr/local/apache2.4/......

野雪球
43分钟前
1
0
java.util.Concurrent.Exchanger源码

类图 源码: package java.util.concurrent;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent......

狼王黄师傅
今天
5
0
Kubernetes里的secret最基本的用法

Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。 Secret可以以Volume或者环境变量的方式使用。 使用如下命令...

JerryWang_SAP
昨天
4
0
2018-11-20学习笔记

1. python数据类型: 给变量赋值什么样的值,变量就是什么样的类型 给变量赋值整数,变量就是整数类型 给变量赋值字符串,变量就是字符串类型 123 和“123”一样吗? 在python中 单引号 与双...

laoba
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部