文档章节

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

小薇
 小薇
发布于 2015/11/05 22:44
字数 617
阅读 357
收藏 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

共有 人打赏支持
小薇

小薇

粉丝 347
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部