jfl 0.0.0
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/LICENSE +21 -0
- package/README.md +313 -0
- package/clawdbot-skill/README.md +328 -0
- package/clawdbot-skill/SKILL.md +362 -0
- package/clawdbot-skill/index.ts +486 -0
- package/clawdbot-skill/package.json +28 -0
- package/clawdbot-skill/skill.json +28 -0
- package/dist/commands/agents.d.ts +5 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +399 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/context-hub.d.ts +12 -0
- package/dist/commands/context-hub.d.ts.map +1 -0
- package/dist/commands/context-hub.js +642 -0
- package/dist/commands/context-hub.js.map +1 -0
- package/dist/commands/deploy.d.ts +5 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +370 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/feedback.d.ts +2 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +178 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/hud.d.ts +4 -0
- package/dist/commands/hud.d.ts.map +1 -0
- package/dist/commands/hud.js +262 -0
- package/dist/commands/hud.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +553 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +23 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +818 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/ralph.d.ts +9 -0
- package/dist/commands/ralph.d.ts.map +1 -0
- package/dist/commands/ralph.js +67 -0
- package/dist/commands/ralph.js.map +1 -0
- package/dist/commands/repair.d.ts +7 -0
- package/dist/commands/repair.d.ts.map +1 -0
- package/dist/commands/repair.js +283 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/session-mgmt.d.ts +33 -0
- package/dist/commands/session-mgmt.d.ts.map +1 -0
- package/dist/commands/session-mgmt.js +404 -0
- package/dist/commands/session-mgmt.js.map +1 -0
- package/dist/commands/session.d.ts +2 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +639 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/skills.d.ts +31 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +314 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +127 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/synopsis.d.ts +10 -0
- package/dist/commands/synopsis.d.ts.map +1 -0
- package/dist/commands/synopsis.js +277 -0
- package/dist/commands/synopsis.js.map +1 -0
- package/dist/commands/update.d.ts +10 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +165 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/voice.d.ts +410 -0
- package/dist/commands/voice.d.ts.map +1 -0
- package/dist/commands/voice.js +4763 -0
- package/dist/commands/voice.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +512 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/context-hub-mcp.d.ts +11 -0
- package/dist/mcp/context-hub-mcp.d.ts.map +1 -0
- package/dist/mcp/context-hub-mcp.js +548 -0
- package/dist/mcp/context-hub-mcp.js.map +1 -0
- package/dist/telegram/voice.d.ts +146 -0
- package/dist/telegram/voice.d.ts.map +1 -0
- package/dist/telegram/voice.js +351 -0
- package/dist/telegram/voice.js.map +1 -0
- package/dist/types/skills.d.ts +44 -0
- package/dist/types/skills.d.ts.map +1 -0
- package/dist/types/skills.js +5 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/ui/banner.d.ts +18 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +323 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +52 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +72 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/theme.d.ts +82 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +142 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/utils/auth-guard.d.ts +66 -0
- package/dist/utils/auth-guard.d.ts.map +1 -0
- package/dist/utils/auth-guard.js +348 -0
- package/dist/utils/auth-guard.js.map +1 -0
- package/dist/utils/ensure-project.d.ts +11 -0
- package/dist/utils/ensure-project.d.ts.map +1 -0
- package/dist/utils/ensure-project.js +70 -0
- package/dist/utils/ensure-project.js.map +1 -0
- package/dist/utils/git.d.ts +73 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +219 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/github-auth.d.ts +54 -0
- package/dist/utils/github-auth.d.ts.map +1 -0
- package/dist/utils/github-auth.js +375 -0
- package/dist/utils/github-auth.js.map +1 -0
- package/dist/utils/github-repo.d.ts +30 -0
- package/dist/utils/github-repo.d.ts.map +1 -0
- package/dist/utils/github-repo.js +219 -0
- package/dist/utils/github-repo.js.map +1 -0
- package/dist/utils/platform-auth.d.ts +81 -0
- package/dist/utils/platform-auth.d.ts.map +1 -0
- package/dist/utils/platform-auth.js +191 -0
- package/dist/utils/platform-auth.js.map +1 -0
- package/dist/utils/project-config.d.ts +43 -0
- package/dist/utils/project-config.d.ts.map +1 -0
- package/dist/utils/project-config.js +97 -0
- package/dist/utils/project-config.js.map +1 -0
- package/dist/utils/skill-registry.d.ts +49 -0
- package/dist/utils/skill-registry.d.ts.map +1 -0
- package/dist/utils/skill-registry.js +192 -0
- package/dist/utils/skill-registry.js.map +1 -0
- package/dist/utils/wallet.d.ts +62 -0
- package/dist/utils/wallet.d.ts.map +1 -0
- package/dist/utils/wallet.js +252 -0
- package/dist/utils/wallet.js.map +1 -0
- package/dist/utils/x402-client.d.ts +86 -0
- package/dist/utils/x402-client.d.ts.map +1 -0
- package/dist/utils/x402-client.js +265 -0
- package/dist/utils/x402-client.js.map +1 -0
- package/package.json +76 -0
- package/scripts/postinstall.js +116 -0
- package/scripts/test-onboarding.sh +121 -0
- package/scripts/voice-start.sh +128 -0
- package/scripts/voice-stop.sh +33 -0
- package/template/.claude/settings.json +92 -0
- package/template/.claude/skills/agent-browser/SKILL.md +116 -0
- package/template/.claude/skills/brand-architect/SKILL.md +240 -0
- package/template/.claude/skills/brand-architect/config.yaml +137 -0
- package/template/.claude/skills/campaign-hud/config.yaml +112 -0
- package/template/.claude/skills/content-creator/SKILL.md +294 -0
- package/template/.claude/skills/debug/MULTI_AGENT.md +360 -0
- package/template/.claude/skills/debug/SKILL.md +549 -0
- package/template/.claude/skills/fly-deploy/SKILL.md +676 -0
- package/template/.claude/skills/founder-video/SKILL.md +467 -0
- package/template/.claude/skills/hud/SKILL.md +157 -0
- package/template/.claude/skills/ralph-tui/SKILL.md +210 -0
- package/template/.claude/skills/react-best-practices/AGENTS.md +2249 -0
- package/template/.claude/skills/react-best-practices/README.md +123 -0
- package/template/.claude/skills/react-best-practices/SKILL.md +125 -0
- package/template/.claude/skills/react-best-practices/metadata.json +15 -0
- package/template/.claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/template/.claude/skills/react-best-practices/rules/_template.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/template/.claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/template/.claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.claude/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/template/.claude/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/template/.claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/template/.claude/skills/remotion-best-practices/SKILL.md +43 -0
- package/template/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
- package/template/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
- package/template/.claude/skills/remotion-best-practices/rules/audio.md +172 -0
- package/template/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/template/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/template/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/template/.claude/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/template/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/template/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/template/.claude/skills/remotion-best-practices/rules/images.md +130 -0
- package/template/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/template/.claude/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/template/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/template/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/template/.claude/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/template/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/template/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/template/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
- package/template/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/template/.claude/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/template/.claude/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/template/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
- package/template/.claude/skills/search/SKILL.md +220 -0
- package/template/.claude/skills/spec/SKILL.md +377 -0
- package/template/.claude/skills/startup/SKILL.md +310 -0
- package/template/.claude/skills/web-architect/SKILL.md +309 -0
- package/template/.claude/skills/x-algorithm/SKILL.md +305 -0
- package/template/.jfl/config.json +8 -0
- package/template/.mcp.json +11 -0
- package/template/CLAUDE.md +960 -0
- package/template/content/.gitkeep +0 -0
- package/template/context-hub +3 -0
- package/template/knowledge/BRAND_BRIEF.md +124 -0
- package/template/knowledge/BRAND_DECISIONS.md +168 -0
- package/template/knowledge/NARRATIVE.md +114 -0
- package/template/knowledge/ROADMAP.md +128 -0
- package/template/knowledge/THESIS.md +108 -0
- package/template/knowledge/VISION.md +74 -0
- package/template/knowledge/VOICE_AND_TONE.md +146 -0
- package/template/previews/.gitkeep +0 -0
- package/template/scripts/session/auto-commit.sh +245 -0
- package/template/scripts/session/auto-merge.sh +325 -0
- package/template/scripts/session/jfl-doctor.sh +587 -0
- package/template/scripts/session/session-end.sh +194 -0
- package/template/scripts/session/session-init.sh +163 -0
- package/template/scripts/session/session-sync.sh +167 -0
- package/template/scripts/session/test-context-preservation.sh +160 -0
- package/template/skills/agent-browser/SKILL.md +116 -0
- package/template/skills/brand-architect/SKILL.md +240 -0
- package/template/skills/brand-architect/config.yaml +137 -0
- package/template/skills/campaign-hud/config.yaml +112 -0
- package/template/skills/content-creator/SKILL.md +294 -0
- package/template/skills/debug/MULTI_AGENT.md +360 -0
- package/template/skills/debug/SKILL.md +549 -0
- package/template/skills/fly-deploy/SKILL.md +676 -0
- package/template/skills/founder-video/SKILL.md +467 -0
- package/template/skills/hud/SKILL.md +204 -0
- package/template/skills/ralph-tui/SKILL.md +210 -0
- package/template/skills/react-best-practices/AGENTS.md +2249 -0
- package/template/skills/react-best-practices/README.md +123 -0
- package/template/skills/react-best-practices/SKILL.md +125 -0
- package/template/skills/react-best-practices/metadata.json +15 -0
- package/template/skills/react-best-practices/rules/_sections.md +46 -0
- package/template/skills/react-best-practices/rules/_template.md +28 -0
- package/template/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/template/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/template/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/template/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/template/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/template/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/template/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/template/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/template/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/template/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/template/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/template/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/template/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/template/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/template/skills/remotion-best-practices/SKILL.md +43 -0
- package/template/skills/remotion-best-practices/rules/3d.md +86 -0
- package/template/skills/remotion-best-practices/rules/animations.md +29 -0
- package/template/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/template/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/template/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/template/skills/remotion-best-practices/rules/assets.md +78 -0
- package/template/skills/remotion-best-practices/rules/audio.md +172 -0
- package/template/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/template/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/template/skills/remotion-best-practices/rules/charts.md +58 -0
- package/template/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/template/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/template/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/template/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/template/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/template/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/template/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/template/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/template/skills/remotion-best-practices/rules/images.md +130 -0
- package/template/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/template/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/template/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/template/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/template/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/template/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/template/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/template/skills/remotion-best-practices/rules/timing.md +179 -0
- package/template/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/template/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/template/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/template/skills/remotion-best-practices/rules/videos.md +171 -0
- package/template/skills/search/SKILL.md +220 -0
- package/template/skills/spec/SKILL.md +377 -0
- package/template/skills/startup/SKILL.md +310 -0
- package/template/skills/web-architect/SKILL.md +309 -0
- package/template/skills/x-algorithm/SKILL.md +305 -0
- package/template/suggestions/.gitkeep +0 -0
- package/template/templates/QUICKSTART_SKILL_TO_PRODUCT.md +242 -0
- package/template/templates/brand/BRAND_BRIEF.md +124 -0
- package/template/templates/brand/BRAND_DECISIONS.md +168 -0
- package/template/templates/brand/BRAND_GUIDELINES.md +251 -0
- package/template/templates/brand/VOICE_AND_TONE.md +146 -0
- package/template/templates/brand/global.css +240 -0
- package/template/templates/collaboration/CONTRIBUTOR.md +74 -0
- package/template/templates/collaboration/CRM.md +97 -0
- package/template/templates/collaboration/TASKS.md +83 -0
- package/template/templates/strategic/NARRATIVE.md +114 -0
- package/template/templates/strategic/ROADMAP.md +128 -0
- package/template/templates/strategic/THESIS.md +108 -0
- package/template/templates/strategic/VISION.md +74 -0
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
# Debug Skill
|
|
2
|
+
|
|
3
|
+
Reverse engineering and dynamic analysis using industry-standard tools. For CTF, security research, malware analysis, and understanding binary behavior.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Philosophy
|
|
8
|
+
|
|
9
|
+
**Understand before patching.** The goal is comprehension, not just getting past a check.
|
|
10
|
+
|
|
11
|
+
**Static + Dynamic = Complete picture.** Ghidra shows structure, Frida shows runtime.
|
|
12
|
+
|
|
13
|
+
**Cross-verify everything.** Use multiple tools to confirm findings.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/debug # Overview of available tools and workflows
|
|
21
|
+
/debug setup [tool] # Setup guide for specific tool
|
|
22
|
+
/debug ghidra [target] # Static analysis workflow
|
|
23
|
+
/debug frida [target] # Dynamic instrumentation workflow
|
|
24
|
+
/debug windbg [target] # Windows debugging workflow
|
|
25
|
+
/debug binja [target] # Binary Ninja workflow
|
|
26
|
+
/debug ctf [challenge] # CTF-specific approach
|
|
27
|
+
/debug malware [sample] # Malware analysis workflow
|
|
28
|
+
/debug compare [a] [b] # Cross-tool comparison
|
|
29
|
+
/debug hook [function] # Generate Frida hook template
|
|
30
|
+
/debug decompile [function] # Decompilation tips
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## THE TOOLS
|
|
36
|
+
|
|
37
|
+
### Ghidra (Static Analysis)
|
|
38
|
+
|
|
39
|
+
**What it is:** NSA's free reverse engineering suite. Decompiler, disassembler, scripting.
|
|
40
|
+
|
|
41
|
+
**When to use:**
|
|
42
|
+
- Initial triage of unknown binary
|
|
43
|
+
- Understanding program structure
|
|
44
|
+
- Finding interesting functions
|
|
45
|
+
- Patching binaries
|
|
46
|
+
|
|
47
|
+
**Setup:**
|
|
48
|
+
```bash
|
|
49
|
+
# macOS
|
|
50
|
+
brew install --cask ghidra
|
|
51
|
+
|
|
52
|
+
# Linux
|
|
53
|
+
wget https://github.com/NationalSecurityAgency/ghidra/releases/latest
|
|
54
|
+
unzip ghidra_*.zip
|
|
55
|
+
./ghidraRun
|
|
56
|
+
|
|
57
|
+
# Requires Java 17+
|
|
58
|
+
java --version
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Key shortcuts:**
|
|
62
|
+
| Key | Action |
|
|
63
|
+
|-----|--------|
|
|
64
|
+
| `G` | Go to address |
|
|
65
|
+
| `L` | Rename label/function |
|
|
66
|
+
| `T` | Change type |
|
|
67
|
+
| `D` | Disassemble |
|
|
68
|
+
| `;` | Add comment |
|
|
69
|
+
| `Ctrl+Shift+E` | Open decompiler |
|
|
70
|
+
| `X` | Show xrefs |
|
|
71
|
+
| `/` | Search |
|
|
72
|
+
|
|
73
|
+
**Workflow:**
|
|
74
|
+
1. Create new project
|
|
75
|
+
2. Import binary (File → Import)
|
|
76
|
+
3. Analyze (Yes to all, be patient)
|
|
77
|
+
4. Start in `main` or entry point
|
|
78
|
+
5. Rename functions as you understand them
|
|
79
|
+
6. Follow cross-references to understand flow
|
|
80
|
+
|
|
81
|
+
**Ghidra Python scripting:**
|
|
82
|
+
```python
|
|
83
|
+
# List all functions
|
|
84
|
+
from ghidra.program.model.listing import Function
|
|
85
|
+
fm = currentProgram.getFunctionManager()
|
|
86
|
+
for func in fm.getFunctions(True):
|
|
87
|
+
print(f"{func.getName()} @ {func.getEntryPoint()}")
|
|
88
|
+
|
|
89
|
+
# Find strings containing "password"
|
|
90
|
+
from ghidra.program.util import DefinedDataIterator
|
|
91
|
+
for data in DefinedDataIterator.definedStrings(currentProgram):
|
|
92
|
+
if "password" in str(data.getValue()).lower():
|
|
93
|
+
print(f"{data.getAddress()}: {data.getValue()}")
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Frida (Dynamic Instrumentation)
|
|
99
|
+
|
|
100
|
+
**What it is:** Dynamic instrumentation toolkit. Hook functions, trace calls, modify behavior at runtime.
|
|
101
|
+
|
|
102
|
+
**When to use:**
|
|
103
|
+
- Runtime behavior analysis
|
|
104
|
+
- Bypassing checks
|
|
105
|
+
- Tracing function calls
|
|
106
|
+
- Understanding crypto/encoding
|
|
107
|
+
- Mobile app analysis (iOS/Android)
|
|
108
|
+
|
|
109
|
+
**Setup:**
|
|
110
|
+
```bash
|
|
111
|
+
# Install Frida
|
|
112
|
+
pip install frida-tools
|
|
113
|
+
|
|
114
|
+
# For iOS/Android
|
|
115
|
+
# Device needs frida-server running
|
|
116
|
+
frida-ps -U # List processes on USB device
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Basic hooks:**
|
|
120
|
+
```javascript
|
|
121
|
+
// Hook a function and log arguments
|
|
122
|
+
Interceptor.attach(Module.findExportByName(null, "strcmp"), {
|
|
123
|
+
onEnter: function(args) {
|
|
124
|
+
console.log("strcmp called:");
|
|
125
|
+
console.log(" arg0: " + Memory.readUtf8String(args[0]));
|
|
126
|
+
console.log(" arg1: " + Memory.readUtf8String(args[1]));
|
|
127
|
+
},
|
|
128
|
+
onLeave: function(retval) {
|
|
129
|
+
console.log(" return: " + retval);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// Hook by address (Ghidra tells you the address)
|
|
134
|
+
var baseAddr = Module.findBaseAddress("target");
|
|
135
|
+
var funcAddr = baseAddr.add(0x1234); // offset from Ghidra
|
|
136
|
+
|
|
137
|
+
Interceptor.attach(funcAddr, {
|
|
138
|
+
onEnter: function(args) {
|
|
139
|
+
console.log("Custom function called");
|
|
140
|
+
console.log(" arg0: " + args[0]);
|
|
141
|
+
console.log(" arg1: " + args[1]);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
// Replace return value
|
|
146
|
+
Interceptor.attach(Module.findExportByName(null, "isLicensed"), {
|
|
147
|
+
onLeave: function(retval) {
|
|
148
|
+
retval.replace(1); // Always return true
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Running Frida:**
|
|
154
|
+
```bash
|
|
155
|
+
# Attach to running process
|
|
156
|
+
frida -p <pid> -l script.js
|
|
157
|
+
|
|
158
|
+
# Spawn and attach
|
|
159
|
+
frida -f ./target -l script.js --no-pause
|
|
160
|
+
|
|
161
|
+
# On device (iOS/Android)
|
|
162
|
+
frida -U -f com.example.app -l script.js --no-pause
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Common patterns:**
|
|
166
|
+
```javascript
|
|
167
|
+
// Trace all calls to a module
|
|
168
|
+
var module = Process.findModuleByName("libcrypto.so");
|
|
169
|
+
Interceptor.attach(module.base.add(0x1000), {
|
|
170
|
+
onEnter: function() {
|
|
171
|
+
console.log("Called from: " + Thread.backtrace(this.context, Backtracer.ACCURATE)
|
|
172
|
+
.map(DebugSymbol.fromAddress).join("\n"));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Dump memory
|
|
177
|
+
var buf = Memory.readByteArray(ptr("0x12345678"), 256);
|
|
178
|
+
console.log(hexdump(buf, { offset: 0, length: 256, header: true, ansi: true }));
|
|
179
|
+
|
|
180
|
+
// Find pattern in memory
|
|
181
|
+
var pattern = "48 89 5C 24 08";
|
|
182
|
+
var matches = Memory.scan(module.base, module.size, pattern, {
|
|
183
|
+
onMatch: function(address, size) {
|
|
184
|
+
console.log("Found at: " + address);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### WinDbg (Windows Debugging)
|
|
192
|
+
|
|
193
|
+
**What it is:** Microsoft's debugger for Windows. Kernel and user-mode debugging.
|
|
194
|
+
|
|
195
|
+
**When to use:**
|
|
196
|
+
- Windows binary debugging
|
|
197
|
+
- Crash dump analysis
|
|
198
|
+
- Kernel debugging
|
|
199
|
+
- Driver analysis
|
|
200
|
+
|
|
201
|
+
**Setup:**
|
|
202
|
+
```
|
|
203
|
+
# Install from Microsoft Store or winget
|
|
204
|
+
winget install Microsoft.WinDbg
|
|
205
|
+
|
|
206
|
+
# Or download from:
|
|
207
|
+
# https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Key commands:**
|
|
211
|
+
| Command | Action |
|
|
212
|
+
|---------|--------|
|
|
213
|
+
| `g` | Go (continue) |
|
|
214
|
+
| `p` | Step over |
|
|
215
|
+
| `t` | Step into |
|
|
216
|
+
| `bp <addr>` | Set breakpoint |
|
|
217
|
+
| `bl` | List breakpoints |
|
|
218
|
+
| `bc *` | Clear all breakpoints |
|
|
219
|
+
| `k` | Stack trace |
|
|
220
|
+
| `r` | Show registers |
|
|
221
|
+
| `dd <addr>` | Display dwords |
|
|
222
|
+
| `db <addr>` | Display bytes |
|
|
223
|
+
| `da <addr>` | Display ASCII |
|
|
224
|
+
| `du <addr>` | Display Unicode |
|
|
225
|
+
| `dps <addr>` | Display with symbols |
|
|
226
|
+
| `lm` | List modules |
|
|
227
|
+
| `x module!*pattern*` | Search symbols |
|
|
228
|
+
| `!analyze -v` | Analyze crash |
|
|
229
|
+
|
|
230
|
+
**Workflow:**
|
|
231
|
+
```
|
|
232
|
+
# Attach to process
|
|
233
|
+
.attach <pid>
|
|
234
|
+
|
|
235
|
+
# Open executable
|
|
236
|
+
.open <path>
|
|
237
|
+
|
|
238
|
+
# Set breakpoint on function
|
|
239
|
+
bp kernel32!CreateFileW
|
|
240
|
+
|
|
241
|
+
# Set conditional breakpoint
|
|
242
|
+
bp kernel32!CreateFileW ".if (poi(esp+4)==0x12345678) {} .else {gc}"
|
|
243
|
+
|
|
244
|
+
# Log without breaking
|
|
245
|
+
bp kernel32!CreateFileW ".printf \"CreateFile: %mu\\n\", poi(esp+4); gc"
|
|
246
|
+
|
|
247
|
+
# Break on module load
|
|
248
|
+
sxe ld:target.dll
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Extension commands:**
|
|
252
|
+
```
|
|
253
|
+
# Load SOS for .NET
|
|
254
|
+
.loadby sos clr
|
|
255
|
+
|
|
256
|
+
# Dump heap
|
|
257
|
+
!dumpheap -stat
|
|
258
|
+
|
|
259
|
+
# Find objects
|
|
260
|
+
!dumpheap -type System.String
|
|
261
|
+
|
|
262
|
+
# Dump object
|
|
263
|
+
!dumpobj <addr>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
### Binary Ninja (binja)
|
|
269
|
+
|
|
270
|
+
**What it is:** Commercial reverse engineering platform. Fast, scriptable, good UI.
|
|
271
|
+
|
|
272
|
+
**When to use:**
|
|
273
|
+
- When Ghidra is too slow
|
|
274
|
+
- Complex type recovery
|
|
275
|
+
- IL-based analysis
|
|
276
|
+
- Custom architectures
|
|
277
|
+
|
|
278
|
+
**Setup:**
|
|
279
|
+
```bash
|
|
280
|
+
# Commercial license required
|
|
281
|
+
# Download from: https://binary.ninja/
|
|
282
|
+
|
|
283
|
+
# Python API
|
|
284
|
+
pip install binaryninja
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Key features:**
|
|
288
|
+
- HLIL/MLIL/LLIL (high/medium/low level IL)
|
|
289
|
+
- Type propagation
|
|
290
|
+
- Data flow analysis
|
|
291
|
+
- Collaboration features
|
|
292
|
+
|
|
293
|
+
**Python API:**
|
|
294
|
+
```python
|
|
295
|
+
import binaryninja as bn
|
|
296
|
+
|
|
297
|
+
# Open binary
|
|
298
|
+
bv = bn.open_view("/path/to/binary")
|
|
299
|
+
|
|
300
|
+
# List functions
|
|
301
|
+
for func in bv.functions:
|
|
302
|
+
print(f"{func.name} @ {hex(func.start)}")
|
|
303
|
+
|
|
304
|
+
# Get HLIL
|
|
305
|
+
for func in bv.functions:
|
|
306
|
+
if func.name == "main":
|
|
307
|
+
for line in func.hlil:
|
|
308
|
+
print(line)
|
|
309
|
+
|
|
310
|
+
# Find strings
|
|
311
|
+
for string in bv.strings:
|
|
312
|
+
if "password" in string.value.lower():
|
|
313
|
+
print(f"{hex(string.start)}: {string.value}")
|
|
314
|
+
|
|
315
|
+
# Cross-references
|
|
316
|
+
func = bv.get_function_at(0x401000)
|
|
317
|
+
for ref in bv.get_code_refs(func.start):
|
|
318
|
+
print(f"Called from: {hex(ref.address)}")
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## WORKFLOWS
|
|
324
|
+
|
|
325
|
+
### CTF Binary Exploitation
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
1. File analysis
|
|
329
|
+
file ./challenge
|
|
330
|
+
checksec ./challenge
|
|
331
|
+
|
|
332
|
+
2. Static analysis (Ghidra)
|
|
333
|
+
- Find main
|
|
334
|
+
- Identify vulnerability (buffer overflow, format string, etc.)
|
|
335
|
+
- Note key addresses
|
|
336
|
+
|
|
337
|
+
3. Dynamic analysis (Frida/GDB)
|
|
338
|
+
- Verify assumptions
|
|
339
|
+
- Find exact offsets
|
|
340
|
+
- Test exploit
|
|
341
|
+
|
|
342
|
+
4. Exploit development
|
|
343
|
+
- Write payload
|
|
344
|
+
- Test locally
|
|
345
|
+
- Adjust for remote
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Malware Analysis (Isolated Environment)
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
1. Initial triage
|
|
352
|
+
- Hashes (md5, sha256)
|
|
353
|
+
- Strings
|
|
354
|
+
- Imports
|
|
355
|
+
- PE/ELF structure
|
|
356
|
+
|
|
357
|
+
2. Static analysis (Ghidra)
|
|
358
|
+
- Entry point behavior
|
|
359
|
+
- Anti-analysis tricks
|
|
360
|
+
- Config extraction
|
|
361
|
+
- C2 identification
|
|
362
|
+
|
|
363
|
+
3. Dynamic analysis (isolated VM)
|
|
364
|
+
- Network behavior
|
|
365
|
+
- File system changes
|
|
366
|
+
- Registry changes
|
|
367
|
+
- Process behavior
|
|
368
|
+
|
|
369
|
+
4. Documentation
|
|
370
|
+
- IOCs
|
|
371
|
+
- Behavior summary
|
|
372
|
+
- Detection rules
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Mobile App Analysis
|
|
376
|
+
|
|
377
|
+
```
|
|
378
|
+
1. Extract APK/IPA
|
|
379
|
+
adb pull /data/app/com.example.app/base.apk
|
|
380
|
+
# or use frida-ios-dump for iOS
|
|
381
|
+
|
|
382
|
+
2. Static analysis
|
|
383
|
+
- jadx for Java decompilation
|
|
384
|
+
- Ghidra for native libs
|
|
385
|
+
|
|
386
|
+
3. Dynamic analysis (Frida)
|
|
387
|
+
- Hook SSL pinning bypass
|
|
388
|
+
- Trace API calls
|
|
389
|
+
- Dump runtime secrets
|
|
390
|
+
|
|
391
|
+
4. Common bypasses
|
|
392
|
+
- Root/jailbreak detection
|
|
393
|
+
- SSL pinning
|
|
394
|
+
- Integrity checks
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## CROSS-TOOL INTEGRATION
|
|
400
|
+
|
|
401
|
+
### Ghidra → Frida
|
|
402
|
+
|
|
403
|
+
```python
|
|
404
|
+
# Export function addresses from Ghidra
|
|
405
|
+
# Run as Ghidra script
|
|
406
|
+
fm = currentProgram.getFunctionManager()
|
|
407
|
+
with open("/tmp/functions.txt", "w") as f:
|
|
408
|
+
for func in fm.getFunctions(True):
|
|
409
|
+
f.write(f"{func.getEntryPoint()},{func.getName()}\n")
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
```javascript
|
|
413
|
+
// Import into Frida
|
|
414
|
+
var funcs = {};
|
|
415
|
+
// Load from file or paste
|
|
416
|
+
funcs["0x401000"] = "check_license";
|
|
417
|
+
funcs["0x401100"] = "decrypt_config";
|
|
418
|
+
|
|
419
|
+
for (var addr in funcs) {
|
|
420
|
+
Interceptor.attach(ptr(addr), {
|
|
421
|
+
onEnter: function(args) {
|
|
422
|
+
console.log(funcs[this.context.pc] + " called");
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Binary Ninja → Frida
|
|
429
|
+
|
|
430
|
+
```python
|
|
431
|
+
# Export from binja
|
|
432
|
+
import binaryninja as bn
|
|
433
|
+
import json
|
|
434
|
+
|
|
435
|
+
bv = bn.open_view("./target")
|
|
436
|
+
hooks = {}
|
|
437
|
+
|
|
438
|
+
for func in bv.functions:
|
|
439
|
+
if not func.name.startswith("sub_"):
|
|
440
|
+
hooks[hex(func.start)] = func.name
|
|
441
|
+
|
|
442
|
+
with open("hooks.json", "w") as f:
|
|
443
|
+
json.dump(hooks, f)
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## QUICK REFERENCE
|
|
449
|
+
|
|
450
|
+
### File Analysis
|
|
451
|
+
```bash
|
|
452
|
+
file ./target # File type
|
|
453
|
+
strings ./target | less # Readable strings
|
|
454
|
+
strings -el ./target # Little-endian 16-bit
|
|
455
|
+
objdump -d ./target | less # Disassembly
|
|
456
|
+
readelf -a ./target # ELF info
|
|
457
|
+
nm ./target # Symbols
|
|
458
|
+
ldd ./target # Shared libraries
|
|
459
|
+
checksec ./target # Security features (pwntools)
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
### Memory Layouts
|
|
463
|
+
```
|
|
464
|
+
x86-64 Registers:
|
|
465
|
+
RAX, RBX, RCX, RDX - General purpose
|
|
466
|
+
RSI, RDI - Source/Destination index (args 2, 1)
|
|
467
|
+
RSP - Stack pointer
|
|
468
|
+
RBP - Base pointer
|
|
469
|
+
RIP - Instruction pointer
|
|
470
|
+
R8-R15 - Additional general purpose
|
|
471
|
+
|
|
472
|
+
x86-64 Calling Convention (System V):
|
|
473
|
+
Args: RDI, RSI, RDX, RCX, R8, R9, then stack
|
|
474
|
+
Return: RAX
|
|
475
|
+
|
|
476
|
+
Windows x64:
|
|
477
|
+
Args: RCX, RDX, R8, R9, then stack
|
|
478
|
+
Return: RAX
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
### Common Vulnerability Patterns
|
|
482
|
+
|
|
483
|
+
| Pattern | Ghidra Indicator | Frida Hook |
|
|
484
|
+
|---------|-----------------|------------|
|
|
485
|
+
| Buffer overflow | `strcpy`, `gets`, `sprintf` | Hook and log sizes |
|
|
486
|
+
| Format string | `printf(user_input)` | Hook printf, check args |
|
|
487
|
+
| Integer overflow | Arithmetic before allocation | Hook malloc, trace size |
|
|
488
|
+
| Use-after-free | free() then dereference | Hook free/malloc, track |
|
|
489
|
+
| Command injection | `system()`, `exec()` | Hook and log commands |
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## MULTI-AGENT DEBUGGING
|
|
494
|
+
|
|
495
|
+
When debugging complex issues, use multiple agents:
|
|
496
|
+
|
|
497
|
+
```
|
|
498
|
+
Agent 1: Static Analysis (Ghidra)
|
|
499
|
+
- Map program structure
|
|
500
|
+
- Identify key functions
|
|
501
|
+
- Document findings
|
|
502
|
+
|
|
503
|
+
Agent 2: Dynamic Analysis (Frida)
|
|
504
|
+
- Trace runtime behavior
|
|
505
|
+
- Hook identified functions
|
|
506
|
+
- Capture actual values
|
|
507
|
+
|
|
508
|
+
Agent 3: Cross-verification
|
|
509
|
+
- Compare static vs dynamic findings
|
|
510
|
+
- Identify discrepancies
|
|
511
|
+
- Validate hypotheses
|
|
512
|
+
|
|
513
|
+
Agent 4: Exploit/Fix Development
|
|
514
|
+
- Use verified findings
|
|
515
|
+
- Develop solution
|
|
516
|
+
- Test and iterate
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
## OUTPUT FILES
|
|
522
|
+
|
|
523
|
+
```
|
|
524
|
+
outputs/debug/
|
|
525
|
+
├── analysis/
|
|
526
|
+
│ └── {target}-analysis-{date}.md
|
|
527
|
+
├── hooks/
|
|
528
|
+
│ └── {target}-hooks.js
|
|
529
|
+
├── scripts/
|
|
530
|
+
│ └── {target}-ghidra.py
|
|
531
|
+
└── findings/
|
|
532
|
+
└── {target}-findings.md
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## RESOURCES
|
|
538
|
+
|
|
539
|
+
- **Ghidra:** ghidra-sre.org, ghidra.re (community)
|
|
540
|
+
- **Frida:** frida.re/docs
|
|
541
|
+
- **WinDbg:** docs.microsoft.com/windows-hardware/drivers/debugger
|
|
542
|
+
- **Binary Ninja:** docs.binary.ninja
|
|
543
|
+
- **CTF resources:** ctftime.org, pwnable.kr, exploit.education
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
*"The best debugger is a good understanding of the code."* — Unknown
|
|
548
|
+
|
|
549
|
+
*"Reverse engineering is not about finding vulnerabilities. It's about understanding systems."* — Also Unknown
|