Happy App Audit

Auditeur statique de télémétrie d'applications macOS .app : identifie les SDK intégrés, les endpoints, les données sur disque

par iamzhihuix · iamzhihuix/happy-claude-skills

Testé · Fonctionne ★ 8.8/10

Happy App Audit — Auditeur statique de télémétrie d'applications macOS .app : identifie les SDK intégrés, les endpoints, les données sur disque

Ce que fait

Audite statiquement un bundle macOS .app installé pour signaler la télémétrie qu'il collecte, les endpoints de téléchargement auxquels il est mappé, et ce qu'il laisse sur le disque, en utilisant uniquement des outils en lecture seule (strings, otool, plutil, codesign, sqlite3 .schema) sans requêtes réseau ni attachement de débogueur. Identifie les SDK intégrés (ByteDance AppLog/Parfait/TTNet, Tencent mars/MMKV/Bugly, Sentry, Firebase, Umeng, etc.), classe les chaînes extraites en urls/domains/sql/events, et rend un rapport markdown. Se déclenche lorsque l'utilisateur demande d'auditer, d'enquêter ou de faire de la rétro-ingénierie d'une application macOS pour la télémétrie, le téléchargement de données, la confidentialité ou la détection de SDK contre des chemins comme /Applications ou /Library/Input Methods.

Rapport de test

Dépôt cloné (bun 1.3.14 présent, macOS) et scripts/run.ts exécuté de bout en bout contre /Applications/Kimi.app et /Applications/Discord.app avec --out vers un répertoire temporaire. Il a produit meta.json, des fichiers strings/*.{urls,domains,sql,events}.md classés, matched.md, local_data.md et un rapport.md de 138 lignes ; pour Kimi, il a énuméré 4 frameworks intégrés avec leurs tailles, classé 1382 URL du binaire Electron Framework, et vidé le .schema SQLite de Cache.db sans lire les lignes. La base (mon propre plutil/otool/strings|grep ad-hoc, 25 lignes) : otool -L n'a fait apparaître que Electron Framework + libSystem et `strings MacOS/Kimi | grep` a renvoyé zéro domaines car le lanceur est mince — la compétence a trouvé la vraie surface de télémétrie que la base avait manquée. La correspondance d'empreintes digitales a renvoyé 0 confirmé pour les deux (négatif honnête — la DB cible des bundles IME natifs ByteDance/Tencent, pas des applications Electron/JS-asar), et lib/shell.ts applique une liste blanche de commandes en lecture seule ; aucun curl|sh, base64, eval, ou chemins machine codés en dur trouvés.

Testé le: 2026-07-31 · Claude Code 2.x (agent harness)

Installation

git clone --depth 1 https://github.com/iamzhihuix/happy-claude-skills.git /tmp/happy-app-audit-src
mkdir -p ~/.claude/skills
cp -R /tmp/happy-app-audit-src/skills/happy-app-audit ~/.claude/skills/happy-app-audit
# Requires bun in PATH (falls back to `npx -y bun`). macOS only (uses otool/codesign/plutil).
# Run a full audit (writes report + audit trail):
#   bun ~/.claude/skills/happy-app-audit/scripts/run.ts /Applications/Foo.app --out ~/app-audit
# Optional --card renders a 4:5 share image and needs the separate baoyu-imagine skill;
# without it the skill still writes card_prompt.md and prints an install hint.

Commandes et exemples de prompts

  • /happy-app-auditAuditeur statique de télémétrie d'applications macOS .app : identifie les SDK intégrés, les endpoints, les données sur disque

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • Audit this app for hidden telemetry SDKs
  • Find what data this macOS app uploads
  • Reverse-engineer this app's tracking endpoints