ios-charles-frida-ssl-pinning

 

pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/

获取包名: 

找到ios app下载链接, ex: https://apps.apple.com/hk/app/wechat/id414478124 ,此时id=414478124 

根据以下两个链接可以查询:   (来自这里

https://itunes.apple.com/cn/lookup?bundleId=[bundle id]

https://itunes.apple.com/cn/lookup?id=[app id] 

注意修改地域名称,此时需要将cn改为hk

即: https://itunes.apple.com/hk/lookup?id=414478124 

访问后,会下载一个1.txt文件 ,在该文件中查询 bundle

"bundleId":"com.tencent.xin"

搞定 !


ios 16以上默认关闭“开发者模式”, 可以使用mac xcode来开启,或者使用爱思助手打开

搞定

objection -g com.czzhao.binance explore

D:\ios-frida\venv\Lib\site-packages\objection\utils\update_checker.py:7: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.

  from pkg_resources import parse_version

Using USB device `Apple iPhone`

Unable to connect to the frida server: this feature requires an iOS Developer Disk Image to be mounted; run Xcode briefly or use ideviceimagemounter to mount one manually

NG!



一、针对 iOS 设备的解决方案

iOS 系统对证书和 App 签名有严格限制,需结合越狱或特殊工具绕过 SSL Pinning。

1. 使用工具直接绕过 SSL Pinning(推荐)

  • 工具:SSL Kill Switch 2
    这是一款 iOS 越狱插件,专门用于禁用 App 的 SSL Pinning 机制。
    • 原理:通过 Hook App 中的 SSL/TLS 校验函数(如SSL_CTX_set_custom_verifySecTrustEvaluate等),强制跳过证书验证步骤。
    • 步骤
      1. 越狱 iOS 设备(需对应系统版本的越狱工具,如 unc0ver、checkra1n)。
      2. 在 Cydia 或 Sileo 中添加源(如https://repo.ios-repo-updates.com),安装SSL Kill Switch 2
      3. 打开插件,启用 “Disable SSL Pinning”,选择目标 App。
      4. 配置 Charles 代理后,即可正常抓包。
  • 工具:Objection + Frida
    无需越狱,通过动态 instrumentation 技术 Hook App 的 SSL 校验逻辑。
    • 原理:利用 Frida 框架注入 JavaScript 代码,Hook App 中负责证书验证的关键函数(如SecTrustEvaluate),返回 “验证通过” 的结果。
    • 步骤
      1. 电脑安装 Frida 和 Objection:pip install frida frida-tools objection
      2. iOS 设备通过 USB 连接电脑,启动目标 App。
      3. 执行命令:objection -g 应用包名 explore 进入交互模式。
      4. 输入命令绕过 SSL Pinning:ios sslpinning disable
      5. 配置 Charles 代理,开始抓包。

2. 重签名 App 并移除 SSL Pinning(适用于有 IPA 安装包的场景)

如果能获取 App 的 IPA 安装包,可通过重签名移除证书校验逻辑:


  • 步骤
    1. 解压 IPA 包,找到可执行文件(通常在Payload/应用名.app/目录下)。
    2. 使用工具(如optoolHopper Disassembler)分析并修改二进制文件,删除或替换 SSL Pinning 相关代码(如移除证书校验的函数调用)。
    3. 用自己的开发者证书重签名 IPA(需安装 Xcode 和苹果开发者账号)。
    4. 将重签名后的 IPA 安装到 iOS 设备,配合 Charles 抓包。

二、针对 Android 设备的解决方案

Android 系统相对开放,绕过 SSL Pinning 的方法更多样。

1. 使用 Magisk 模块(适用于已 root 设备)

  • 工具:Move Certificates
    将用户安装的证书(如 Charles 证书)移动到系统证书目录(/system/etc/security/cacerts/),使 App 信任抓包工具的证书(部分 App 仅信任系统证书)。
  • 工具:TrustMeAlready
    一款 Magisk 模块,通过 Hook 系统级的 SSL 校验函数(如X509TrustManager),强制信任所有证书,绕过 SSL Pinning。

2. 动态 Hook 工具(无需 root,适用于部分 App)

  • 工具:Frida + Objection
    与 iOS 类似,通过 Frida 注入代码绕过校验:
    bash
    # 启动Frida服务(Android设备需连接电脑)
    frida-server -U -f 应用包名 --no-pause
    # 在电脑端执行Objection命令
    objection -g 应用包名 explore
    android sslpinning disable  # 禁用SSL Pinning
    

  • 工具:JustTrustMe
    一款 Xposed 模块,通过 HookX509TrustManagercheckServerTrusted方法,跳过证书验证。需设备安装 Xposed 框架(如 LSPosed)。

3. 修改 APK 并重签名(适用于有安装包的场景)

  • 解压 APK,用jadx反编译查看源码,找到 SSL Pinning 相关逻辑(如CertificatePinner类)。
  • 修改代码移除证书校验(如删除pin方法调用),或替换为信任所有证书的逻辑。
  • apktool重新打包,并用签名工具(如jarsigner)签名后安装。

三、通用抓包工具(支持绕过 SSL Pinning)

除了 Charles,以下工具内置了绕过 SSL Pinning 的功能,可简化操作:


  1. Proxyman
    • 支持 iOS 和 Android,内置 “SSL Pinning Bypass” 功能,通过 Frida 自动注入代码,无需手动操作。
    • 适用于大多数 App,配置简单,界面友好。
  2. Burp Suite + 插件
    • 配合Burp Suite Mobile Assistant插件,可自动绕过部分 App 的 SSL Pinning。
    • 需在设备上安装插件对应的证书和代理配置。
  3. Mitmproxy + 脚本
    • 一款命令行抓包工具,可通过 Python 脚本自定义 SSL 校验逻辑,例如:
      python
      运行
      # 忽略证书验证的脚本示例
      from mitmproxy import ctx
      def verify(server_cert, host):
          return True  # 强制返回验证通过
      

四、注意事项

  1. 法律与伦理风险:抓包他人 App 的数据可能违反用户协议或法律法规,仅限用于合法的测试或学习。
  2. 兼容性问题:部分 App 采用了更复杂的校验(如证书哈希动态验证、二进制加固),可能需要结合逆向工程(如 IDA Pro 分析)才能绕过。
  3. 系统版本限制:新系统(如 iOS 16+、Android 13+)对 Hook 和证书管理的限制更严格,可能需要特定版本的工具配合。


通过上述方法,大部分采用 SSL Pinning 的 App 都能被成功抓包,具体选择哪种方案需根据设备是否越狱 /root、是否有 App 安装包等条件决定。