opencode-skills-collection 4.0.43 → 4.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +47 -1
- package/bundled-skills/api-rate-limit-handler/SKILL.md +282 -0
- package/bundled-skills/api-security/SKILL.md +205 -0
- package/bundled-skills/api-security/references/jwt-oauth-testing.md +123 -0
- package/bundled-skills/api-security/references/rest-graphql-testing.md +137 -0
- package/bundled-skills/apk-reverse/SKILL.md +438 -0
- package/bundled-skills/apk-reverse/references/android-advanced.md +365 -0
- package/bundled-skills/apk-reverse/references/apk-security-checklist.md +230 -0
- package/bundled-skills/apk-reverse/references/frida-bypass-kit.md +70 -0
- package/bundled-skills/apk-reverse/references/frida-cookbook.md +472 -0
- package/bundled-skills/attack-chain/SKILL.md +185 -0
- package/bundled-skills/attack-chain/references/attack-playbooks.md +126 -0
- package/bundled-skills/attack-chain/references/evasion-cheatsheet.md +133 -0
- package/bundled-skills/attack-chain/references/lifecycle-checklist.md +37 -0
- package/bundled-skills/attack-chain/references/phases.md +490 -0
- package/bundled-skills/binary-diff/SKILL.md +320 -0
- package/bundled-skills/binary-diff/references/prompt-template.md +173 -0
- package/bundled-skills/browser-extension-reverse/SKILL.md +99 -0
- package/bundled-skills/browser-extension-reverse/references/extension-analysis.md +10 -0
- package/bundled-skills/case-review/SKILL.md +167 -0
- package/bundled-skills/cloud-k8s/SKILL.md +124 -0
- package/bundled-skills/cloud-k8s/references/k8s-cloud-checklist.md +16 -0
- package/bundled-skills/code-audit/SKILL.md +92 -0
- package/bundled-skills/code-audit/references/sast-review-checklist.md +10 -0
- package/bundled-skills/database-security/SKILL.md +81 -0
- package/bundled-skills/database-security/references/db-misconfig-checklist.md +9 -0
- package/bundled-skills/diagram-generator/SKILL.md +199 -0
- package/bundled-skills/diagram-generator/references/README.md +3 -0
- package/bundled-skills/diagram-generator/references/diagram-patterns.md +254 -0
- package/bundled-skills/digital-forensics/SKILL.md +93 -0
- package/bundled-skills/digital-forensics/references/forensics-triage.md +10 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/sources/sources.md +9 -0
- package/bundled-skills/docs/users/aas-core.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +3 -3
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/docs-generator/SKILL.md +197 -0
- package/bundled-skills/docs-generator/references/security-report-templates.md +348 -0
- package/bundled-skills/docs-generator/references/templates.md +102 -0
- package/bundled-skills/docs-generator/references/vendor-report-rules.md +263 -0
- package/bundled-skills/dotnet-reverse/SKILL.md +197 -0
- package/bundled-skills/dotnet-reverse/references/common-workflow.md +171 -0
- package/bundled-skills/dotnet-reverse/references/obfuscators.md +145 -0
- package/bundled-skills/dotnet-reverse/references/sharp-tools.md +164 -0
- package/bundled-skills/edr-bypass-re/SKILL.md +248 -0
- package/bundled-skills/edr-bypass-re/references/hook-survey.md +226 -0
- package/bundled-skills/edr-bypass-re/references/telemetry-blinding.md +346 -0
- package/bundled-skills/edr-bypass-re/references/unhook-techniques.md +338 -0
- package/bundled-skills/email-security/SKILL.md +81 -0
- package/bundled-skills/email-security/references/email-auth-checklist.md +8 -0
- package/bundled-skills/firmware-pentest/SKILL.md +381 -0
- package/bundled-skills/firmware-pentest/references/emba-automated-analysis.md +192 -0
- package/bundled-skills/firmware-pentest/references/emulation-and-fuzz.md +337 -0
- package/bundled-skills/firmware-pentest/references/extraction-methodology.md +285 -0
- package/bundled-skills/ghidra-reverse/SKILL.md +98 -0
- package/bundled-skills/ghidra-reverse/references/ghidra-cheatsheet.md +12 -0
- package/bundled-skills/go-rust-reverse/SKILL.md +82 -0
- package/bundled-skills/go-rust-reverse/references/go-rust-notes.md +5 -0
- package/bundled-skills/hardware-security/SKILL.md +80 -0
- package/bundled-skills/hardware-security/references/debug-interface-triage.md +7 -0
- package/bundled-skills/ida-reverse/SKILL.md +401 -0
- package/bundled-skills/ida-reverse/references/LOCAL-SETUP.md +66 -0
- package/bundled-skills/ida-reverse/references/ida-mcp-cheatsheet.md +515 -0
- package/bundled-skills/identity-federation/SKILL.md +81 -0
- package/bundled-skills/identity-federation/references/sso-flow-checklist.md +9 -0
- package/bundled-skills/instructree/SKILL.md +94 -0
- package/bundled-skills/js-reverse/SKILL.md +239 -0
- package/bundled-skills/js-reverse/references/ast-deobfuscation.md +3 -0
- package/bundled-skills/js-reverse/references/automation-entry.md +12 -0
- package/bundled-skills/js-reverse/references/env-patching.md +6 -0
- package/bundled-skills/js-reverse/references/fallbacks.md +8 -0
- package/bundled-skills/js-reverse/references/instrumentation.md +9 -0
- package/bundled-skills/js-reverse/references/local-rebuild.md +11 -0
- package/bundled-skills/js-reverse/references/mcp-task-template.md +30 -0
- package/bundled-skills/js-reverse/references/node-env-rebuild.md +9 -0
- package/bundled-skills/js-reverse/references/output-contract.md +9 -0
- package/bundled-skills/js-reverse/references/task-artifacts.md +11 -0
- package/bundled-skills/js-reverse/references/task-input-template.md +11 -0
- package/bundled-skills/js-reverse/references/tool-defaults.md +7 -0
- package/bundled-skills/llm-security/SKILL.md +160 -0
- package/bundled-skills/llm-security/references/agent-obedience-engineering.md +243 -0
- package/bundled-skills/llm-security/references/agent-security-testing.md +116 -0
- package/bundled-skills/llm-security/references/owasp-llm-top10.md +48 -0
- package/bundled-skills/llm-security/references/prompt-injection-methodology.md +107 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/macos-reverse/SKILL.md +85 -0
- package/bundled-skills/macos-reverse/references/macho-triage.md +10 -0
- package/bundled-skills/malware-analysis/SKILL.md +311 -0
- package/bundled-skills/malware-analysis/references/anti-analysis-techniques.md +205 -0
- package/bundled-skills/malware-analysis/references/sandbox-orchestration.md +204 -0
- package/bundled-skills/malware-analysis/references/yara-sigma-rules.md +232 -0
- package/bundled-skills/mobile-reverse/SKILL.md +222 -0
- package/bundled-skills/mobile-reverse/references/anti-detection-bypass.md +182 -0
- package/bundled-skills/mobile-reverse/references/frida-objection-deep.md +218 -0
- package/bundled-skills/mobile-reverse/references/ios-reverse-guide.md +177 -0
- package/bundled-skills/muapi-media/SKILL.md +311 -0
- package/bundled-skills/ot-ics/SKILL.md +117 -0
- package/bundled-skills/ot-ics/references/ot-safe-assessment.md +10 -0
- package/bundled-skills/patch-diff-exploit/SKILL.md +278 -0
- package/bundled-skills/patch-diff-exploit/references/diff-tools-comparison.md +271 -0
- package/bundled-skills/patch-diff-exploit/references/patch-tuesday-workflow.md +253 -0
- package/bundled-skills/patch-diff-exploit/references/root-cause-and-poc.md +198 -0
- package/bundled-skills/pentest-tools/SKILL.md +346 -0
- package/bundled-skills/pentest-tools/references/ai-pentest-agents.md +148 -0
- package/bundled-skills/pentest-tools/references/ai-pentesting-landscape-2026.md +73 -0
- package/bundled-skills/pentest-tools/references/automation-loop-pattern.md +153 -0
- package/bundled-skills/pentest-tools/references/awesome-pentest-digest.md +175 -0
- package/bundled-skills/pentest-tools/references/burpsuite-mcp-guide.md +769 -0
- package/bundled-skills/pentest-tools/references/client-side-lab-playbook.md +155 -0
- package/bundled-skills/pentest-tools/references/kali-mcp-ecosystem.md +119 -0
- package/bundled-skills/pentest-tools/references/msf-protocol.md +169 -0
- package/bundled-skills/pentest-tools/references/network-attack-defense.md +350 -0
- package/bundled-skills/pentest-tools/references/nuclei-guide-2026.md +157 -0
- package/bundled-skills/pentest-tools/references/payloads.md +32 -0
- package/bundled-skills/pentest-tools/references/pentest-ai-agents-matrix.md +117 -0
- package/bundled-skills/pentest-tools/references/pentest-loop.md +270 -0
- package/bundled-skills/pentest-tools/references/recon-pipeline.md +154 -0
- package/bundled-skills/pentest-tools/references/templates/findings.md +21 -0
- package/bundled-skills/pentest-tools/references/templates/progress.md +17 -0
- package/bundled-skills/pentest-tools/references/templates/rules.md +35 -0
- package/bundled-skills/pentest-tools/references/templates/scope.md +29 -0
- package/bundled-skills/pentest-tools/references/templates/task_plan.md +27 -0
- package/bundled-skills/pentest-tools/references/web-attack-cheatsheet.md +387 -0
- package/bundled-skills/pentest-tools/src-hunter/SKILL.md +243 -0
- package/bundled-skills/pentest-tools/src-hunter/references/README.en.md +115 -0
- package/bundled-skills/pentest-tools/src-hunter/references/README.md +148 -0
- package/bundled-skills/pentest-tools/src-hunter/references/dictionaries/00-index.md +44 -0
- package/bundled-skills/pentest-tools/src-hunter/references/dictionaries/chinese-srcfingerprints.md +515 -0
- package/bundled-skills/pentest-tools/src-hunter/references/dictionaries/default-credentials-cn.md +274 -0
- package/bundled-skills/pentest-tools/src-hunter/references/industry/00-index.md +66 -0
- package/bundled-skills/pentest-tools/src-hunter/references/industry/banking-finance.md +338 -0
- package/bundled-skills/pentest-tools/src-hunter/references/industry/telecom-isp.md +315 -0
- package/bundled-skills/pentest-tools/src-hunter/references/methodology/00-index.md +68 -0
- package/bundled-skills/pentest-tools/src-hunter/references/methodology/01-attack-priority.md +143 -0
- package/bundled-skills/pentest-tools/src-hunter/references/methodology/02-bypass-toolkit.md +357 -0
- package/bundled-skills/pentest-tools/src-hunter/references/methodology/03-evidence-discipline.md +205 -0
- package/bundled-skills/pentest-tools/src-hunter/references/methodology/04-control-gap-hunting.md +238 -0
- package/bundled-skills/pentest-tools/src-hunter/references/methodology/05-srctimebox-priority.md +161 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet/adcs/346/224/273/345/207/273.md +254 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet/exchange/346/224/273/345/207/273.md +254 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet/sharepoint/346/224/273/345/207/273.md +113 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//344/277/241/346/201/257/346/224/266/351/233/206.md +947 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//345/205/215/346/235/200/344/270/216/350/247/204/351/201/277.md +780 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//345/207/255/350/257/201/347/252/203/345/217/226.md +1259 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//345/237/237/346/270/227/351/200/217/346/224/273/345/207/273.md +753 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//346/235/203/351/231/220/346/217/220/345/215/207.md +819 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//346/235/203/351/231/220/347/273/264/346/214/201.md +577 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//346/250/252/345/220/221/347/247/273/345/212/250.md +838 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/intranet//351/232/247/351/201/223/344/273/243/347/220/206.md +604 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/ai/345/256/211/345/205/250.md +698 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/api/345/256/211/345/205/250.md +1935 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/csrf/350/267/250/347/253/231/350/257/267/346/261/202/344/274/252/351/200/240.md +952 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/jwt/345/256/211/345/205/250.md +496 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/lfi-rfi/346/226/207/344/273/266/345/214/205/345/220/253.md +1365 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/rce/350/277/234/347/250/213/344/273/243/347/240/201/346/211/247/350/241/214.md +1329 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/sql-nosql/346/263/250/345/205/245.md +1924 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/ssrf/346/234/215/345/212/241/347/253/257/350/257/267/346/261/202/344/274/252/351/200/240.md +1256 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/ssti/346/250/241/346/235/277/346/263/250/345/205/245.md +1151 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/websocket/345/256/211/345/205/250.md +487 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/xss/350/267/250/347/253/231/350/204/232/346/234/254.md +1465 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web/xxe/345/256/236/344/275/223/346/263/250/345/205/245.md +815 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//344/270/232/345/212/241/351/200/273/350/276/221/346/274/217/346/264/236.md +594 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//344/272/221/345/256/211/345/205/250/346/274/217/346/264/236.md +561 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//344/276/233/345/272/224/351/223/276/346/224/273/345/207/273.md +399 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//345/216/237/345/236/213/351/223/276/346/261/241/346/237/223.md +401 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//345/274/200/346/224/276/351/207/215/345/256/232/345/220/221.md +396 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//346/226/207/344/273/266/346/274/217/346/264/236.md +0 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//346/241/206/346/236/266/346/274/217/346/264/236.md +2304 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//347/202/271/345/207/273/345/212/253/346/214/201.md +339 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//347/274/223/345/255/230/344/270/216cdn/345/256/211/345/205/250.md +497 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//350/256/244/350/257/201/346/274/217/346/264/236.md +1778 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/by-category/web//350/257/267/346/261/202/350/265/260/347/247/201.md +854 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/index.md +69 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools/web/346/270/227/351/200/217.md +662 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools/windows/346/270/227/351/200/217.md +100 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//344/277/241/346/201/257/346/224/266/351/233/206.md +852 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//345/206/205/347/275/221/346/270/227/351/200/217.md +873 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//345/207/255/350/257/201/347/252/203/345/217/226.md +186 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//345/237/237/346/270/227/351/200/217.md +50 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//345/257/206/347/240/201/346/224/273/345/207/273.md +462 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//346/235/203/351/231/220/346/217/220/345/215/207.md +168 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//346/274/217/346/264/236/345/210/251/347/224/250.md +445 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//347/263/273/347/273/237/345/221/275/344/273/244.md +410 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//347/272/242/351/230/237/345/267/245/345/205/267.md +64 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//347/274/226/347/240/201/350/247/243/347/240/201.md +226 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/tools//351/232/247/351/201/223/344/273/243/347/220/206.md +84 -0
- package/bundled-skills/pentest-tools/src-hunter/references/payloader/waf-bypass.md +6504 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/00-index.md +57 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/api-rest.md +2050 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/arbitrary-x-authz.md +481 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/dos.md +615 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/file-upload.md +1365 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/graphql.md +253 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/http-smuggling.md +924 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/info-disclosure.md +432 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/intranet-postexp.md +4845 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/llm-prompt-injection.md +1394 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/logic-flaws.md +1796 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/mobile.md +397 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/oauth-saml-jwt.md +2504 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/path-traversal.md +1297 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/race-conditions.md +207 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/rce.md +4829 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/sqli.md +1620 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/ssrf-cache-host.md +2098 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/unauth-access.md +330 -0
- package/bundled-skills/pentest-tools/src-hunter/references/playbooks/xss.md +1159 -0
- package/bundled-skills/pentest-tools/src-hunter/references/templates/report-submission.md +346 -0
- package/bundled-skills/pentest-tools/src-hunter/references/tools/mcp-jshook.md +174 -0
- package/bundled-skills/protocol-reverse/SKILL.md +108 -0
- package/bundled-skills/protocol-reverse/references/protocol-workflow.md +29 -0
- package/bundled-skills/pwn-chain/SKILL.md +209 -0
- package/bundled-skills/pwn-chain/references/heap-pwn.md +283 -0
- package/bundled-skills/pwn-chain/references/kernel-pwn.md +370 -0
- package/bundled-skills/pwn-chain/references/stack-pwn.md +312 -0
- package/bundled-skills/radare2/SKILL.md +460 -0
- package/bundled-skills/radare2/references/cheatsheet.md +129 -0
- package/bundled-skills/radio-sdr/SKILL.md +77 -0
- package/bundled-skills/radio-sdr/references/sdr-lab-rules.md +6 -0
- package/bundled-skills/reverse-browser-automation/SKILL.md +249 -0
- package/bundled-skills/reverse-browser-automation/references/playwright-cheatsheet.md +425 -0
- package/bundled-skills/reverse-engineering/SKILL.md +213 -0
- package/bundled-skills/reverse-engineering/dsl-vm-reverse/SKILL.md +388 -0
- package/bundled-skills/reverse-engineering/references/ai-assisted-re.md +149 -0
- package/bundled-skills/reverse-engineering/references/anti-analysis.md +836 -0
- package/bundled-skills/reverse-engineering/references/awesome-re-resources.md +135 -0
- package/bundled-skills/reverse-engineering/references/crypto-decode-tools.md +220 -0
- package/bundled-skills/reverse-engineering/references/elf-analysis.md +296 -0
- package/bundled-skills/reverse-engineering/references/field-notes.md +540 -0
- package/bundled-skills/reverse-engineering/references/go-reverse.md +240 -0
- package/bundled-skills/reverse-engineering/references/kernel-driver-reverse.md +298 -0
- package/bundled-skills/reverse-engineering/references/languages-compiled.md +587 -0
- package/bundled-skills/reverse-engineering/references/languages-platforms.md +486 -0
- package/bundled-skills/reverse-engineering/references/languages.md +499 -0
- package/bundled-skills/reverse-engineering/references/nonpe-format-cookbook.md +301 -0
- package/bundled-skills/reverse-engineering/references/ollvm-deobfuscation.md +501 -0
- package/bundled-skills/reverse-engineering/references/patterns-ctf-2.md +397 -0
- package/bundled-skills/reverse-engineering/references/patterns-ctf-3.md +719 -0
- package/bundled-skills/reverse-engineering/references/patterns-ctf.md +532 -0
- package/bundled-skills/reverse-engineering/references/patterns.md +801 -0
- package/bundled-skills/reverse-engineering/references/platforms-hardware.md +304 -0
- package/bundled-skills/reverse-engineering/references/platforms.md +442 -0
- package/bundled-skills/reverse-engineering/references/re-agent-workflow.md +240 -0
- package/bundled-skills/reverse-engineering/references/tools-advanced.md +822 -0
- package/bundled-skills/reverse-engineering/references/tools-dynamic.md +846 -0
- package/bundled-skills/reverse-engineering/references/tools.md +546 -0
- package/bundled-skills/supply-chain-security/SKILL.md +180 -0
- package/bundled-skills/supply-chain-security/references/cicd-pipeline-security.md +137 -0
- package/bundled-skills/supply-chain-security/references/sbom-sca-methodology.md +74 -0
- package/bundled-skills/thick-client/SKILL.md +104 -0
- package/bundled-skills/thick-client/references/thick-client-checklist.md +9 -0
- package/bundled-skills/threat-hunting/SKILL.md +94 -0
- package/bundled-skills/threat-hunting/references/hunting-loop.md +5 -0
- package/bundled-skills/threat-intelligence/SKILL.md +176 -0
- package/bundled-skills/threat-intelligence/references/x-public-intelligence.md +93 -0
- package/bundled-skills/tree-ring-memory/SKILL.md +29 -9
- package/bundled-skills/wifi-wireless/SKILL.md +80 -0
- package/bundled-skills/wifi-wireless/references/wireless-lab-rules.md +6 -0
- package/bundled-skills/windows-ad/SKILL.md +109 -0
- package/bundled-skills/windows-ad/references/ad-attack-paths.md +12 -0
- package/package.json +1 -1
- package/skills_index.json +1214 -2
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Root / 越狱 / 反调试 / SSL Pinning 绕过
|
|
2
|
+
|
|
3
|
+
## 检测层次模型
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
Layer 1: 静态检测(安装时/启动时)
|
|
7
|
+
├─ 包管理器检测(Cydia, apt, Magisk)
|
|
8
|
+
├─ 文件检测(su, busybox, frida-server)
|
|
9
|
+
└─ 权限检测(ro.debuggable, ro.secure)
|
|
10
|
+
|
|
11
|
+
Layer 2: 运行时检测(持续)
|
|
12
|
+
├─ 进程检测(frida-server, magiskd)
|
|
13
|
+
├─ 端口检测(27042 frida default)
|
|
14
|
+
├─ 内存检测(/proc/self/maps 注入痕迹)
|
|
15
|
+
└─ 堆栈检测(Frida 调用帧)
|
|
16
|
+
|
|
17
|
+
Layer 3: 环境检测(按需触发)
|
|
18
|
+
├─ ptrace 检测(TracerPid)
|
|
19
|
+
├─ /proc/self/status 检测
|
|
20
|
+
├─ build.prop 检测(test-keys)
|
|
21
|
+
└─ syscall 直接检测(绕过 libc)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Android Root 检测绕过
|
|
25
|
+
|
|
26
|
+
### 常见检测库及绕过
|
|
27
|
+
|
|
28
|
+
| 检测库 | 检测方法 | 绕过方式 |
|
|
29
|
+
|--------|---------|---------|
|
|
30
|
+
| RootBeer | 8 种检测组合 | Hook 每个检测方法返回 false |
|
|
31
|
+
| SafetyNet | Google Play Services 远程认证 | 使用 Magisk Hide / Shamiko / Play Integrity Fix |
|
|
32
|
+
| Google Play Integrity | 替换 SafetyNet | Trickystore + PIF |
|
|
33
|
+
| 自定义 native 检测 | syscall 读取 /proc/self/status | Hook syscall 或修改 /proc 挂载 |
|
|
34
|
+
|
|
35
|
+
### Frida 综合绕过
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
Java.perform(function() {
|
|
39
|
+
// RootBeer
|
|
40
|
+
var RootBeer = Java.use("com.scottyab.rootbeer.RootBeer");
|
|
41
|
+
var methods = ["isRooted", "isRootedWithBusyBox", "checkSuExists",
|
|
42
|
+
"detectRootManagementApps", "detectPotentiallyDangerousApps",
|
|
43
|
+
"detectTestKeys", "checkForDangerousProps", "checkForRWPaths"];
|
|
44
|
+
methods.forEach(function(m) {
|
|
45
|
+
RootBeer[m].implementation = function() { return false; };
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// 通用 Build.TAGS 检测
|
|
49
|
+
var Build = Java.use("android.os.Build");
|
|
50
|
+
var original = Build.TAGS.value;
|
|
51
|
+
Build.TAGS.value = "release-keys";
|
|
52
|
+
|
|
53
|
+
// PackageManager → 隐藏包名
|
|
54
|
+
var PackageManager = Java.use("android.content.pm.PackageManager");
|
|
55
|
+
PackageManager.getPackageInfo.overload('java.lang.String', 'int').implementation = function(pkg, flags) {
|
|
56
|
+
if (pkg == "de.robv.android.xposed.installer" ||
|
|
57
|
+
pkg.includes("magisk") || pkg.includes("frida")) {
|
|
58
|
+
throw Java.use("android.content.pm.PackageManager$NameNotFoundException").$new();
|
|
59
|
+
}
|
|
60
|
+
return this.getPackageInfo(pkg, flags);
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## iOS 越狱检测绕过
|
|
66
|
+
|
|
67
|
+
### 多层 Frida Hook
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
// 1. 文件系统检测
|
|
71
|
+
var NSFileManager = ObjC.classes.NSFileManager;
|
|
72
|
+
var paths = [
|
|
73
|
+
"/Applications/Cydia.app", "/var/lib/apt", "/bin/bash",
|
|
74
|
+
"/usr/sbin/sshd", "/etc/apt", "/Library/MobileSubstrate"
|
|
75
|
+
];
|
|
76
|
+
// Hook fileExistsAtPath 返回 NO
|
|
77
|
+
|
|
78
|
+
// 2. fork 检测(沙箱内禁止)
|
|
79
|
+
var fork_ptr = Module.findExportByName("libSystem.B.dylib", "fork");
|
|
80
|
+
Interceptor.replace(fork_ptr, new NativeCallback(function() {
|
|
81
|
+
return -1;
|
|
82
|
+
}, 'int', []));
|
|
83
|
+
|
|
84
|
+
// 3. Scheme 检测
|
|
85
|
+
// 通过 MobileSubstrate hook
|
|
86
|
+
var LSApplicationWorkspace = ObjC.classes.LSApplicationWorkspace;
|
|
87
|
+
// Hook defaultWorkspace → canOpenURL → 对 cydia:// 返回 NO
|
|
88
|
+
|
|
89
|
+
// 4. 签名检测
|
|
90
|
+
var MISValidateSignature = Module.findExportByName(null, "MISValidateSignature");
|
|
91
|
+
Interceptor.attach(MISValidateSignature, {
|
|
92
|
+
onLeave: function(retval) { retval.replace(0); }
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 反调试绕过
|
|
97
|
+
|
|
98
|
+
### Android
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
// 1. ptrace 自身 → 防止附加
|
|
102
|
+
// Native: ptrace(PTRACE_TRACEME, 0, NULL, 0)
|
|
103
|
+
// 绕过: Hook ptrace → 返回 0
|
|
104
|
+
|
|
105
|
+
// 2. TracerPid 检测
|
|
106
|
+
// /proc/self/status → TracerPid: 0
|
|
107
|
+
var fopen = Module.findExportByName(null, "fopen");
|
|
108
|
+
Interceptor.attach(fopen, {
|
|
109
|
+
onEnter: function(args) {
|
|
110
|
+
this.path = Memory.readUtf8String(args[0]);
|
|
111
|
+
},
|
|
112
|
+
onLeave: function(retval) {
|
|
113
|
+
if (this.path && this.path.includes("status")) {
|
|
114
|
+
// 修改返回的 FILE*,返回伪造内容
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// 3. isDebuggerConnected (Java)
|
|
120
|
+
var Debug = Java.use("android.os.Debug");
|
|
121
|
+
Debug.isDebuggerConnected.implementation = function() { return false; };
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### iOS
|
|
125
|
+
|
|
126
|
+
```javascript
|
|
127
|
+
// 1. PT_DENY_ATTACH
|
|
128
|
+
// ptrace(PT_DENY_ATTACH, 0, NULL, 0) → 防止调试器附加
|
|
129
|
+
var ptrace = Module.findExportByName(null, "ptrace");
|
|
130
|
+
Interceptor.replace(ptrace, new NativeCallback(function(request, pid, addr, data) {
|
|
131
|
+
if (request == 31) return 0; // PT_DENY_ATTACH → 忽略
|
|
132
|
+
return ptrace(request, pid, addr, data);
|
|
133
|
+
}, 'int', ['int', 'int', 'pointer', 'int']));
|
|
134
|
+
|
|
135
|
+
// 2. sysctl 检测
|
|
136
|
+
var sysctl = Module.findExportByName(null, "sysctl");
|
|
137
|
+
Interceptor.attach(sysctl, {
|
|
138
|
+
onLeave: function(retval) {
|
|
139
|
+
// 修改 kinfo_proc 的 p_flag 字段 → 清除 P_TRACED
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// 3. getppid 检测(检查父进程是否为 launchd)
|
|
144
|
+
// 调试时 getppid() != 1
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## SSL Pinning 绕过
|
|
148
|
+
|
|
149
|
+
### Android 五层绕过
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
层 1 — TrustManager: 接受所有证书
|
|
153
|
+
层 2 — OkHttp CertificatePinner: Hook 清空 pins 列表
|
|
154
|
+
层 3 — WebView SSL Error Handler: 忽略证书错误
|
|
155
|
+
层 4 — Network Security Config: 修改 xml → 信任用户证书
|
|
156
|
+
层 5 — Native SSL (OpenSSL/BoringSSL): Hook SSL_get_verify_result → X509_V_OK
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### iOS 四层绕过
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
层 1 — NSURLSession: Hook SecTrustEvaluate → kSecTrustResultProceed
|
|
163
|
+
层 2 — Alamofire: Hook ServerTrustManager
|
|
164
|
+
层 3 — AFNetworking: Hook AFSecurityPolicy
|
|
165
|
+
层 4 — libcurl: LD_PRELOAD 替换 SSL 验证回调
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 通用 Objection 命令
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Android
|
|
172
|
+
objection -g "com.app" explore
|
|
173
|
+
android sslpinning disable
|
|
174
|
+
# 等价于: 自动 Hook 上述 5 层
|
|
175
|
+
|
|
176
|
+
# iOS
|
|
177
|
+
objection -g "com.app" explore
|
|
178
|
+
ios sslpinning disable
|
|
179
|
+
# 等价于: 自动 Hook 上述 4 层
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Source: OWASP MSTG, Frida CodeShare, objection wiki
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Frida + Objection 深度用法
|
|
2
|
+
|
|
3
|
+
## Frida 核心 API
|
|
4
|
+
|
|
5
|
+
### Java 运行时 (Android)
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
Java.perform(function() {
|
|
9
|
+
// 获取类实例
|
|
10
|
+
var String = Java.use("java.lang.String");
|
|
11
|
+
|
|
12
|
+
// Hook 静态方法
|
|
13
|
+
var System = Java.use("java.lang.System");
|
|
14
|
+
System.getProperty.overload('java.lang.String').implementation = function(key) {
|
|
15
|
+
console.log("System.getProperty: " + key);
|
|
16
|
+
return this.getProperty(key);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// Hook 构造函数
|
|
20
|
+
var File = Java.use("java.io.File");
|
|
21
|
+
File.$init.overload('java.lang.String').implementation = function(path) {
|
|
22
|
+
console.log("File opened: " + path);
|
|
23
|
+
return this.$init(path);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// 枚举已加载类
|
|
27
|
+
Java.enumerateLoadedClasses({
|
|
28
|
+
onMatch: function(className) { console.log(className); },
|
|
29
|
+
onComplete: function() {}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// 修改返回值
|
|
33
|
+
var RootDetector = Java.use("com.app.security.RootDetector");
|
|
34
|
+
RootDetector.isDeviceRooted.implementation = function() {
|
|
35
|
+
return false;
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Native 层 (Android + iOS)
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
// Hook 导出函数
|
|
44
|
+
Interceptor.attach(Module.findExportByName(null, "open"), {
|
|
45
|
+
onEnter: function(args) {
|
|
46
|
+
this.path = Memory.readUtf8String(args[0]);
|
|
47
|
+
},
|
|
48
|
+
onLeave: function(retval) {
|
|
49
|
+
console.log("open(" + this.path + ") = " + retval);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Hook 任意地址(通过偏移)
|
|
54
|
+
var base = Module.findBaseAddress("libnative.so");
|
|
55
|
+
var target = base.add(0x12345);
|
|
56
|
+
Interceptor.attach(target, {
|
|
57
|
+
onEnter: function(args) {
|
|
58
|
+
console.log("Function called from: " + Thread.backtrace(this.context, Backtracer.ACCURATE)
|
|
59
|
+
.map(DebugSymbol.fromAddress).join('\n'));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// 修改返回值
|
|
64
|
+
Interceptor.attach(Module.findExportByName(null, "strcmp"), {
|
|
65
|
+
onLeave: function(retval) {
|
|
66
|
+
if (retval.toInt32() === 0) return; // strings equal, skip
|
|
67
|
+
// Force match
|
|
68
|
+
retval.replace(0);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### ObjC 运行时 (iOS)
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
// Hook ObjC 方法
|
|
77
|
+
var hook = ObjC.classes.ViewController["- viewDidLoad"];
|
|
78
|
+
Interceptor.attach(hook.implementation, {
|
|
79
|
+
onEnter: function(args) {
|
|
80
|
+
console.log("viewDidLoad called");
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// 枚举所有类
|
|
85
|
+
ObjC.enumerateLoadedClasses({
|
|
86
|
+
onMatch: function(className) { console.log(className); },
|
|
87
|
+
onComplete: function() {}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// 调用 ObjC 方法
|
|
91
|
+
var NSString = ObjC.classes.NSString;
|
|
92
|
+
var str = NSString.stringWithString_("Hello from Frida");
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Objection 命令速查
|
|
96
|
+
|
|
97
|
+
### 通用
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
objection -g "com.app" explore # 启动
|
|
101
|
+
objection -g "com.app" explore -q # 静默启动(只注入不等待)
|
|
102
|
+
objection patchapk --source app.apk # 自动注入 Frida Gadget
|
|
103
|
+
objection signapk --source app.apk # 仅签名
|
|
104
|
+
|
|
105
|
+
# 文件系统
|
|
106
|
+
env # 应用数据目录
|
|
107
|
+
ls # 列出文件
|
|
108
|
+
file download /path/to/file # 下载文件
|
|
109
|
+
file upload local.txt /remote/path # 上传文件
|
|
110
|
+
|
|
111
|
+
# SQLite
|
|
112
|
+
sqlite connect /path/to/db.sqlite
|
|
113
|
+
.tables # 列出表
|
|
114
|
+
select * from users; # 查询
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Android 专用
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
android root disable # 绕过 Root 检测
|
|
121
|
+
android sslpinning disable # 绕过 SSL Pinning
|
|
122
|
+
android hooking list classes # 枚举类
|
|
123
|
+
android hooking list class_methods com.app.Main # 枚举方法
|
|
124
|
+
android hooking watch class com.app.Main # Hook 所有方法
|
|
125
|
+
android intent launch_activity com.app.MainActivity # 启动 Activity
|
|
126
|
+
android heap search instances com.app.User # 堆搜索
|
|
127
|
+
android keystore list # Keystore 条目
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### iOS 专用
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
ios jailbreak disable # 绕过越狱检测
|
|
134
|
+
ios sslpinning disable # 绕过 SSL Pinning
|
|
135
|
+
ios keychain dump # 导出 Keychain
|
|
136
|
+
ios nsuserdefaults get # NSUserDefaults
|
|
137
|
+
ios nsurlcache dump # HTTP 缓存
|
|
138
|
+
ios cookies get # 读取 Cookies
|
|
139
|
+
ios pasteboard monitor # 监听剪贴板
|
|
140
|
+
ios ui dump # UI 层次结构
|
|
141
|
+
ios plist cat Info.plist # 读取 plist
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## 免 Root/越狱部署
|
|
145
|
+
|
|
146
|
+
### Android — Frida Gadget 注入
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# 1. 解包 APK
|
|
150
|
+
apktool d app.apk -o app_unpacked
|
|
151
|
+
|
|
152
|
+
# 2. 下载 frida-gadget 并放入 lib 目录
|
|
153
|
+
cp frida-gadget-17.x.x-android-arm64.so \
|
|
154
|
+
app_unpacked/lib/arm64-v8a/libfrida-gadget.so
|
|
155
|
+
|
|
156
|
+
# 3. 在 smali 中注入 System.loadLibrary("frida-gadget")
|
|
157
|
+
# 修改主 Activity 的 onCreate 或 attachBaseContext
|
|
158
|
+
|
|
159
|
+
# 4. 重建并签名
|
|
160
|
+
apktool b app_unpacked -o app_patched.apk
|
|
161
|
+
uber-apk-signer -a app_patched.apk
|
|
162
|
+
|
|
163
|
+
# 5. Objection 自动化
|
|
164
|
+
objection patchapk --source app.apk --skip-resources
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### iOS — Frida Gadget 注入
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# 1. 解密 App Store IPA
|
|
171
|
+
python3 frida-ios-dump.py -u -p com.app.target
|
|
172
|
+
|
|
173
|
+
# 2. 注入 FridaGadget.dylib
|
|
174
|
+
# 修改 Mach-O Load Commands,添加 @executable_path/FridaGadget.dylib
|
|
175
|
+
|
|
176
|
+
# 3. 重签名
|
|
177
|
+
codesign -f -s "Apple Development" Payload/App.app
|
|
178
|
+
|
|
179
|
+
# 4. 通过 Xcode sideload 或 AltStore 安装
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## SSL Pinning 绕过进阶
|
|
183
|
+
|
|
184
|
+
### 多层绕过(Android)
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
// 1. OkHttp CertificatePinner
|
|
188
|
+
var CertificatePinner = Java.use("okhttp3.CertificatePinner");
|
|
189
|
+
CertificatePinner.check.overload('java.lang.String', 'java.util.List').implementation = function() {};
|
|
190
|
+
|
|
191
|
+
// 2. TrustManager 自定义
|
|
192
|
+
var TrustManagerImpl = Java.use("com.android.org.conscrypt.TrustManagerImpl");
|
|
193
|
+
TrustManagerImpl.verifyChain.implementation = function() { return []; };
|
|
194
|
+
|
|
195
|
+
// 3. WebView SSL Error
|
|
196
|
+
var SslErrorHandler = Java.use("android.webkit.SslErrorHandler");
|
|
197
|
+
SslErrorHandler.proceed.implementation = function() { return this.proceed(); };
|
|
198
|
+
|
|
199
|
+
// 4. Network Security Config
|
|
200
|
+
// 需要修改 AndroidManifest.xml → android:networkSecurityConfig="@xml/network_security_config"
|
|
201
|
+
// xml 中添加信任用户证书
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 多层绕过(iOS)
|
|
205
|
+
|
|
206
|
+
```javascript
|
|
207
|
+
// 1. NSURLSession
|
|
208
|
+
var SecTrustEvaluate = Module.findExportByName("Security", "SecTrustEvaluate");
|
|
209
|
+
Interceptor.replace(SecTrustEvaluate, new NativeCallback(function(trust, result) {
|
|
210
|
+
Memory.writeU32(result, 1); // kSecTrustResultProceed = 1
|
|
211
|
+
return 0; // errSecSuccess
|
|
212
|
+
}, 'int', ['pointer', 'pointer']));
|
|
213
|
+
|
|
214
|
+
// 2. Alamofire
|
|
215
|
+
// Hook ServerTrustManager.evaluate → 始终返回 success
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Source: Frida docs, Objection wiki, OWASP MSTG
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# iOS 逆向工程专项
|
|
2
|
+
|
|
3
|
+
## IPA 获取与解密
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# 从 App Store 下载
|
|
7
|
+
ipatool search "Target App"
|
|
8
|
+
ipatool purchase -b com.target.app
|
|
9
|
+
ipatool download -b com.target.app -o app.ipa
|
|
10
|
+
|
|
11
|
+
# 从设备提取已安装应用
|
|
12
|
+
# 越狱设备
|
|
13
|
+
scp root@device:/private/var/containers/Bundle/Application/*/Target.app .
|
|
14
|
+
|
|
15
|
+
# 解密(App Store 二进制为加密 FAT 格式)
|
|
16
|
+
# frida-ios-dump(推荐)
|
|
17
|
+
python3 dump.py com.target.app -o decrypted.ipa
|
|
18
|
+
|
|
19
|
+
# Clutch
|
|
20
|
+
Clutch -i # 列出已安装
|
|
21
|
+
Clutch -d 1 # 解密第 1 个
|
|
22
|
+
|
|
23
|
+
# dumpdecrypted
|
|
24
|
+
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /path/to/App
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Mach-O 分析
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 基本信息
|
|
31
|
+
otool -l TargetBinary | grep crypt # 加密状态
|
|
32
|
+
otool -L TargetBinary # 动态库依赖
|
|
33
|
+
otool -hv TargetBinary # 头部信息
|
|
34
|
+
jtool2 --pages TargetBinary # 内存页信息
|
|
35
|
+
|
|
36
|
+
# Fat Binary 瘦身
|
|
37
|
+
lipo -info TargetBinary
|
|
38
|
+
lipo TargetBinary -thin arm64 -output TargetBinary_arm64
|
|
39
|
+
|
|
40
|
+
# 符号分析
|
|
41
|
+
nm -g TargetBinary # 导出符号
|
|
42
|
+
nm -a TargetBinary # 全部符号
|
|
43
|
+
swift-demangle <mangled_name> # Swift 符号还原
|
|
44
|
+
|
|
45
|
+
# class-dump
|
|
46
|
+
class-dump -H TargetBinary -o headers/
|
|
47
|
+
# 导出 ObjC 类及方法声明到 headers/ 目录
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Objective-C 运行时分析
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
消息传递机制:
|
|
54
|
+
objc_msgSend(id self, SEL op, ...) → 动态方法派发
|
|
55
|
+
↓
|
|
56
|
+
运行时查找:
|
|
57
|
+
1. 类方法列表 cache
|
|
58
|
+
2. 类方法列表
|
|
59
|
+
3. 逐级父类查找
|
|
60
|
+
4. +resolveInstanceMethod / +resolveClassMethod
|
|
61
|
+
5. forwardingTargetForSelector
|
|
62
|
+
6. methodSignatureForSelector + forwardInvocation
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Frida ObjC Hook
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
// Hook 实例方法
|
|
69
|
+
var hook = ObjC.classes.ClassName["- instanceMethod:"];
|
|
70
|
+
Interceptor.attach(hook.implementation, {
|
|
71
|
+
onEnter: function(args) {
|
|
72
|
+
// args[0] = self, args[1] = selector, args[2+] = method args
|
|
73
|
+
console.log("self: " + new ObjC.Object(args[0]));
|
|
74
|
+
console.log("arg: " + args[2].toInt32());
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Hook 类方法
|
|
79
|
+
var hook = ObjC.classes.ClassName["+ classMethod:"];
|
|
80
|
+
Interceptor.attach(hook.implementation, { ... });
|
|
81
|
+
|
|
82
|
+
// 调用 ObjC 方法
|
|
83
|
+
var NSString = ObjC.classes.NSString;
|
|
84
|
+
var str = NSString.stringWithString_("test");
|
|
85
|
+
console.log(str.UTF8String());
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Swift 逆向
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
Swift 名称修饰(Name Mangling):
|
|
92
|
+
$s10ModuleName5ClassC6method3argSi_tF
|
|
93
|
+
│ │ │ │ │ │ │ └─ 参数类型
|
|
94
|
+
│ │ │ │ │ │ └───── 返回类型
|
|
95
|
+
│ │ │ │ │ └──────── 参数名
|
|
96
|
+
│ │ │ │ └─────────────── 方法名
|
|
97
|
+
│ │ │ └──────────────── 类名(长度+名称)
|
|
98
|
+
│ │ └────────────────────── 模块名
|
|
99
|
+
│ └──────────────────────────────── 标识符标识
|
|
100
|
+
└────────────────────────────────── 全局标识
|
|
101
|
+
|
|
102
|
+
工具: swift-demangle, Hopper (自动还原)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 越狱检测绕过
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
检测方法分类:
|
|
109
|
+
|
|
110
|
+
1. 文件系统检查:
|
|
111
|
+
□ /Applications/Cydia.app
|
|
112
|
+
□ /var/lib/apt/
|
|
113
|
+
□ /bin/bash
|
|
114
|
+
□ /usr/sbin/sshd
|
|
115
|
+
→ Hook NSFileManager.fileExistsAtPath:
|
|
116
|
+
|
|
117
|
+
2. 沙箱逃逸检测:
|
|
118
|
+
□ fork() 是否成功(沙箱内禁止)
|
|
119
|
+
□ system() 调用
|
|
120
|
+
→ Hook fork → 返回 -1
|
|
121
|
+
|
|
122
|
+
3. Dyld 注入检测:
|
|
123
|
+
□ _dyld_get_image_count > 限制值
|
|
124
|
+
→ 限制返回值在合理范围
|
|
125
|
+
|
|
126
|
+
4. Scheme 检测:
|
|
127
|
+
□ cydia:// URL Scheme
|
|
128
|
+
→ Hook UIApplication.canOpenURL:
|
|
129
|
+
|
|
130
|
+
5. sysctl 检测:
|
|
131
|
+
□ CTL_KERN/KERN_PROC/KERN_PROC_PID → kinfo_proc
|
|
132
|
+
→ Hook sysctl → 清空 p_flag P_TRACED 位
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Frida 统一绕过脚本
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
// 文件检测绕过
|
|
139
|
+
var NSFileManager = ObjC.classes.NSFileManager;
|
|
140
|
+
var defaultManager = NSFileManager.defaultManager();
|
|
141
|
+
Interceptor.attach(defaultManager["- fileExistsAtPath:"].implementation, {
|
|
142
|
+
onLeave: function(retval) {
|
|
143
|
+
var path = ObjC.Object(args[2]).toString();
|
|
144
|
+
if (path.includes("Cydia") || path.includes("apt") ||
|
|
145
|
+
path.includes("sshd") || path.includes("bash")) {
|
|
146
|
+
retval.replace(0); // false
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// fork 绕过
|
|
152
|
+
Interceptor.replace(Module.findExportByName(null, "fork"),
|
|
153
|
+
new NativeCallback(function() { return -1; }, 'int', []));
|
|
154
|
+
|
|
155
|
+
// dyld 绕过
|
|
156
|
+
var _dyld_get_image_count = Module.findExportByName(null, "_dyld_get_image_count");
|
|
157
|
+
Interceptor.attach(_dyld_get_image_count, {
|
|
158
|
+
onLeave: function(retval) {
|
|
159
|
+
if (retval.toInt32() > 200) retval.replace(200);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 关键防护绕过清单
|
|
165
|
+
|
|
166
|
+
| 防护 | iOS 绕过方法 |
|
|
167
|
+
|------|-------------|
|
|
168
|
+
| App Store 加密 | frida-ios-dump / Clutch |
|
|
169
|
+
| SSL Pinning | Objection `ios sslpinning disable` / SSL Kill Switch 2 |
|
|
170
|
+
| 越狱检测 | Objection `ios jailbreak disable` / 自定义 Frida Hook |
|
|
171
|
+
| 反调试 (PT_DENY_ATTACH) | Frida 启动后注入 / debugserver |
|
|
172
|
+
| 完整性校验 | Hook MAC 检查 / 代码签名验证 |
|
|
173
|
+
| 反注入 | 修改 Mach-O 去除 __RESTRICT 段 |
|
|
174
|
+
| Swift 混淆 | swift-demangle + LLM 辅助语义恢复 |
|
|
175
|
+
| 屏幕截图防护 | Hook UIScreen.mainScreen.snapshotViewAfterScreenUpdates |
|
|
176
|
+
|
|
177
|
+
Source: OWASP MSTG, frida-ios-dump, The iPhone Wiki
|