iOS逆向小知识:批量部署插件(搭建私有Cydia源)

简介: iOS逆向小知识:批量部署插件(搭建私有Cydia源)

前言

有一天你修改了tweak插件,想更新到你管理的100台iPhone机器,就会觉得平常的安装方式make package install 、dpkg -i效率低下。所以今天就特地给你分享一个小知识:通过搭建私有Cydia源 ,将 Tweak 批量部署设备上的解决方案

  1. 利用 bzip2 生成 Cydia 可以识别的文件格式,开启HTTPServer 提供文件下载的web服务:~/cydia 下执行python -m SimpleHTTPServer 8088
  2. 从cydia 添加对应的源(http://192.168.2.189:8088/

I、 Cydia源服务器搭建

假设我们的源URL地址是 192.168.2.189/cydia, 对于本地的cydia目录来说, 结构如下

Cydia/
 --Release  repo描述文件
 --Packages  repo的package清单
 --Packages.gz  repo的package清单
 --Packages.bz2  repo的package清单
 --CydiaIcon.png
 --debs/  实际package文件
   --xxxx1.deb
   --xxxx2.deb

搭建软件源,必须保证至少有Release【可选】和Packages两个文件,具体请看辅助脚本

https://download.csdn.net/download/u011018979/27999302

核心搭建步骤:

  1. 创建一个存放deb包的仓库
  2. 开启HTTPServer:~/cydia 下执行python -m SimpleHTTPServer 8088
  3. 添加对应的源到cydia以便下载更新deb包(http://192.168.2.189:8088/

1.1   利用 bzip2 生成 Cydia 可以识别的文件格式,并放入特定目录作为仓库供下载使用

制作脚本下载

https://download.csdn.net/download/u011018979/27999302

dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
Serving HTTP on 0.0.0.0 port 8088 ...
192.168.2.156 - - [06/Feb/2018 18:50:04] "HEAD /Packages.bz2 HTTP/1.1" 200 -
192.168.2.156 - - [06/Feb/2018 18:50:04] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:50:04] "HEAD /Packages.gz HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:50:09] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:50:09] "GET /./InRelease HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:50:09] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:50:09] "GET /./Release HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:50:09] "GET /./Packages.bz2 HTTP/1.1" 200 -
192.168.2.156 - - [06/Feb/2018 18:52:20] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:52:20] "GET /./CydiaIcon.png HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:52:24] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:52:24] "GET /./CydiaIcon.png HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:52:25] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:52:25] "GET /./InRelease HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:52:25] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:52:25] "GET /./Release HTTP/1.1" 404 -
192.168.2.156 - - [06/Feb/2018 18:52:25] "GET /./Packages.bz2 HTTP/1.1" 200 -
192.168.2.156 - - [06/Feb/2018 18:52:38] code 404, message File not found
192.168.2.156 - - [06/Feb/2018 18:52:38] "GET /CydiaIcon.png HTTP/1.1" 404 -

1.2 开启HTTPServer

python -m SimpleHTTPServer 8088

测试的时候可以使用,这个命令简单的开启一个HTTPServer ~/cydia 下执行python -m SimpleHTTPServer 8088对应的原地址:http://192.168.2.189:8088/cydia

1.3 将自己的源地址添加到cyida 中

我们先来看看cyida 中存放源地址的配置文件

iPhone:~ root# cat  /var/mobile/Library/Caches/com.saurik.Cydia/sources.list
deb http://apt.saurik.com/ ios/1144.17 main
deb https://build.frida.re/ ./
deb http://cydia.zodttd.com/repo/cydia/ stable main
deb http://repo666.ultrasn0w.com/ ./
deb http://192.168.2.185/cydia/ ./
deb http://192.168.2.69:8088/ ./

因此想添加源地址直接修改配置文件即可,我们可以在/etc/apt/sources.list.d这个目录下创建自己的内置源配置文件wl.list,或者直接添加到 cydia.list

echo -e 'deb http://apt.saurik.com/ ios/1348.22 main \n' >  /private/etc/apt/sources.list.d/cydia.list

方式1: 一行命令添加内置的源:通过prints脚本修改sources.list,来添加源地址。

让普通人不懂得如何删除我们的源 /private/etc/apt/sources.list.d/wl.list;

利用初次安装deb包的preinst脚本添加内置的源,以后部署新机器,不用烦琐的添加多个源。

# 在preinst脚本添加:
function kncydia {
    echo "[将自己的源地址添加到cyida 中]"
        # install.exec "echo -e '127.0.0.1 localhost \n192.168.2.107 xx.com' > /etc/hosts"
      echo -e 'deb http://192.168.2.69:8088/ ./ ' > /private/etc/apt/sources.list.d/wl.list#-e 参数是为了使用换行符\n
}

查看是否修改成功

/private/etc/apt/sources.list.d root# cat  wl.list
deb http://192.168.2.69:8088/ ./
deb http://192.168.2.185/cydia/ ./

方式二:直接在cydia app手动添加源地址即可

手动添加等价于修改以下文件/private/etc/apt/sources.list.d/cydia.list -> /var/mobile/Library/Caches/com.saurik.Cydia/sources.list

II、 知识补充

2.1 文件目录功能解释

我们先来复习下 cydia_repo 的目录结构

deb 源本质上就是需要特定结构的目录
cydia--
         |--debs--*.deb
         |--Packages  :dpkg-scanpackages debs /dev/null > Packages ;Packages 文件中包含源中每个包文件的信息,包括文件路径、大小、依赖、架构及校验信息
         |--Packages.bz2 :由Packages文件压缩而来, 命令行: bzip2 Packages;
         |--Packages.gz
         |--Release  :是一个普通的文本文件,用于描述当前源的信息;这些信息会在 Cydia 的源列表及 Tweak 搜索列表中显示
         |--Release.gpg :Package Signatures,from our Release file. This file will be downloaded by the clients first and then is used to verify the validity of the Release file. gpg -abs -o Release.gpg Release
其中Packages.bz2 和debs 是必须,其他文件都是可选的。
  • Release

Cydia源配置文件,客户端通过下载此文件来读取cydia源信息; Release文件几乎不用改, 只要准备好deb文件, 然后用dpkg-scanpackage命令生成Packages就可以了

  • Packages

1)deb包索引文件, 保存了各个deb包的control文件的信息,以及各个deb包的文件信息.

2)该目录是 由 dpkg-scanpackages debs /dev/null > Packages 产生。

  • Packages.bz2

由Packages文件压缩而来, 命令行: bzip2 Packages

  • CydiaIcon.png

an icon named "CydiaIcon.png" in your root dir so the user finds your repo at a glance.

2.2 deb包的执行脚本

  1. debian/preinst 安装前执行脚本
  2. debian/postinst 安装后执行脚本
  3. debian/prerm 卸载前执行脚本
  4. debian/postrm 卸载后执行脚本

2.3  tweak的两种发布方式

  1. 打包成deb格式的安装包 ,可在越狱设备上批量安装
  2. 直接使用开发者自己的证书/企业证书直接将补丁打包成ipa,这样不需要越狱也是可以安装的。
  • cydia

由 Jay Freeman(saurik)和他的公司开发,用于安装、管理越狱设备上的第三方软件、插件。它移植了Debian上的包管理器dpkg并提供了图形化前端,方便普通用户使用。Cydia 中还有个 Cydia Store,提供付费的第三方应用。

  • CydiaSubstrate

iOS7 之前也叫MobileSubstrate,也是由saurik开发的。Cydia Substrate consists of 3 major components: MobileHooker, MobileLoader and safe mode.

  • Electra

Tweak 开发者 CoolStar 基于 async_awake、以及Comex 开发的 CydiaSubstrate 的开源替代: Substitute,开发了 Electra 越狱工具。支持 iOS11.0 - iOS 11.1.2 的全部 iOS 设备

III、其他例子

去掉内置的源,仅留 http://apt.saurik.com/

iPhone:~ root#  find / -mmin -1 
     echo -e 'deb http://apt.saurik.com/ ios/1348.22 main \n' >  /private/etc/apt/sources.list.d/cydia.list
     echo -e 'deb http://apt.saurik.com/ ios/1348.22 main \n' >  /var/mobile/Library/Caches/com.saurik.Cydia/sources.list
# deb http://apt.saurik.com/ ios/1348.22 main
     echo -e 'deb http://apt.saurik.com/ ios/1348.22 main \n' >  /private/var/mobile/Library/Caches/com.saurik.Cydia/sources.list

清理V_P_N的垃圾log

echo "" > /private/var/log/ppp.log

IV、 see also

目录
相关文章
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
术语:uni原生插件指的是将`原生开发的功能按照规范封装成插件包`,然后即可在 uni-app 前端项目中通过js调用原生能力。
792 0
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
|
2月前
|
缓存 小程序 Android开发
mPaaS问题之iOS调用插件的时候提示没有配置mpaas. Config文件如何解决
mPaaS配置是指在mPaaS平台上对移动应用进行的各项设置,以支持应用的定制化和优化运行;本合集将提供mPaaS配置的操作指南和最佳实践,助力开发者高效管理和调整移动应用的设置。
59 1
|
iOS开发 开发者
iOS开发- 注释插件VVDocumenter-Xcode in Xcode8
iOS开发- 注释插件VVDocumenter-Xcode in Xcode8
60 0
iOS开发- 注释插件VVDocumenter-Xcode in Xcode8
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni 原生插件(支持iOS Extension)
背景:app采用uni实现 需求: iOS App前台后台离线(杀死情况下)推送语音播报(到账xx元、收款播报、自定义推送铃)。 实现方式:uni-app 原生插件(支持iOS Extension)
293 0
iOS小技能: 开发 uni 原生插件(支持iOS Extension)
|
数据安全/隐私保护 iOS开发
iOS逆向小技能:解锁无密码的设备、判断设备是否锁定、锁定设备、打开某个程序
介绍lua 函数: runApp、closeApp、getScreenSize、getDeviceID、lua_exit、isFrontApp。
191 0
|
IDE Unix 编译器
iOS小技能:Makefile的使用(Makefile的规则、部署脚本、config管理ssh连接)
make是一个命令工具,是一个解释makefile中指令的命令工具。其本质是**文件依赖**,Makefile文件制定编译和链接所涉及的文件、框架、库等信息,将整个过程自动化。
310 0
|
iOS开发
iOS项目环境基本搭建
iOS项目环境基本搭建
99 0
iOS项目环境基本搭建
|
移动开发 开发框架 前端开发
iOS--React Native视频播放器插件
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。
276 0
|
移动开发 开发框架 前端开发
iOS--React Native浏览器插件
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。
100 0