逆向工具列表

1.1 检测工具

  • Reveal
  • tcpdump
  • libNotifyWatch
  • PonyDebugger

1.2 开发工具

  • Theos - tweak

1.3 反编译工具

  • IDA

1.4 调试工具

  • LLDB

1.5 查看 App 文件目录

  • iFunBox
  • iExplorer
  • iFile

2. 文件目录

mac 目录 解释
/ 根目录
/bin "binary", 存放提供用户级基础功能的二进制文件,如 ls, pwd, ps 等
/dev "device", 存放 BSD 设备文件. 每个文件代表系统的一个块设备或字符设备.一半来说"块设备"以块为单位传输数据, 比如硬盘; 而"字符设备"以字节为单位传输数据, 如调制解调器.
/sbin "system binary", 存放提供系统级基础功能的二进制文件, 如 netstat, reboot 等;
/etc "et cetera", 存放系统脚本及配置文件, 如 passwd, hosts 等, 在ios 中实际是一个符号链接, 实际指向 /private/etc
/private 存放两个目录, 分别是/private/etc 和 /private/var.
/tmp 临时目录.在ios 中实际是一个符号链接, 实际指向 /private/tmp
/usr 包含了大多数用户工具和程序. /usr/bin 包含了/bin 和 /sbin中未出现的基础功能, 比如 nm,killall 等;/usr/include包含所有的标准 C 头文件; /usr/lib 存放库文件.
/var "variable", 存放一些经常更改的文件, 比如日志, 用户数据, 临时文件等. 其中 /var/Mobile/Application 下存放了所有 App store App, 是要重点关注的目录之一.
/boot 存放能使系统成功启动的所有文件, 这些文件一般在内核用户程序开始执行前得到调用. ios 此目录为空
/lib 存放系统库文件, 内核模块及设备驱动等. ios 此目录为空
/mnt "mount", 存放临时的文件系统挂载点. ios 此目录为空
/Application 存放所有的系统 App 和来自 Cydia 的 App, 不包活 App Store App. 越狱过程把/ Application 变成了一个符号链接, 实际指向 /var/stash/Applications.
ios 目录 解释
/Developer /Developer 相对没有那么重要, 它的出现完全是因为我们在 Xcode 连接iOS设备选择了 "Use for Development".
/Library 用来存放系统 App 的数据. 其中最需要关注的是 /Library/MobileSubstance 目录, 因为这个目录存放了所有基于 MobileSubstance 的插件(tweak).
/System 包含了大量的系统组件: ./Library/PrivateFrameworks: 存放 ios 中各种 framework; ./Library/CoreServices 里的 SpringBoard.app 就是桌面管理器, 是用户与系统交流的最重要的中介. ./Library/PreferenceBundles 其中的各种 bundle 提供了"设置"中的绝大多数功能.
/User 用户目录, 实际指向 /var/mobile, 这个目录里存放了大量的用户数据, 比如: /var/mobile/Media/DCIM:照片目录; /var/mobile/Library/SMS:短信目录; /var/mobile/Library/Mail:邮件目录; /var/wireless/Library/CallHistory: 通话记录; /var/mobile/Applications, 存放的是从 app store 下载的 app.

3. 安装包格式

  • deb
    deb 格式是 Debian 系统(包含 Debian 和 Ubuntu)专属安装包格式, 配合 APT 软件管理系统使用, 是当前 Linux 下非常流行的一种安装包格式, 是由 Cydia 作者 Jay Freeman(saurik)移植到 iOS 中的.
    由于 Unix 类系统对权限, 所有者, 组的要求很严格, 而 deb 格式安装包又经常会涉及系统比较底层的操作, 可以获取较高的权限, 所以从 Cydia 下载的 app 都是 deb 格式的.
  • ipa
    ipa 格式是苹果公司在iOS平台上推出的专属软件安装包, 在2.0固件发布后才正式投入使用, 是目前 ios 中唯一的官方安装包格式.
    ipa 文件权限很小, sandbox 限制很大, 访问资源十分有限, 这一点早已为广大开发人员熟知.
  • pxl
    pxl 格式起源于 Mac 系统上的 pkg 安装包, 在1.x 固件时代被广泛使用, 曾经是 ios 平台上唯一的官方安装包格式. 现在的91手机助手等少数平台在使用.

4. Dynamic Library & Static Library

  • 动态库 (StaticLibrary)
    在一个 app 启动时, 系统会把 App 的代码和它所链接的 StaticLibrary 一起加载到分配好的内存空间中, 不过如果如果一次性加载的内容过多, 会造成 app 启动变慢.
  • 动态库 (DynamicLibrary)
    动态库相对"智能", 只有当 App 要用到这个 Library 时, 系统才把对应的动态库加载进内存. 具体来说, 当一个 app 启动时, ios 内核创建一个新进程, 然后把 App 的代码加载到新进程的内存空间里; 同时内核还会启动 Dynamic Loader(/usr/lib/dyld), 把 App 需要的动态库加载到内存空间.

5. deamon

deamon: 进程守护者, 跟 Windows 中的 service 类似.
deamon 存在的意义就是后台运行, 为用户操作系统提供各种守护, 如: imagent 保障 iMessage 的正确收发, mediaserverd 处理几乎所有音频, 视频, syslogd 记录系统日志等.
iOS 系统中的 deamon 主要由一个可执行文件和一个 plist 文件构成. iOS 的根进程是 /sbin/launchd, 会在开机或接到命令时检查 /System/Library/LaunchDeamon 和 /Library/Deamon 下所有符合格式规定的 plist 文件, 然后按需启动对应的 daemon.这里的 plist 文件和 app 中的 Info.plist 文件功能类似, 记录了 deamon 的基本信息. "iOS第一款电话录音软件 - Audio Recorder"就是通过逆向 /usr/sbin/mediaserverd 这个 deamon 实现的!!!

你可能感兴趣的:(逆向工具列表)