Cydia工具介绍

292 查看

原文见:http://wyh.life/article/2014/10/27/cydia

Make iPhone your workstation

Cydia Apps

  • OpenSSH:
    建立ssh连接,切记修改默认root密码(alphine)

  • APT 0.6 Transitional:
    apt-get包管理工具

    • apt-cache search <pkg-name> 查找软件包

    • apt-cache show <pkg-name> 显示软件包信息

    • apt-get update 从APT源更新软件包列表

    • apt-get upgrade 更新软件包

    • apt-get remove <pkg-name> 删除已安装的软件包

    • apt-get purge <pkg-name> 删除已安装的软件包及配置文件

    • apt-get autoremove 删除不需要的软件包(通常是由于依赖关系而安装)

    • apt-get autoclean 删除已卸载的软件包的.deb档

    • dpkg --get-selections | grep <pkg-name> 搜索已安装的软件包

    • dpkg -s/-L <pkg-name> 查看已安装的包信息/路径

  • Gawk:
    支持awk编程,awk是一种强大的文本处理及模式匹配语言

  • MobileTerminal:
    设备上的命令行终端

  • Vim:
    文本编辑

  • Sqlite3:
    db相关操作

    • 将DB转储到ASCII文本文件:echo .dump | sqlite file.db > file.dump

    • 重新构建数据库:cat file.dump | sqlite3 file_new.db

    • 进入sqlite3后,使查询语句结果打印更直观:.headers on.mode column

  • adv-cmds:
    ps, finger, last, lsvfs

  • lsof:

    • 备注,Cydia版本若遇到"Cannot allocate memory",去下载lsof-arm7-iOS4.2替换

    • 列出指定文件/设备/目录下被打开的文件:lsof /var/mobile/

    • 指定PID,查看该进程打开的文件:lsof -p 1234

    • 查看指定端口有哪些进程在使用:lsof -i:22

    • 列出所有的TCP/UDP连接:lsof -i tcp/udp

    • 查看指定用户打开的文件:lsof -u mobile

  • shell-cmds:
    killall, time, which

    • 重启Springboard(如ipa安装不彻底时。备注:sbreload也可以做到):killall -HUP SpringBoard

  • Core Utilities (/bin):
    提供了dirname, kill, mktemp, su

    • dirname工具在脚本使用场景较多

  • top:
    动态查看系统状态,如CPU负载

  • inetutils:
    ping, ftp客户端/服务端

  • network-cmds:
    网络管理工具,ifconfig, netstat, arp, route, traceroute

  • readline:
    方便命令行移动

    • ctrl+r 搜索

    • ctrl+a/e 移动到行首/尾

    • ctrl+u/k 删除到行首/尾

    • ctrl+l 清屏

  • open:
    通过命令行打开应用

  • ipainstaller
    通过命令行安装ipa应用

  • plutil (Erica Utilities):

    • 支持设备上对plist文件进行操作,plutil -show file.plist

  • strings (Binutils):

    • 打印某个文件的可打印字符串,便于了解一些非文本文件的内容。比如可以用来查找浏览器Cookies内容

  • cycript: TBD

命令示例

由于iOS App运行在沙箱中,找到App具体的安装路径:

cd /var/mobile/Applications
my_dir=$(dirname `find . -name 'test.app'`)
cd $my_dir

打印Info.plist中的Bundle Version字段(用到了上述设备端plutil工具,注意stderr的重定向不可省略):

plist="my.app/Info.plist"
version=$(plutil -show $plist 2>&1 | grep 'CFBundleVersion' | cut -d"\"" -f2)

通过dpkg-query打印所有安装的软件包及大小、并排序,最后通过awk计算总大小

dpkg-query -Wf '{$Install-size}\t${Package}\n' | sort -n | awk '{sum += $1; print} END {print sum, "total"}'

参考资料