有关于私有财产的法律iOS私有API的问题

iOS私有API
1.获取电话号码
需要CoreTelephony.framework
extern NSString* CTSettingCopyMyPhoneNumber();&
+(NSString *) phoneNumber {&
&&& NSString *phone = CTSettingCopyMyPhoneNumber();&苹果 iOS 私有 api 检查工具 iOS-private-api-checker - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
在线优惠购买
Apple China 在线商店
Apple China 教育商店
苹果 iOS 私有 api 检查工具 iOS-private-api-checker
19:59:17 +08:00 · 2069 次点击
git 地址:
私有的 api = (class-dump Framework 下的库生成的头文件中的 api - (Framework 下的头文件里的 api = 有文档的 api + 没有文档的 api)) + PrivateFramework 下的 api 。
私有 api 在公开的 Framework 及私有的 PrivateFramework 都有。
现在正在做这个工具,已经可以在 mac 上运行使用,因为想移植到 linux 上,搭建 web 检测平台,所以还在找相关的命令工具替换工具。
例如: class-dump 使用 class-dump-z 代替,运行良好!
但是 otool 找不到替代的 linux 工具,求教????
项目参考两个 git 项目,在 readme 中已经说明。
第 1 条附言 &·&
15:09:27 +08:00
增加了 web 上传检查,使用 flask + mdl
增加 ipa 包信息读取
在 mac 上启动 mac 之后,可以直接使用 截图如下:
2 回复 &| &直到
20:09:18 +08:00
& & 20:03:49 +08:00 via iPhone
说到 otool ,可以试试 llvm-objdump 和 llvm-readobj 。
llvm 的工具都是跨平台支持 macho 格式的。
& & 20:09:18 +08:00
@ 好的,感谢大神~
& · & 2690 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 53ms · UTC 05:44 · PVG 13:44 · LAX 21:44 · JFK 00:44? Do have faith in what you're doing.推荐这篇日记的豆列
&&&&&&&&&&&&标签:至少1个,最多5个
iOS-private-api-checker 苹果iOS私有API检查工具 Developer tool to scan iOS apps for private API usage before submitting to Apple
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方式:
修改iOS_private.py main方法中的ipa路径,运行即可。
使用Web上传运行的方式,运行python run_web.py(请先配置flask运行环境),然后浏览器输入127.0.0.1:9527 将ipa拖入上传框等待即可看到检查结果。
二、检查原理
通过mac上xcode的开发环境,找出不同sdk版本的public framework和private framework;通过class-dump反编译出public framework中的api,分别设置为集合PU和PR。
通过xcode代码提示的sqlite数据库查询出所有的document api,设置为集合DA。
那么PU - DA为公有framework中的私有api,设置为A
PR为私有framework中的api都不能使用,则私有api集合PRAPI = A + PR
使用class-dump反编译ipa中的app文件,然后和PRAPI集合取交集即可获得。
其中有一些细节的集合操作,来准确定位api,例如使用方法名和类名来唯一确定API方法。
三、参考项目
iOS-api-scan.md
私有的api = (class-dump Framework下的库生成的头文件中的api - (Framework下的头文件里的api = 有文档的api + 没有文档的api)) + PrivateFramework下的api。
私有api在公开的Framework及私有的PrivateFramework都有。
请暂时暂mac上运行,linux上暂时没有找到合适的、代替otool的工具,求推荐^^!
2 收藏&&|&&24
你可能感兴趣的文章
3 收藏,3.7k
1 收藏,629
本作品采用 署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
里面framework路径也对应改成你自己的~
里面framework路径也对应改成你自己的~
已经改了:
配置各个不同sdk版本的framework目录,
sdks_config = []sdks_config.append({
'sdk': '9.1',
'framework': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.1.sdk/System/Library/Frameworks/',
'private_framework': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.1.sdk/System/Library/PrivateFrameworks/'
已经改了:
#配置各个不同sdk版本的framework目录,
sdks_config = []
sdks_config.append({
'sdk': '9.1',
'framework': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.1.sdk/System/Library/Frameworks/',
'private_framework': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.1.sdk/System/Library/PrivateFrameworks/'
有个问题,我现在把 9.1 上的数据都拉出来了。 classdump 需要特别的版本, 才能支持 9.1。 然后我扔了一个包上去,结果扫出来的private api 都不对。
比如以下两个:
11、locationManager:rangingBeaconsDidFailForRegion:withError:api is protocol, IN sdk 9.1、EventKit.framework -& CLLocationManagerDelegate-Protocol.h -& CLLocationManagerDelegate -& locationManager:rangingBeaconsDidFailForRegion:withError:12、sectionIndexTitlesForTableView:api is protocol, IN sdk 9.1、AddressBookUI.framework -& UITableViewDataSource-Protocol.h -& UITableViewDataSource -& sectionIndexTitlesForTableView:
感觉有点莫名其妙了。
@aTool_org 有个问题,我现在把 9.1 上的数据都拉出来了。 classdump 需要特别的版本, 才能支持 9.1。 然后我扔了一个包上去,结果扫出来的private api 都不对。
比如以下两个:
11、locationManager:rangingBeaconsDidFailForRegion:withError:
api is protocol, IN sdk 9.1、EventKit.framework -& CLLocationManagerDelegate-Protocol.h -& CLLocationManagerDelegate -& locationManager:rangingBeaconsDidFailForRegion:withError:
12、sectionIndexTitlesForTableView:
api is protocol, IN sdk 9.1、AddressBookUI.framework -& UITableViewDataSource-Protocol.h -& UITableViewDataSource -& sectionIndexTitlesForTableView:
感觉有点莫名其妙了。
检测是通过匹配做的,还需要一个白名单,由开发来反复培训,才能比较准确…whitelist还在完成…
检测是通过匹配做的,还需要一个白名单,由开发来反复培训,才能比较准确…whitelist还在完成…
找最大的那个~一般都在50m以上
找最大的那个~一般都在50m以上
自己在根目录建一个tmp目录试试~这个是文件找不到~
自己在根目录建一个tmp目录试试~这个是文件找不到~
pip install flask即可,如果还缺少其他的,类似的即可。
另外,如果还有其他的问题,建议到github上提issue。
pip install flask即可,如果还缺少其他的,类似的即可。
另外,如果还有其他的问题,建议到github上提issue。
我把config.py中的sdks_config中的信息改成sdk9.1,保存后执行python build_api_db.py,好像失败了。执行结果如下:One private api. count:
-1private api lengh: 0start group by...deduplication private api len: 0insert into db framework_private_apis, len: -1insert into db private_apis, len: -1
我把config.py中的sdks_config中的信息改成sdk9.1,保存后执行python build_api_db.py,好像失败了。执行结果如下:
One private api. count:
private api lengh: 0
start group by...
deduplication private api len: 0
insert into db framework_private_apis, len: -1
insert into db private_apis, len: -1
目测是目录不存在啊~~~另外docset文件找到没?
目测是目录不存在啊~~~另外docset文件找到没?
docSet的路径是不 是也要重新配置,Xcode 中有5个docSet文件应该是哪个,将docSet.dsidx内容导出到sqlite中,是不是在sqlite中打开就行
@aTool_org
docSet的路径是不 是也要重新配置,Xcode 中有5个docSet文件应该是哪个,将docSet.dsidx内容导出到sqlite中,是不是在sqlite中打开就行
File "/Users/ogsgame/Desktop/iOS-private-api-checker-master-2/api/api_utils.py", line 126, in _get_headers_from_path
frameworks = os.listdir(framework_folder)
OSError: [Errno 2] No such file or directory: '/Users/ogsgame/Desktop/iOS-private-api-checker-master-2/tmp/pub-headers'
这个错误是为什么
@aTool_org
File &/Users/ogsgame/Desktop/iOS-private-api-checker-master-2/api/api_utils.py&, line 126, in _get_headers_from_path
frameworks = os.listdir(framework_folder)
OSError: [Errno 2] No such file or directory: '/Users/ogsgame/Desktop/iOS-private-api-checker-master-2/tmp/pub-headers'
这个错误是为什么
pub-headers 这个文件是什么,这个怎么办再建一个文件吗
pub-headers 这个文件是什么,这个怎么办再建一个文件吗
我已经安装完flask的环境变量了但是在运行run_web.py的时候出现了这个错误ImportError: No module named flask
@aTool_org
我已经安装完flask的环境变量了但是在运行run_web.py的时候出现了这个错误
ImportError: No module named flask
要怎么样把docSet.dsidx内容导出到sqlite,检查不出什么来
@aTool_org
要怎么样把docSet.dsidx内容导出到sqlite,检查不出什么来
怎么使用了
怎么使用了
我通过方案二,使用web上传了我打包的ipa文件,却报错:“检查失败,也许上传的包并非真正的ipa,或者系统出现错误!”,请问这是怎么回事啊?
我通过方案二,使用web上传了我打包的ipa文件,却报错:“检查失败,也许上传的包并非真正的ipa,或者系统出现错误!”,请问这是怎么回事啊?
应该是 需要在对应的位置新建一个 tmp 目录。
应该是 需要在对应的位置新建一个 tmp 目录。
怎么使用?可不可以详细一点,怎么配置false环境
怎么使用?可不可以详细一点,怎么配置false环境
你好,感谢提供私有api检查工具并开源,在阅读源码时有疑惑,请确认一下build_api_db.py文件中的疑似bug,rebuild_private_api函数中128行中应该是private_framework_apis,不应该是framework_dump_private_apis
你好,感谢提供私有api检查工具并开源,在阅读源码时有疑惑,请确认一下build_api_db.py文件中的疑似bug,rebuild_private_api函数中128行中应该是private_framework_apis,不应该是framework_dump_private_apis
分享到微博?
我要该,理由是:Pages: 1/2
主题 : iOS APP 审核被拒,使用了私有API
级别: 新手上路
可可豆: 21 CB
威望: 21 点
在线时间: 27(时)
发自: Web Page
来源于&&分类
iOS APP 审核被拒,使用了私有API&&&
Your app uses or references the following non-public APIs, which is a violation of the App Store Review Guidelines:    setNetworkType    The use of non-public APIs is not permitted in the App Store because it can lead to a poor user experience should these APIs change.该怎样查找这个修改?不知道在哪个文件里使用了。
级别: 新手上路
UID: 531789
可可豆: 111 CB
威望: 102 点
在线时间: 113(时)
发自: Web Page
在项目全局搜索里搜下“ setNetworkType” 看看在那个文件里面,换种方式实现估计就行了吧
级别: 新手上路
可可豆: 21 CB
威望: 21 点
在线时间: 27(时)
发自: Web Page
回 1楼(Warrior819) 的帖子
直接搜索“ setNetworkType” 并没有搜出来。搜“ setNetwork”可以搜到AFNetWorking里面有这个,但是别的项目都是这样的也没有被拒,所以觉得不是AFNetWorking里面这个,所以不知道怎么找到这个“ setNetworkType”
级别: 新手上路
UID: 316916
可可豆: 11 CB
威望: 4 点
在线时间: 95(时)
发自: Web Page
楼主怎么知道的 ?解决了吗 ,遇到同样的问题
级别: 骑士
UID: 303820
可可豆: 454 CB
威望: 407 点
在线时间: 2305(时)
发自: Web Page
你搜一下NetworkType试试
级别: 新手上路
UID: 163923
可可豆: 48 CB
威望: 30 点
在线时间: 523(时)
发自: Web Page
楼主解决了吗?我也遇到类似的问题:提示我用了NSBlock 私有api ,全局搜索也搜不到任何与使用到的地方。
哥难得来一次,仅仅是逛逛,绝对不刻意顶帖,点赞。。
级别: 禁止发言
可可豆: 31 CB
威望: 21 点
在线时间: 7(时)
发自: Web Page
用户被禁言,该主题自动屏蔽!
级别: 新手上路
可可豆: 60 CB
威望: 60 点
在线时间: 267(时)
发自: Web Page
没有大神吗&&好几天了 给解决下呗&&我分析 是在 静态库中 方法存在 与私有方法 重名的情况&&就是不知道 怎么找到 是哪个.a文件呢
级别: 新手上路
可可豆: 60 CB
威望: 60 点
在线时间: 267(时)
发自: Web Page
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
级别: 侠客
UID: 497890
可可豆: 246 CB
威望: 194 点
在线时间: 260(时)
发自: Web Page
回 8楼(姜训彤) 的帖子
看看 这个设置没&&other link flags中设置一个参数:-ObjC
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版

我要回帖

更多关于 客户私有化问题 的文章

 

随机推荐