opencode-skills-collection 4.0.42 → 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 +49 -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/lore/SKILL.md +104 -298
- package/bundled-skills/lore/references/audit-template.md +21 -4
- package/bundled-skills/lore/references/compatibility.md +51 -121
- package/bundled-skills/lore/references/config.md +22 -23
- package/bundled-skills/lore/references/entry-format.md +33 -3
- package/bundled-skills/lore/references/history-command.md +98 -2
- package/bundled-skills/lore/references/platform-mirrors.md +45 -16
- package/bundled-skills/lore/references/stale-new-markers.md +10 -8
- package/bundled-skills/lore/references/summary-template.md +8 -1
- package/bundled-skills/lore/references/workflows.md +192 -0
- package/bundled-skills/lore/scripts/README.md +14 -13
- package/bundled-skills/lore/scripts/README.zh-CN.md +14 -13
- package/bundled-skills/lore/scripts/find_duplicates.py +14 -4
- package/bundled-skills/lore/scripts/find_stale.py +68 -16
- package/bundled-skills/lore/scripts/history.py +235 -23
- package/bundled-skills/lore/scripts/id_hash.py +7 -4
- package/bundled-skills/lore/scripts/list_entries.py +82 -13
- 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/poka-yoke/SKILL.md +172 -0
- package/bundled-skills/project-state-governor/SKILL.md +1 -1
- package/bundled-skills/project-state-governor/references/project-state-schema.md +1 -1
- 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/spec-driven-loop/SKILL.md +203 -0
- package/bundled-skills/spec-driven-loop/references/agent-and-judge-contracts.md +120 -0
- package/bundled-skills/spec-driven-loop/references/document-templates.md +184 -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 +1281 -3
- package/bundled-skills/lore/README.md +0 -386
- package/bundled-skills/lore/README.zh-CN.md +0 -386
- package/bundled-skills/lore/WORKFLOWS.md +0 -216
- package/bundled-skills/lore/WORKFLOWS.zh-CN.md +0 -216
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
# Android 高级逆向参考
|
|
2
|
+
|
|
3
|
+
> 覆盖 Native SO 分析、Frida 高级用法、SSL Pinning 绕过、Root 检测对抗、加固脱壳、Flutter/React Native 逆向。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Native SO 逆向
|
|
8
|
+
|
|
9
|
+
### 分析流程
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
1. 从 APK 中提取 .so 文件
|
|
13
|
+
unzip app.apk lib/arm64-v8a/*.so -d extracted/
|
|
14
|
+
|
|
15
|
+
2. 确认架构和基本信息
|
|
16
|
+
file libxxx.so
|
|
17
|
+
rabin2 -I libxxx.so
|
|
18
|
+
|
|
19
|
+
3. 找 JNI 入口
|
|
20
|
+
- 搜索 JNI_OnLoad(动态注册)
|
|
21
|
+
- 搜索 Java_com_xxx_yyy(静态注册)
|
|
22
|
+
- nm -D libxxx.so | grep -i java
|
|
23
|
+
|
|
24
|
+
4. IDA/Ghidra 加载分析
|
|
25
|
+
- 导入 JNI 头文件(jni.h 类型)
|
|
26
|
+
- 标注 JNIEnv* 参数
|
|
27
|
+
- 找 RegisterNatives 调用(动态注册的函数表)
|
|
28
|
+
|
|
29
|
+
5. 定位关键逻辑
|
|
30
|
+
- 从 Java 层 native 方法名追踪
|
|
31
|
+
- 从字符串(密钥、URL、错误信息)交叉引用
|
|
32
|
+
- 从 crypto 库函数(AES/MD5/SHA)调用追踪
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### JNI 函数注册
|
|
36
|
+
|
|
37
|
+
```c
|
|
38
|
+
// 静态注册:函数名 = Java_包名_类名_方法名
|
|
39
|
+
JNIEXPORT jstring JNICALL Java_com_example_app_Security_getSign(
|
|
40
|
+
JNIEnv *env, jobject thiz, jstring input) { ... }
|
|
41
|
+
|
|
42
|
+
// 动态注册:在 JNI_OnLoad 中调用 RegisterNatives
|
|
43
|
+
static JNINativeMethod methods[] = {
|
|
44
|
+
{"getSign", "(Ljava/lang/String;)Ljava/lang/String;", (void*)native_getSign},
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|
48
|
+
JNIEnv *env;
|
|
49
|
+
vm->GetEnv((void**)&env, JNI_VERSION_1_6);
|
|
50
|
+
jclass clazz = env->FindClass("com/example/app/Security");
|
|
51
|
+
env->RegisterNatives(clazz, methods, sizeof(methods)/sizeof(methods[0]));
|
|
52
|
+
return JNI_VERSION_1_6;
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### IDA 中分析 JNI 的技巧
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
1. 导入 JNI 类型库
|
|
60
|
+
File → Load File → Parse C Header → jni.h
|
|
61
|
+
|
|
62
|
+
2. 标注第一个参数为 JNIEnv*
|
|
63
|
+
右键参数 → Set type → JNIEnv*
|
|
64
|
+
这样 env->FindClass / env->GetMethodID 等调用会自动识别
|
|
65
|
+
|
|
66
|
+
3. 找 RegisterNatives
|
|
67
|
+
搜索对 JNIEnv vtable offset 0x35C (ARM64) 的调用
|
|
68
|
+
→ 第三个参数是 JNINativeMethod 数组
|
|
69
|
+
→ 从数组中提取所有 native 函数地址
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Frida 高级用法
|
|
75
|
+
|
|
76
|
+
### Hook Native 函数
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
// Hook libc 函数
|
|
80
|
+
Interceptor.attach(Module.findExportByName("libc.so", "open"), {
|
|
81
|
+
onEnter: function(args) {
|
|
82
|
+
this.path = args[0].readUtf8String();
|
|
83
|
+
console.log("[open] " + this.path);
|
|
84
|
+
},
|
|
85
|
+
onLeave: function(retval) {
|
|
86
|
+
if (this.path.includes("su") || this.path.includes("magisk")) {
|
|
87
|
+
console.log("[open] Blocked root check: " + this.path);
|
|
88
|
+
retval.replace(-1); // 返回失败
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// Hook 自定义 SO 中的函数
|
|
94
|
+
var base = Module.findBaseAddress("libsecurity.so");
|
|
95
|
+
var targetFunc = base.add(0x1234); // 偏移地址
|
|
96
|
+
Interceptor.attach(targetFunc, {
|
|
97
|
+
onEnter: function(args) {
|
|
98
|
+
console.log("arg0: " + args[0].readUtf8String());
|
|
99
|
+
},
|
|
100
|
+
onLeave: function(retval) {
|
|
101
|
+
console.log("return: " + retval.readUtf8String());
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Hook Java 方法
|
|
107
|
+
|
|
108
|
+
```javascript
|
|
109
|
+
Java.perform(function() {
|
|
110
|
+
// Hook 实例方法
|
|
111
|
+
var Security = Java.use("com.example.app.Security");
|
|
112
|
+
Security.getSign.implementation = function(input) {
|
|
113
|
+
console.log("[getSign] input: " + input);
|
|
114
|
+
var result = this.getSign(input); // 调用原方法
|
|
115
|
+
console.log("[getSign] output: " + result);
|
|
116
|
+
return result;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Hook 构造函数
|
|
120
|
+
Security.$init.overload('java.lang.String').implementation = function(key) {
|
|
121
|
+
console.log("[Security.<init>] key: " + key);
|
|
122
|
+
this.$init(key);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// Hook 重载方法
|
|
126
|
+
Security.encrypt.overload('java.lang.String', 'int').implementation = function(data, mode) {
|
|
127
|
+
console.log("[encrypt] data=" + data + " mode=" + mode);
|
|
128
|
+
return this.encrypt(data, mode);
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 内存搜索与修改
|
|
134
|
+
|
|
135
|
+
```javascript
|
|
136
|
+
// 搜索内存中的字符串
|
|
137
|
+
Process.enumerateModules().forEach(function(module) {
|
|
138
|
+
if (module.name === "libtarget.so") {
|
|
139
|
+
Memory.scan(module.base, module.size, "48 65 6C 6C 6F", { // "Hello"
|
|
140
|
+
onMatch: function(address, size) {
|
|
141
|
+
console.log("Found at: " + address);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// 修改内存(patch 指令)
|
|
148
|
+
var addr = Module.findBaseAddress("libsecurity.so").add(0x5678);
|
|
149
|
+
Memory.patchCode(addr, 4, function(code) {
|
|
150
|
+
var writer = new Arm64Writer(code, {pc: addr});
|
|
151
|
+
writer.putNop(); // 替换为 NOP
|
|
152
|
+
writer.flush();
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## SSL Pinning 绕过
|
|
159
|
+
|
|
160
|
+
### 通用方案(推荐)
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
// Frida 通用 SSL Pinning 绕过
|
|
164
|
+
// 来源: https://github.com/0xCD4/SSL-bypass
|
|
165
|
+
Java.perform(function() {
|
|
166
|
+
// 1. TrustManager 绕过
|
|
167
|
+
var TrustManager = Java.registerClass({
|
|
168
|
+
name: 'com.custom.TrustManager',
|
|
169
|
+
implements: [Java.use('javax.net.ssl.X509TrustManager')],
|
|
170
|
+
methods: {
|
|
171
|
+
checkClientTrusted: function(chain, authType) {},
|
|
172
|
+
checkServerTrusted: function(chain, authType) {},
|
|
173
|
+
getAcceptedIssuers: function() { return []; }
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// 2. SSLContext 替换
|
|
178
|
+
var SSLContext = Java.use('javax.net.ssl.SSLContext');
|
|
179
|
+
var sslContext = SSLContext.getInstance("TLS");
|
|
180
|
+
sslContext.init(null, [TrustManager.$new()], null);
|
|
181
|
+
|
|
182
|
+
// 3. OkHttp CertificatePinner 绕过
|
|
183
|
+
try {
|
|
184
|
+
var CertificatePinner = Java.use('okhttp3.CertificatePinner');
|
|
185
|
+
CertificatePinner.check.overload('java.lang.String', 'java.util.List').implementation = function() {};
|
|
186
|
+
} catch(e) {}
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 各框架绕过
|
|
191
|
+
|
|
192
|
+
| 框架 | 绕过方法 |
|
|
193
|
+
|------|---------|
|
|
194
|
+
| OkHttp3 | Hook `CertificatePinner.check` 返回空 |
|
|
195
|
+
| Retrofit | 同 OkHttp(底层用 OkHttp) |
|
|
196
|
+
| Volley | Hook `HurlStack` 的 SSL 工厂 |
|
|
197
|
+
| Flutter | Hook `dart:io` 的 `SecurityContext`(需要特殊脚本) |
|
|
198
|
+
| React Native | Hook `OkHttpClientProvider` |
|
|
199
|
+
| WebView | Hook `WebViewClient.onReceivedSslError` |
|
|
200
|
+
|
|
201
|
+
### Flutter 专项
|
|
202
|
+
|
|
203
|
+
```javascript
|
|
204
|
+
// Flutter SSL Pinning 绕过(需要找到 ssl_verify_peer_cert 函数)
|
|
205
|
+
var flutter_lib = Module.findBaseAddress("libflutter.so");
|
|
206
|
+
// 搜索 ssl_verify_peer_cert 的特征码
|
|
207
|
+
var pattern = "FF 03 05 D1 FD 7B 0F A9"; // ARM64 特征
|
|
208
|
+
Memory.scan(flutter_lib, Module.findModuleByName("libflutter.so").size, pattern, {
|
|
209
|
+
onMatch: function(address) {
|
|
210
|
+
Interceptor.replace(address, new NativeCallback(function() {
|
|
211
|
+
return 0; // 返回成功
|
|
212
|
+
}, 'int', []));
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Root 检测绕过
|
|
220
|
+
|
|
221
|
+
### 常见检测方式
|
|
222
|
+
|
|
223
|
+
| 检测方式 | 绕过方法 |
|
|
224
|
+
|---------|---------|
|
|
225
|
+
| 检查 `/system/app/Superuser.apk` | Hook `File.exists()` 返回 false |
|
|
226
|
+
| 检查 `su` 命令 | Hook `Runtime.exec()` 拦截 su 调用 |
|
|
227
|
+
| 检查 `/proc/self/mounts` | Hook 文件读取,过滤 magisk 相关 |
|
|
228
|
+
| SafetyNet/Play Integrity | Magisk Hide / Zygisk + Shamiko |
|
|
229
|
+
| 检查 Magisk 包名 | 随机化 Magisk 包名 |
|
|
230
|
+
| 检查 `/data/adb/` | Hook `opendir`/`access` |
|
|
231
|
+
|
|
232
|
+
### Frida 通用 Root 绕过
|
|
233
|
+
|
|
234
|
+
```javascript
|
|
235
|
+
Java.perform(function() {
|
|
236
|
+
// Hook File.exists
|
|
237
|
+
var File = Java.use("java.io.File");
|
|
238
|
+
File.exists.implementation = function() {
|
|
239
|
+
var path = this.getAbsolutePath();
|
|
240
|
+
var blacklist = ["su", "Superuser", "magisk", "busybox", "xposed"];
|
|
241
|
+
for (var i = 0; i < blacklist.length; i++) {
|
|
242
|
+
if (path.toLowerCase().includes(blacklist[i])) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return this.exists();
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
// Hook System.getProperty
|
|
250
|
+
var System = Java.use("java.lang.System");
|
|
251
|
+
System.getProperty.overload('java.lang.String').implementation = function(key) {
|
|
252
|
+
if (key === "ro.debuggable" || key === "ro.secure") {
|
|
253
|
+
return "1";
|
|
254
|
+
}
|
|
255
|
+
return this.getProperty(key);
|
|
256
|
+
};
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 加固/壳识别与脱壳
|
|
263
|
+
|
|
264
|
+
### 常见加固厂商
|
|
265
|
+
|
|
266
|
+
| 加固 | 识别特征 | 脱壳方式 |
|
|
267
|
+
|------|---------|---------|
|
|
268
|
+
| 360 加固 | `libjiagu.so`、`com.stub.StubApp` | FART / Frida dump dex |
|
|
269
|
+
| 腾讯乐固 | `libshell*.so`、`com.tencent.StubShell` | FART / BlackDex |
|
|
270
|
+
| 梆梆加固 | `libDexHelper.so`、`com.secneo.apkwrapper` | FART |
|
|
271
|
+
| 爱加密 | `libexec.so`、`s.h.e.l.l` | Frida dump |
|
|
272
|
+
| 网易易盾 | `libnesec.so` | Frida dump |
|
|
273
|
+
| 娜迦 | `libnaga.so` | Frida dump |
|
|
274
|
+
|
|
275
|
+
### 通用脱壳方法
|
|
276
|
+
|
|
277
|
+
```text
|
|
278
|
+
方法 1: FART(ART 环境脱壳)
|
|
279
|
+
- 刷入 FART ROM 或使用 Frida 版 FART
|
|
280
|
+
- 自动 dump 所有 ClassLoader 加载的 dex
|
|
281
|
+
|
|
282
|
+
方法 2: Frida DEX Dump
|
|
283
|
+
- frida -U -f com.target.app -l dex_dump.js
|
|
284
|
+
- 在 DexFile::OpenMemory 处 hook,dump 内存中的 dex
|
|
285
|
+
|
|
286
|
+
方法 3: BlackDex
|
|
287
|
+
- 免 root 脱壳工具
|
|
288
|
+
- 直接安装 BlackDex APK,选择目标应用脱壳
|
|
289
|
+
|
|
290
|
+
方法 4: 手动 dump
|
|
291
|
+
- 用 Frida 枚举所有 ClassLoader
|
|
292
|
+
- 找到应用的 ClassLoader → 获取 DexFile 对象
|
|
293
|
+
- 读取 dex 内存区域并保存
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Frida DEX Dump 脚本
|
|
297
|
+
|
|
298
|
+
```javascript
|
|
299
|
+
Java.perform(function() {
|
|
300
|
+
Java.enumerateClassLoaders({
|
|
301
|
+
onMatch: function(loader) {
|
|
302
|
+
try {
|
|
303
|
+
var dexFiles = loader.getDexFileList();
|
|
304
|
+
console.log("ClassLoader: " + loader);
|
|
305
|
+
console.log(" DEX files: " + dexFiles);
|
|
306
|
+
} catch(e) {}
|
|
307
|
+
},
|
|
308
|
+
onComplete: function() {}
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## React Native / Flutter 逆向
|
|
316
|
+
|
|
317
|
+
### React Native
|
|
318
|
+
|
|
319
|
+
```text
|
|
320
|
+
1. 解压 APK → assets/index.android.bundle(JS 代码)
|
|
321
|
+
2. 格式化 JS → 搜索 API 地址、密钥、签名逻辑
|
|
322
|
+
3. 如果有 Hermes 字节码(.hbc 文件)→ 用 hermes-dec 反编译
|
|
323
|
+
4. Hook: 用 Frida hook Java 层的 ReactBridge
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Flutter
|
|
327
|
+
|
|
328
|
+
```text
|
|
329
|
+
1. Flutter 代码编译为 libapp.so(Dart AOT)
|
|
330
|
+
2. 无法直接反编译为 Dart 源码
|
|
331
|
+
3. 分析方法:
|
|
332
|
+
- reFlutter 工具:patch libflutter.so 获取 snapshot
|
|
333
|
+
- Doldrums:解析 Dart snapshot 恢复类/函数信息
|
|
334
|
+
- Frida hook libflutter.so 中的关键函数
|
|
335
|
+
4. 网络分析:Flutter 不走系统代理,需要特殊处理 SSL
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## 工具速查
|
|
341
|
+
|
|
342
|
+
| 工具 | 用途 | 安装 |
|
|
343
|
+
|------|------|------|
|
|
344
|
+
| jadx | Java 反编译 | 已在 bootstrap 中 |
|
|
345
|
+
| apktool | 解包/重打包 | 已在 bootstrap 中 |
|
|
346
|
+
| Frida | 动态 Hook | `pip install frida-tools` |
|
|
347
|
+
| Objection | Frida 封装(更易用) | `pip install objection` |
|
|
348
|
+
| MobSF | 自动化移动安全分析 | Docker 部署 |
|
|
349
|
+
| BlackDex | 免 root 脱壳 | APK 安装 |
|
|
350
|
+
| FART | ART 脱壳 | 刷入 ROM 或 Frida 版 |
|
|
351
|
+
| hermes-dec | Hermes 字节码反编译 | npm 安装 |
|
|
352
|
+
| reFlutter | Flutter 逆向辅助 | pip 安装 |
|
|
353
|
+
| Magisk + Shamiko | Root 隐藏 | 刷入 |
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 参考资源
|
|
358
|
+
|
|
359
|
+
| 资源 | 说明 | 链接 |
|
|
360
|
+
|------|------|------|
|
|
361
|
+
| OWASP MASTG | 移动安全测试指南 | https://mas.owasp.org/ |
|
|
362
|
+
| FridaBypassKit | 通用绕过框架 | https://github.com/okankurtuluss/FridaBypassKit |
|
|
363
|
+
| SSL-bypass | 通用 SSL Pinning 绕过 | https://github.com/0xCD4/SSL-bypass |
|
|
364
|
+
| awesome-frida | Frida 资源合集 | https://github.com/dweinstein/awesome-frida |
|
|
365
|
+
| Android Security Awesome | Android 安全资源 | https://github.com/ashishb/android-security-awesome |
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# APK 安全测试速查
|
|
2
|
+
|
|
3
|
+
> 基于 OWASP MASTG(Mobile Application Security Testing Guide)整理。
|
|
4
|
+
> 覆盖静态分析、动态分析、网络通信、数据存储、认证授权、代码保护六大维度。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 静态分析检查清单
|
|
9
|
+
|
|
10
|
+
### Manifest 审计
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
□ android:debuggable="true" → 可调试(生产环境不应出现)
|
|
14
|
+
□ android:allowBackup="true" → 数据可备份提取
|
|
15
|
+
□ android:exported="true" 的组件 → 暴露的 Activity/Service/Receiver/Provider
|
|
16
|
+
□ 自定义权限 protectionLevel → 是否为 normal(应为 signature)
|
|
17
|
+
□ intent-filter 中的 scheme → 自定义 deeplink 是否可被劫持
|
|
18
|
+
□ android:usesCleartextTraffic="true" → 允许明文 HTTP
|
|
19
|
+
□ minSdkVersion 过低 → 可能缺少安全特性
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 代码审计关键点
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
□ 硬编码密钥/Token(搜索 "key"、"secret"、"password"、"api_key")
|
|
26
|
+
□ 不安全的随机数(java.util.Random 而非 SecureRandom)
|
|
27
|
+
□ 不安全的加密(ECB 模式、DES、MD5 用于密码)
|
|
28
|
+
□ WebView 配置(setJavaScriptEnabled + addJavascriptInterface = RCE 风险)
|
|
29
|
+
□ SQL 注入(rawQuery 拼接用户输入)
|
|
30
|
+
□ 路径遍历(ContentProvider 的 openFile 未校验路径)
|
|
31
|
+
□ 日志泄露(Log.d/Log.i 输出敏感信息)
|
|
32
|
+
□ 剪贴板泄露(ClipboardManager 存储敏感数据)
|
|
33
|
+
□ 隐式 Intent 泄露(sendBroadcast 未指定包名)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 第三方库审计
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
□ 过时的 OkHttp/Retrofit 版本(已知漏洞)
|
|
40
|
+
□ 过时的 WebView 内核
|
|
41
|
+
□ 含已知漏洞的 SDK(检查 CVE)
|
|
42
|
+
□ 广告 SDK 数据收集范围
|
|
43
|
+
□ 推送 SDK 配置(是否泄露 token)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 动态分析检查清单
|
|
49
|
+
|
|
50
|
+
### Frida Hook 优先目标
|
|
51
|
+
|
|
52
|
+
| 目标 | Hook 点 | 目的 |
|
|
53
|
+
|------|---------|------|
|
|
54
|
+
| 登录认证 | `LoginActivity.login()` | 观察凭证处理 |
|
|
55
|
+
| 签名生成 | `*Sign*`、`*sign*`、`*encrypt*` | 还原签名算法 |
|
|
56
|
+
| SSL Pinning | `CertificatePinner.check` | 绕过抓包 |
|
|
57
|
+
| Root 检测 | `*root*`、`*su*`、`*magisk*` | 绕过检测 |
|
|
58
|
+
| 加密操作 | `javax.crypto.Cipher` | 提取密钥/IV |
|
|
59
|
+
| Token 存储 | `SharedPreferences.getString` | 观察 token 读写 |
|
|
60
|
+
| 网络请求 | `OkHttpClient.newCall` | 观察请求构造 |
|
|
61
|
+
|
|
62
|
+
### 常用 Frida 一行命令
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# 追踪所有加密操作
|
|
66
|
+
frida-trace -U -f com.target.app -j '*Cipher*!*'
|
|
67
|
+
|
|
68
|
+
# 追踪所有 HTTP 请求
|
|
69
|
+
frida-trace -U -f com.target.app -j '*OkHttp*!*'
|
|
70
|
+
|
|
71
|
+
# 追踪 SharedPreferences 读写
|
|
72
|
+
frida-trace -U -f com.target.app -j '*SharedPreferences*!*'
|
|
73
|
+
|
|
74
|
+
# 追踪所有 native 函数调用
|
|
75
|
+
frida-trace -U -f com.target.app -i 'Java_*'
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Objection 快速命令
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 连接
|
|
82
|
+
objection -g com.target.app explore
|
|
83
|
+
|
|
84
|
+
# 常用命令
|
|
85
|
+
android hooking list activities
|
|
86
|
+
android hooking list services
|
|
87
|
+
android sslpinning disable
|
|
88
|
+
android root disable
|
|
89
|
+
android clipboard monitor
|
|
90
|
+
env # 查看应用目录
|
|
91
|
+
sqlite connect <db_path> # 连接数据库
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 网络通信安全
|
|
97
|
+
|
|
98
|
+
### 抓包配置
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
方法 1: 系统代理 + Burp/mitmproxy
|
|
102
|
+
- 设置 WiFi 代理 → Burp 监听地址
|
|
103
|
+
- 安装 CA 证书到设备
|
|
104
|
+
- Android 7+ 需要 network_security_config 或 Frida 绕过
|
|
105
|
+
|
|
106
|
+
方法 2: VPN 模式(推荐)
|
|
107
|
+
- 使用 HttpCanary / Packet Capture
|
|
108
|
+
- 不需要 root,不需要配置代理
|
|
109
|
+
- 但无法解密 SSL Pinning 的流量
|
|
110
|
+
|
|
111
|
+
方法 3: Frida + r2frida
|
|
112
|
+
- 直接在进程内拦截网络调用
|
|
113
|
+
- 不受代理/VPN 限制
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 检查项
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
□ 是否使用 HTTPS(所有 API 调用)
|
|
120
|
+
□ 是否有 SSL Pinning(证书绑定)
|
|
121
|
+
□ 证书验证是否正确(不接受自签名)
|
|
122
|
+
□ 是否有证书透明度(CT)检查
|
|
123
|
+
□ API 密钥是否在请求中明文传输
|
|
124
|
+
□ Token 是否有过期机制
|
|
125
|
+
□ 是否有请求签名防篡改
|
|
126
|
+
□ 是否有重放攻击防护(nonce/timestamp)
|
|
127
|
+
□ WebSocket 是否加密
|
|
128
|
+
□ 是否有敏感数据在 URL 参数中(会被日志记录)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 数据存储安全
|
|
134
|
+
|
|
135
|
+
### 检查位置
|
|
136
|
+
|
|
137
|
+
| 位置 | 风险 | 检查命令 |
|
|
138
|
+
|------|------|---------|
|
|
139
|
+
| SharedPreferences | 明文存储 token/密码 | `adb shell cat /data/data/pkg/shared_prefs/*.xml` |
|
|
140
|
+
| SQLite 数据库 | 未加密的敏感数据 | `adb pull /data/data/pkg/databases/` |
|
|
141
|
+
| 外部存储 | 任何应用可读 | `adb shell ls /sdcard/Android/data/pkg/` |
|
|
142
|
+
| 应用日志 | 泄露调试信息 | `adb logcat \| grep pkg` |
|
|
143
|
+
| 备份文件 | allowBackup=true | `adb backup -f backup.ab pkg` |
|
|
144
|
+
| 键盘缓存 | 输入历史 | 检查 `inputType` 是否为 `textPassword` |
|
|
145
|
+
| 截图保护 | 敏感页面可截图 | 检查 `FLAG_SECURE` |
|
|
146
|
+
|
|
147
|
+
### 加密存储方案对比
|
|
148
|
+
|
|
149
|
+
| 方案 | 安全性 | 说明 |
|
|
150
|
+
|------|--------|------|
|
|
151
|
+
| SharedPreferences 明文 | ❌ | root 后直接读取 |
|
|
152
|
+
| EncryptedSharedPreferences | ✓ | AndroidX Security 库 |
|
|
153
|
+
| SQLCipher | ✓ | 加密 SQLite |
|
|
154
|
+
| Android Keystore | ✓✓ | 硬件级密钥保护 |
|
|
155
|
+
| 自定义 AES 加密 | ⚠️ | 取决于密钥管理 |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 认证与授权
|
|
160
|
+
|
|
161
|
+
### 常见漏洞
|
|
162
|
+
|
|
163
|
+
| 漏洞 | 测试方法 |
|
|
164
|
+
|------|---------|
|
|
165
|
+
| 弱密码策略 | 尝试 123456、password 等 |
|
|
166
|
+
| 无锁定机制 | 暴力破解登录接口 |
|
|
167
|
+
| Token 不过期 | 登出后重放旧 token |
|
|
168
|
+
| 越权访问 | 修改请求中的 user_id |
|
|
169
|
+
| 短信验证码可爆破 | 4/6 位数字无频率限制 |
|
|
170
|
+
| OAuth 配置错误 | redirect_uri 可篡改 |
|
|
171
|
+
| 生物认证绕过 | Hook BiometricPrompt |
|
|
172
|
+
| 设备绑定绕过 | 修改 device_id |
|
|
173
|
+
|
|
174
|
+
### 测试 Payload
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# 越权测试
|
|
178
|
+
curl -H "Authorization: Bearer USER_A_TOKEN" \
|
|
179
|
+
"https://api.target.com/users/USER_B_ID/profile"
|
|
180
|
+
|
|
181
|
+
# Token 重放
|
|
182
|
+
# 1. 正常登录获取 token
|
|
183
|
+
# 2. 登出
|
|
184
|
+
# 3. 用旧 token 请求 → 应该返回 401
|
|
185
|
+
|
|
186
|
+
# 短信验证码爆破
|
|
187
|
+
for code in $(seq 0000 9999); do
|
|
188
|
+
curl -X POST "https://api.target.com/verify" \
|
|
189
|
+
-d "phone=13800138000&code=$code"
|
|
190
|
+
done
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 代码保护评估
|
|
196
|
+
|
|
197
|
+
| 保护措施 | 检测方法 | 绕过难度 |
|
|
198
|
+
|---------|---------|---------|
|
|
199
|
+
| ProGuard 混淆 | jadx 查看类名是否为 a/b/c | 低(只是重命名) |
|
|
200
|
+
| 字符串加密 | 搜索解密函数,Hook 获取明文 | 中 |
|
|
201
|
+
| 反调试 | 尝试 attach debugger | 中(Frida 可绕过) |
|
|
202
|
+
| Root 检测 | 在 root 设备上运行 | 中(通用脚本绕过) |
|
|
203
|
+
| 模拟器检测 | 在模拟器上运行 | 低-中 |
|
|
204
|
+
| 完整性校验 | 修改 APK 后安装 | 中(patch 校验函数) |
|
|
205
|
+
| 加固/壳 | 查看入口类和 .so | 中-高(需脱壳) |
|
|
206
|
+
| Native 保护 | 核心逻辑在 .so | 高(需 IDA 分析) |
|
|
207
|
+
| VMP 虚拟化 | 代码被虚拟化执行 | 极高 |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 快速测试流程(30 分钟)
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
1. [5min] 解包 + Manifest 审计
|
|
215
|
+
apktool d app.apk
|
|
216
|
+
检查 debuggable/allowBackup/exported/cleartext
|
|
217
|
+
|
|
218
|
+
2. [10min] 代码快速审计
|
|
219
|
+
jadx -d out app.apk
|
|
220
|
+
搜索: password, key, secret, token, http://
|
|
221
|
+
|
|
222
|
+
3. [5min] 网络测试
|
|
223
|
+
配置代理 → 操作 APP → 检查是否有明文/弱加密
|
|
224
|
+
|
|
225
|
+
4. [5min] 存储检查
|
|
226
|
+
adb shell → 检查 shared_prefs 和 databases
|
|
227
|
+
|
|
228
|
+
5. [5min] 动态验证
|
|
229
|
+
Frida hook 关键函数 → 确认发现
|
|
230
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Frida Bypass Kit — Android 通用安全绕过框架
|
|
2
|
+
|
|
3
|
+
> 来源:[FridaBypassKit](https://github.com/okankurtuluss/FridaBypassKit)(2025)
|
|
4
|
+
> 适用场景:APK 动态分析时需要绕过 root 检测、SSL pinning、模拟器检测、反调试
|
|
5
|
+
|
|
6
|
+
## 概述
|
|
7
|
+
|
|
8
|
+
FridaBypassKit 是一个集成了四大绕过能力的 Frida 脚本,无需针对特定 APP 定制,开箱即用。
|
|
9
|
+
|
|
10
|
+
## 四大绕过能力
|
|
11
|
+
|
|
12
|
+
### 1. Root 检测绕过
|
|
13
|
+
|
|
14
|
+
- Hook `File.exists()` 隐藏 su 二进制
|
|
15
|
+
- 拦截 `Runtime.exec()` 的 root 检查调用
|
|
16
|
+
- 从 PackageManager 隐藏 root 相关包(Magisk、SuperSU 等)
|
|
17
|
+
- 修改系统属性使设备看起来未 root
|
|
18
|
+
|
|
19
|
+
### 2. SSL Pinning 绕过
|
|
20
|
+
|
|
21
|
+
- Hook `TrustManagerImpl.verifyChain()`
|
|
22
|
+
- Hook `TrustManagerImpl.checkTrustedRecursive()`
|
|
23
|
+
- 绕过证书链验证
|
|
24
|
+
- 返回空证书链避免校验
|
|
25
|
+
- 兼容 OkHttp、Retrofit 和自定义实现
|
|
26
|
+
|
|
27
|
+
### 3. 模拟器检测绕过
|
|
28
|
+
|
|
29
|
+
- 伪造 TelephonyManager 返回值
|
|
30
|
+
- 返回假电话号码和运营商名称
|
|
31
|
+
- 修改 Build 属性
|
|
32
|
+
|
|
33
|
+
### 4. 反调试绕过
|
|
34
|
+
|
|
35
|
+
- Hook `Debug.isDebuggerConnected()`
|
|
36
|
+
- 阻止调试器检测
|
|
37
|
+
- 绕过反调试检查
|
|
38
|
+
|
|
39
|
+
## 使用方法
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 前置条件
|
|
43
|
+
pip install frida-tools
|
|
44
|
+
adb push frida-server /data/local/tmp/
|
|
45
|
+
adb shell chmod 755 /data/local/tmp/frida-server
|
|
46
|
+
adb shell su -c /data/local/tmp/frida-server &
|
|
47
|
+
|
|
48
|
+
# 注入目标 APP
|
|
49
|
+
frida -U -f com.example.app -l FridaBypassKit.js
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 其他推荐 Frida 绕过脚本
|
|
53
|
+
|
|
54
|
+
| 项目 | 特点 | 链接 |
|
|
55
|
+
|------|------|------|
|
|
56
|
+
| httptoolkit/frida-interception-and-unpinning | 直接 MitM 所有 HTTPS 流量 | [GitHub](https://github.com/httptoolkit/frida-interception-and-unpinning) |
|
|
57
|
+
| 0xCD4/SSL-bypass | 通用非定制 SSL 绕过 | [GitHub](https://github.com/0xCD4/SSL-bypass) |
|
|
58
|
+
| incogbyte/ssl-bypass gist | 绕过常见 SSL pinning 方法 | [Gist](https://gist.github.com/incogbyte/1e0e2f38b5602e72b1380f21ba04b15e) |
|
|
59
|
+
| Zero3141/Frida-OkHttp-Bypass | 专门针对 OkHttp CertificatePinner | [GitHub](https://github.com/Zero3141/Frida-OkHttp-Bypass) |
|
|
60
|
+
|
|
61
|
+
## 与本包的集成
|
|
62
|
+
|
|
63
|
+
在 `apk-reverse` 工作流中,当遇到以下情况时使用:
|
|
64
|
+
|
|
65
|
+
1. APP 检测到 root 拒绝运行 → 启用 Root Detection Bypass
|
|
66
|
+
2. 抓包时 HTTPS 请求看不到明文 → 启用 SSL Pinning Bypass
|
|
67
|
+
3. APP 检测到模拟器拒绝运行 → 启用 Emulator Detection Bypass
|
|
68
|
+
4. 附加 Frida 后 APP 崩溃 → 启用 Debug Detection Bypass
|
|
69
|
+
|
|
70
|
+
推荐组合使用:先跑完整 FridaBypassKit,再针对性调整。
|