npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lynfe/zsign-wasm-resigner-wrapper

v0.2.0

Published

WASM full resigning toolkit packaged with stable src/dist/binary directories.

Readme

zsign — 快速跨平台 iOS 代码签名工具

Build License: MIT Platform C++11 Stars

语言: English | 简体中文

zsign 是一个快速、开源、跨平台的 iOS 代码签名工具,兼容 iOS 12+,可作为 Apple codesign 的替代品。它可以在无需 Xcode、无需 macOS 的环境下,使用自定义证书和描述文件对 .ipa 安装包、Mach-O 二进制文件以及 .app Bundle 进行重签名。适用于 iOS 重签名、dylib 注入、CI/CD 流水线,以及在 Linux / Windows 服务器上分发 IPA 的工作流。

关键词: iOS 签名 · iOS 重签名 · codesign 替代品 · IPA 重签 · Mach-O 签名 · dylib 注入 · iOS 自动化打包 · Linux 签名 iOS · Windows 签名 iOS · p12 签名 · 描述文件 · OCSP 检查 · 临时签名 · ad-hoc 签名

如果这个工具对你有帮助,请点一个 ⭐ Starzhlynn

目录

功能特性

  • 快速 IPA 重签名 — 通过 .zsign_cache 持久化缓存,后续签名可跳过未变更的 Mach-O
  • 跨平台 — 支持 macOS、Linux、Windows、Android、FreeBSD(无需 Xcode)
  • dylib 注入 / 移除 — 支持 LC_LOAD_DYLIBLC_LOAD_WEAK_DYLIB
  • 多描述文件签名 — 支持 App Extensions 的独立描述文件
  • Bundle 信息修改 — 修改 Bundle ID、显示名称、版本号、最低 OS 版本、entitlements
  • Ad-hoc 临时签名 — 无需开发者证书即可签名
  • 证书 / OCSP 检查 — 解析 .ipa.p12.mobileprovision.cer.pem、Mach-O 中的证书
  • 元数据提取 — 导出 Info.plist 字段和应用图标为 metadata.json + PNG
  • Bundle 清理 — 移除 App Extensions、Watch App、UISupportedDevices
  • Files App 集成开关 — 一键开启 UISupportsDocumentBrowserUIFileSharingEnabled

支持平台

macOS · Linux · Windows · Android · FreeBSD

构建

macOS

brew install pkg-config openssl
git clone https://github.com/zhlynn/zsign.git
cd zsign/build/macos
make clean && make

Linux

Ubuntu / Debian

sudo apt-get install -y git g++ pkg-config libssl-dev
git clone https://github.com/zhlynn/zsign.git
cd zsign/build/linux
make clean && make

RHEL / CentOS / Alma / Rocky

先安装 epel-release

sudo yum -y install epel-release

再构建:

sudo yum install -y git gcc-c++ pkg-config openssl-devel
git clone https://github.com/zhlynn/zsign.git
cd zsign/build/linux
make clean && make

链接系统 minizip/zlib

默认构建会编译 src/third-party/ 内置的 zlib + minizip 源码,无需额外安装包。要求禁止捆绑库的包管理器(如 Homebrew)可以改为链接系统库:

make clean && make SYSTEM_MINIZIP=1    # 链接 minizip(需要 pkg-config 能找到 minizip)
make clean && make SYSTEM_MINIZIP=ng   # 通过兼容层链接 minizip-ng

Windows

使用 Visual Studio 2022 打开 build/windows/vs2022/zsign.sln 进行构建。

使用方法

Usage: zsign [-options] [-k privkey.pem] [-m dev.prov] [-o output.ipa] file|folder

Options:
  -k, --pkey              私钥或 p12 文件路径(PEM 或 DER 格式)
  -m, --prov              描述文件路径(Extensions 场景可多次使用 -m)
  -c, --cert              证书文件路径(PEM 或 DER 格式)
  -a, --adhoc             仅进行 ad-hoc 临时签名
  -d, --debug             输出调试信息到 .zsign_debug 目录
  -f, --force             强制签名,忽略缓存
  -o, --output            输出的 ipa 路径
  -p, --password          私钥或 p12 文件的密码
  -b, --bundle_id         新的 Bundle ID
  -n, --bundle_name       新的 Bundle 显示名称
  -r, --bundle_version    新的 Bundle 版本号
  -e, --entitlements      新的 entitlements 文件
  -z, --zip_level         输出 ipa 的压缩等级(0-9)
  -l, --dylib             注入 dylib(可多次使用)
  -D, --rm_dylib          移除 dylib(可多次使用)
  -w, --weak              以 LC_LOAD_WEAK_DYLIB 方式注入
  -i, --install           签名后通过 ideviceinstaller 安装
  -t, --temp_folder       中间文件的临时目录
  -2, --sha256_only       仅使用 SHA256 Code Directory
  -C, --check             检查证书有效期及 OCSP 状态
  -x, --metadata          导出元数据与图标到指定目录
  -R, --rm_provision      签名后移除描述文件
  -S, --enable_docs       开启 UISupportsDocumentBrowser 与 UIFileSharingEnabled
  -M, --min_version       修改 Info.plist 中的 MinimumOSVersion
  -E, --rm_extensions     移除所有 App Extensions(PlugIns/Extensions)
  -W, --rm_watch          移除 Bundle 中的 Watch App
  -U, --rm_uisd           移除 Info.plist 中的 UISupportedDevices
  -P, --inject_extensions 同时把 -l 指定的 dylib 注入到 App Extensions(PlugIns/Extensions)
  -q, --quiet             安静模式
  -v, --version           显示版本
  -h, --help              显示帮助

示例

查看 Mach-O 与代码签名信息:

zsign demo.app/demo

签名一个 IPA:

zsign -k privkey.pem -m dev.prov -o output.ipa -z 9 demo.ipa

使用 p12 签名(带缓存):

zsign -k dev.p12 -p 123 -m dev.prov -o output.ipa demo.app

使用 p12 强制签名(不使用缓存):

zsign -f -k dev.p12 -p 123 -m dev.prov -o output.ipa demo.app

Ad-hoc 临时签名:

zsign -a -o output.ipa demo.ipa

注入 dylib 并重签:

zsign -k dev.p12 -p 123 -m dev.prov -l demo.dylib -o output.ipa demo.ipa

将 dylib 注入 App 及其扩展:

# App Extensions(PlugIns/*.appex)以独立进程运行,不会继承主 App 注入的 dylib,
# 因此 -P 会把 dylib 也注入到扩展中。dylib 仅在 App 根目录保留一份,扩展通过
# 相对路径引用(@executable_path/../../demo.dylib)。
zsign -k dev.p12 -p 123 -m dev.prov -P -l demo.dylib -o output.ipa demo.ipa

修改 Bundle ID 与名称:

zsign -k dev.p12 -p 123 -m dev.prov -b 'com.new.bundle.id' -n 'NewName' -o output.ipa demo.ipa

向 Mach-O 注入 dylib(LC_LOAD_DYLIB):

zsign -a -l "@executable_path/demo1.dylib" -l "@executable_path/demo2.dylib" demo.app/execute

注入 weak dylib(LC_LOAD_WEAK_DYLIB):

zsign -w -l "@executable_path/demo.dylib" demo.app/execute

导出元数据与图标:

zsign -k dev.p12 -p 123 -m dev.prov -x ./metadata -o output.ipa demo.ipa
# 输出 ./metadata/metadata.json 与 ./metadata/<hash>.png

开启 Files App 集成:

zsign -k dev.p12 -p 123 -m dev.prov -S -o output.ipa demo.ipa

设置最低 iOS 版本:

zsign -k dev.p12 -p 123 -m dev.prov -M 14.0 -o output.ipa demo.ipa

移除所有 App Extensions:

zsign -k dev.p12 -p 123 -m dev.prov -E -o output.ipa demo.ipa

移除 Watch App:

zsign -k dev.p12 -p 123 -m dev.prov -W -o output.ipa demo.ipa

移除 UISupportedDevices:

zsign -k dev.p12 -p 123 -m dev.prov -U -o output.ipa demo.ipa

证书检查 (-C)

检查任意支持类型文件中的签名证书,并向 Apple OCSP 服务器查询吊销状态。对 IPA 内部的 Mach-O 可直接读取,无需解压到磁盘。

支持的文件类型: .ipa.mobileprovision.p12/.pfx.cer/.pem、Mach-O 二进制

# 检查 IPA
zsign -C demo.ipa

# 检查描述文件
zsign -C dev.mobileprovision

# 检查 P12/PFX 证书
zsign -C dev.p12 -p 123

# 检查 Mach-O
zsign -C demo.app/demo

# 签名前验证证书
zsign -C -k dev.p12 -p 123 -m dev.prov -o output.ipa demo.ipa

输出示例:

>>> Check:      demo.ipa (IPA)
>>> Signed:     Yes
>>> Name:       Apple Distribution: Company Name (TEAMID)
>>> Type:       Apple Distribution
>>> Org:        Company Name
>>> Team:       TEAMID
>>> Serial:     XX:XX:XX:XX:XX:XX:XX:XX
>>> Issued:     2025-01-01T00:00:00Z
>>> Expires:    2026-01-01T00:00:00Z (365 days remaining)
>>> Algorithm:  RSA 2048-bit
>>> Issuer:     Apple Worldwide Developer Relations Certification Authority
>>> OCSP:       Valid (ocsp.apple.com)

快速重签名

先将 IPA 解压,再对解压后的目录签名。首次签名时 zsign 会在 .zsign_cache 中缓存签名数据;后续更换证书/描述文件再次签名时会复用缓存,比每次都重新跑 codesign 快得多 — 这是 zsign 的核心优势之一。

常见问题

Q: zsign 是否必须在 macOS 或 Xcode 环境下运行? 不需要。zsign 可直接在 Linux、Windows、macOS、Android、FreeBSD 上运行,不依赖 Xcode 或 Apple 的 codesign

Q: 可以用于 CI/CD 流水线吗? 可以。zsign 是单一可执行文件,天然适合自动化场景,可在 Linux Runner、Docker 镜像、Windows 构建机上运行。

Q: 支持 SHA256-only Code Directory 吗? 支持,使用 -2 / --sha256_only 参数即可。

Q: 相比 Apple 的 codesign 有什么优势? 跨平台运行、支持非 Apple 主机脚本化调用、原生支持 dylib 注入,以及基于缓存的快速重签名。

开源协议

zsign 基于 MIT 协议开源。详见 LICENSE 文件。