首页 > 其他分享 >如何提取 IOS Document_apis

如何提取 IOS Document_apis

时间:2022-09-28 16:05:14浏览次数:46  
标签:提取 apis IOS cache db Dash API Document id

关于IOS 私有库的搭建,⽹上的教程很少,目前为止,发现的⼀个⽐较好的⽂章,是教你私有库的搭建和扫描,但是⽂章因为存在时间⽐较⻓,套在现在框架中,难免有些不适⽤,我就在⼤神(Deft_MKJing宓珂璟)的基础上,做⼀些补充和修改。在这⾥,我想感谢下⼤神的奉献和先驱者们的探索,我也把⾃⼰的经验分享出来,做⼀点贡献。

我之前出了一个提取IOS Run-header的文章,和这个文章相当于是系列文章,这篇文章主要是教大家怎么提取 document_apis, 也就是大神文章中集合C。这里针对的是IOS 15.0版本。

回顾

如何提取 IOS Document_apis_测试

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk

版本查看可以在路径下 SDKSettings.json 文件中看到

如何提取 IOS Document_apis_xcode_02

文章中关于9.0版本后,Xcode 9之后的API 内置在一个Framework里面,主要是两个文件:map.db 和 cache.db, 路径为:

/Applications/Xcode.app/Contents/SharedFrameworks/DNTDocumentationSupport.framework/Versions/A/Resources/external

那么问题就出来了,在我们最新的环境中,文档是好像是内嵌了个浏览器的形式展现的,同时,也找不到map.db 文件,所以这里,我们需要调整下。

获取 document_apis 我目前总结了两种。lzfse 方法和 Dash 方式,我们先说 lzfse 的方式,再说,Dash 的方式就比较容易理解。并且,Dash 的方式API 不是很全面,所以,Dash 不是很赞成。

01

lzfse 方式

/Applications/Xcode.app/Contents/SharedFrameworks/DNTDocumentationSupport.framework/Versions/A/Resources/external

在上面的路径下,我们可以看到一个 cache.db 文件,和一个 fs 的文件夹,

如何提取 IOS Document_apis_字节码_03

cache.db 是一个数据库文件,

如何提取 IOS Document_apis_字节码_04

cache.db 数据解析:

row_id: id
uuid: 现在的文档因为是在线查看,文档中还包含了很多图片,视频,文本等内容, uuid 是内置浏览器加载的uuid, 我们在抽取 document_apis 的时候,只需要解析文本文件即可。
data_id: 当前 uuid 对应在 fs 文件下的文件名。
offset: 因为 fs 是字节码文件,我们读文件的时候,这个字段可以标识读取字节码开始位置。
lenght: 当前 uuid 所占字节码文件中的长度。

如何提取 IOS Document_apis_字节码_05

metadat json 对象字段说明:
title: API name
roleHeading: 当前所属类型, instance method就是实例方法,function 是c语言的函数。
e xternalID:当前id, 包含类库名,头文件名,function

02

Dash 方式

这种提取方式是依据Dash 软件提取的,这种提取方式提取的API 比较方便,快捷,但是也有一定的缺陷:

  1. 没有头文件的定义
  2. API 不全,可能会有缺失
~/Library/Application Support/Dash/DocSets

如何提取 IOS Document_apis_xcode_06

如何提取 IOS Document_apis_字节码_07

打开后有两张表,一个是 searchindex ,另外一个是 cache

searchindex表说明:
id : 标识id
name:API 名,类名...
type:类型,当前所属方法还是类....
path: 文档路径

cache表说明:
id: 标识id

Dash这种方式也是可以提取出API 的,但是个人感觉不太准确,不能用作构建私有库的API。

结果

如何提取 IOS Document_apis_xcode_08

如何提取 IOS Document_apis_测试_09

最后,本章的内容就介绍完毕,再次感谢各位程序员,测试人员在探索的道路上不断的付出,也希望有机会和大家一起研究探讨。


标签:提取,apis,IOS,cache,db,Dash,API,Document,id
From: https://blog.51cto.com/u_15649298/5719638

相关文章

  • iOS小技能:地理编码(地址转坐标)
    前言需求:手动输入位置信息需要进行地理编码获取经纬度,判断是否为国内地址。I高德位置服务:地理编码(地址转坐标)用户在高德地图官网申请Web服务API类型Key:https://lbs.amap......
  • 从几个开源项目浅谈IOS视频流输出方案
    IOS远程控制技术当中,最重要的环节是视频的输出,本文就目前出现的几种IOS视频流技术做一个实践和对比,重点会放在比较这几个方案在性能上的优缺点。方案分析IOS视频流方案,目前......
  • iOS小技能:金额格式处理 (货币符号本地化)
    引言iOS系统自带格式化NSFormatter的常用子类有:NSNumberFormatter(数字格式化)、NSDateFormatter(NSISO8601DateFormatter日期格式化)、NSPersonNameComponentsFormatter(名片格......
  • [iOS]遇到了一个问题:“XXXX”中无法使用Apple Pay ,检查此应用的设置并确定其设计可使
     在钥匙串里查看,发现当时申请的MerchantIDXXXX证书过期1.到apple开发者: https://developer.apple.com/account/#/overview/ 查看 Certificates,Identifiers......
  • ios(siri)控制windows的一种思路
    通过siri控制Windows可以解决一些远程控制场景。比如:睡觉前远程关闭电脑;语音(siri)控制电脑音量,控制应用运行等;具体实现:1.需要电脑开启sshserver,可以在Windows【设置】......
  • 使用iOS手势UIGestureRecognizer(转)
    UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势:1、......
  • ios开发之app内起动用户评价 (转)
    ios开发之app内启动用户评价恰当的指引用户去给app评分是获得用户反馈的一种不错的途径。“通过customurlscheme启动应用程序”这篇文章里讲了通过url启动地图、邮件等程......
  • ios游戏发布流程
    这里假设你已经有苹果的开发者帐号了。其实早在两年前我就已经用过这个了,现在再回忆一下。因为苹果现在为开发者增加了macos的appstore发布权限,也增加了tvOS发布应用权限,......
  • vue3+vant+vue-router+axios+pinia+vite框架搭建
    vue3的官网地址:https://cn.vuejs.org/;这里要说一下,vue3不支持IE11,如果要兼容IE11及其一下,不建议使用vue3。创建vue脚手架,如果你需要使用ts,则需要node版本>=16。本文按照......
  • axios学习笔记
     一.  安装json-server 01安装npminstall-gjson-serverhttps://github.com/typicode/json-server 02,新建一个db.json文件,把上面链接文档的数据放上去......