@jshookmcp/jshook 0.2.2 → 0.2.5
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 +661 -661
- package/README.md +15 -6
- package/README.zh.md +19 -4
- package/dist/native/scripts/linux/enum-windows.sh +12 -12
- package/dist/native/scripts/macos/enum-windows.applescript +22 -22
- package/dist/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
- package/dist/native/scripts/windows/enum-windows.ps1 +44 -44
- package/dist/native/scripts/windows/inject-dll.ps1 +21 -21
- package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
- package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
- package/dist/packages/extension-sdk/src/plugin.js +119 -33
- package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
- package/dist/packages/extension-sdk/src/workflow.js +236 -0
- package/dist/src/config/search-defaults.js +161 -0
- package/dist/src/constants.d.ts +3 -0
- package/dist/src/constants.js +4 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +13 -17
- package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
- package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
- package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
- package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
- package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
- package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
- package/dist/src/modules/analyzer/PatternDetector.js +3 -3
- package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
- package/dist/src/modules/browser/BrowserDiscovery.d.ts +6 -5
- package/dist/src/modules/browser/BrowserDiscovery.js +3 -3
- package/dist/src/modules/browser/BrowserModeManager.d.ts +1 -1
- package/dist/src/modules/browser/BrowserModeManager.js +11 -10
- package/dist/src/modules/browser/TabRegistry.js +2 -2
- package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
- package/dist/src/modules/browser/UnifiedBrowserManager.js +19 -4
- package/dist/src/modules/captcha/AICaptchaDetector.d.ts +14 -23
- package/dist/src/modules/captcha/AICaptchaDetector.js +8 -202
- package/dist/src/modules/captcha/CaptchaDetector.d.ts +31 -17
- package/dist/src/modules/captcha/CaptchaDetector.js +1 -1
- package/dist/src/modules/collector/CodeCache.d.ts +2 -2
- package/dist/src/modules/collector/CodeCollector.d.ts +12 -9
- package/dist/src/modules/collector/CodeCollector.js +5 -6
- package/dist/src/modules/collector/DOMInspector.d.ts +3 -2
- package/dist/src/modules/collector/DOMInspector.js +49 -59
- package/dist/src/modules/collector/PageController.d.ts +17 -4
- package/dist/src/modules/collector/PageController.js +2 -5
- package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
- package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
- package/dist/src/modules/crypto/CryptoDetector.js +2 -42
- package/dist/src/modules/crypto/CryptoRules.js +1 -1
- package/dist/src/modules/debugger/BlackboxManager.js +1 -1
- package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
- package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +5 -3
- package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
- package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
- package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +2 -3
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +5 -57
- package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
- package/dist/src/modules/deobfuscator/PackerDeobfuscator.js +1 -1
- package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
- package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
- package/dist/src/modules/deobfuscator/webcrack.js +15 -2
- package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
- package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
- package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
- package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
- package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
- package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
- package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
- package/dist/src/modules/external/ExternalToolRunner.d.ts +1 -1
- package/dist/src/modules/external/ExternalToolRunner.js +26 -23
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
- package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
- package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
- package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
- package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
- package/dist/src/modules/process/LinuxProcessManager.js +4 -2
- package/dist/src/modules/process/MacProcessManager.js +1 -1
- package/dist/src/modules/process/MemoryManager.d.ts +1 -1
- package/dist/src/modules/process/MemoryManager.js +2 -2
- package/dist/src/modules/process/ProcessManager.impl.js +1 -1
- package/dist/src/modules/process/memory/AuditTrail.js +1 -1
- package/dist/src/modules/process/memory/reader.js +35 -3
- package/dist/src/modules/process/memory/regions.enumerate.js +1 -1
- package/dist/src/modules/process/memory/regions.protection.js +42 -9
- package/dist/src/modules/process/memory/scanner.d.ts +5 -1
- package/dist/src/modules/process/memory/scanner.darwin.js +57 -0
- package/dist/src/modules/process/memory/scanner.js +88 -4
- package/dist/src/modules/process/memory/writer.js +44 -4
- package/dist/src/modules/security/ExecutionSandbox.js +7 -8
- package/dist/src/modules/stealth/FingerprintManager.js +1 -1
- package/dist/src/modules/stealth/StealthScripts.d.ts +4 -2
- package/dist/src/modules/stealth/StealthScripts.js +53 -14
- package/dist/src/modules/stealth/StealthVerifier.d.ts +1 -1
- package/dist/src/modules/stealth/StealthVerifier.js +2 -4
- package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
- package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
- package/dist/src/modules/trace/TraceDB.js +12 -6
- package/dist/src/modules/trace/TraceRecorder.js +1 -5
- package/dist/src/native/AntiCheatDetector.js +67 -16
- package/dist/src/native/CodeInjector.js +4 -4
- package/dist/src/native/HardwareBreakpoint.js +25 -16
- package/dist/src/native/HeapAnalyzer.js +2 -2
- package/dist/src/native/MemoryController.js +1 -1
- package/dist/src/native/MemoryScanSession.js +2 -2
- package/dist/src/native/MemoryScanner.js +4 -8
- package/dist/src/native/NativeMemoryManager.impl.js +2 -2
- package/dist/src/native/PEAnalyzer.js +14 -15
- package/dist/src/native/PointerChainEngine.js +2 -4
- package/dist/src/native/ScriptLoader.js +4 -9
- package/dist/src/native/Speedhack.js +1 -1
- package/dist/src/native/StructureAnalyzer.js +52 -33
- package/dist/src/native/Win32API.d.ts +1 -0
- package/dist/src/native/Win32API.js +13 -0
- package/dist/src/native/Win32Debug.js +19 -19
- package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
- package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
- package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
- package/dist/src/server/MCPServer.context.d.ts +2 -1
- package/dist/src/server/MCPServer.d.ts +2 -1
- package/dist/src/server/MCPServer.domain.d.ts +1 -1
- package/dist/src/server/MCPServer.domain.js +81 -16
- package/dist/src/server/MCPServer.js +42 -14
- package/dist/src/server/MCPServer.resources.d.ts +2 -0
- package/dist/src/server/MCPServer.resources.js +91 -0
- package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
- package/dist/src/server/MCPServer.search.helpers.js +2 -2
- package/dist/src/server/MCPServer.tools.js +1 -1
- package/dist/src/server/MCPServer.transport.js +12 -0
- package/dist/src/server/ToolCallContextGuard.d.ts +5 -0
- package/dist/src/server/ToolCallContextGuard.js +85 -0
- package/dist/src/server/ToolRouter.d.ts +26 -10
- package/dist/src/server/ToolRouter.intent.d.ts +26 -0
- package/dist/src/server/ToolRouter.intent.js +77 -0
- package/dist/src/server/ToolRouter.js +103 -284
- package/dist/src/server/ToolRouter.policy.d.ts +22 -0
- package/dist/src/server/ToolRouter.policy.js +163 -0
- package/dist/src/server/ToolRouter.probe.d.ts +17 -0
- package/dist/src/server/ToolRouter.probe.js +103 -0
- package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
- package/dist/src/server/ToolRouter.renderer.js +52 -0
- package/dist/src/server/activation/ActivationController.js +15 -12
- package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
- package/dist/src/server/activation/PredictiveBooster.js +1 -3
- package/dist/src/server/domains/analysis/definitions.js +155 -655
- package/dist/src/server/domains/analysis/handlers.impl.d.ts +8 -8
- package/dist/src/server/domains/analysis/handlers.impl.js +34 -28
- package/dist/src/server/domains/analysis/handlers.web-tools.js +4 -3
- package/dist/src/server/domains/analysis/manifest.js +6 -4
- package/dist/src/server/domains/antidebug/definitions.js +25 -111
- package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
- package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
- package/dist/src/server/domains/browser/definitions.tools.page-core.js +157 -386
- package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
- package/dist/src/server/domains/browser/definitions.tools.runtime.js +61 -174
- package/dist/src/server/domains/browser/definitions.tools.security.js +92 -237
- package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
- package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
- package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
- package/dist/src/server/domains/browser/handlers/facade-initializer.d.ts +3 -3
- package/dist/src/server/domains/browser/handlers/facade-initializer.js +3 -3
- package/dist/src/server/domains/browser/handlers/framework-state.js +231 -3
- package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
- package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
- package/dist/src/server/domains/browser/handlers/stealth-injection.js +8 -2
- package/dist/src/server/domains/browser/handlers.impl.d.ts +15 -12
- package/dist/src/server/domains/browser/handlers.impl.js +5 -6
- package/dist/src/server/domains/browser/manifest.js +37 -13
- package/dist/src/server/domains/coordination/definitions.js +50 -149
- package/dist/src/server/domains/coordination/index.d.ts +20 -1
- package/dist/src/server/domains/coordination/index.js +133 -0
- package/dist/src/server/domains/coordination/manifest.js +15 -0
- package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
- package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
- package/dist/src/server/domains/debugger/manifest.js +9 -2
- package/dist/src/server/domains/encoding/definitions.js +43 -153
- package/dist/src/server/domains/encoding/handlers.base.js +2 -2
- package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
- package/dist/src/server/domains/evidence/definitions.js +42 -0
- package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
- package/dist/src/server/domains/evidence/handlers.js +60 -0
- package/dist/src/server/domains/evidence/index.d.ts +2 -0
- package/dist/src/server/domains/evidence/index.js +2 -0
- package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
- package/dist/src/server/domains/evidence/manifest.js +78 -0
- package/dist/src/server/domains/graphql/definitions.js +53 -141
- package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
- package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
- package/dist/src/server/domains/hooks/ai-handlers.js +4 -70
- package/dist/src/server/domains/hooks/definitions.js +69 -335
- package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
- package/dist/src/server/domains/hooks/manifest.js +1 -2
- package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
- package/dist/src/server/domains/instrumentation/definitions.js +99 -0
- package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
- package/dist/src/server/domains/instrumentation/handlers.js +206 -0
- package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
- package/dist/src/server/domains/instrumentation/index.js +2 -0
- package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
- package/dist/src/server/domains/instrumentation/manifest.js +114 -0
- package/dist/src/server/domains/macro/definitions.js +16 -43
- package/dist/src/server/domains/maintenance/definitions.js +60 -219
- package/dist/src/server/domains/maintenance/handlers.d.ts +2 -2
- package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
- package/dist/src/server/domains/maintenance/handlers.js +2 -2
- package/dist/src/server/domains/memory/definitions.js +387 -559
- package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
- package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
- package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
- package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
- package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
- package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
- package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
- package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
- package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
- package/dist/src/server/domains/memory/handlers/scan.js +97 -0
- package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
- package/dist/src/server/domains/memory/handlers/session.js +49 -0
- package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
- package/dist/src/server/domains/memory/handlers/structure.js +74 -0
- package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
- package/dist/src/server/domains/memory/handlers.impl.js +63 -494
- package/dist/src/server/domains/memory/manifest.js +236 -64
- package/dist/src/server/domains/native-bridge/definitions.js +54 -192
- package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
- package/dist/src/server/domains/native-bridge/index.js +2 -1
- package/dist/src/server/domains/network/auth-extractor.js +1 -1
- package/dist/src/server/domains/network/definitions.js +175 -578
- package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
- package/dist/src/server/domains/network/handlers.base.core.js +623 -0
- package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
- package/dist/src/server/domains/network/handlers.base.js +3 -878
- package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
- package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
- package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
- package/dist/src/server/domains/network/handlers.base.types.js +89 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
- package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
- package/dist/src/server/domains/network/manifest.js +15 -0
- package/dist/src/server/domains/network/replay.js +1 -4
- package/dist/src/server/domains/platform/definitions.js +121 -112
- package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +5 -1
- package/dist/src/server/domains/platform/handlers/bridge-handlers.js +194 -5
- package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
- package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
- package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
- package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
- package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
- package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
- package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
- package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
- package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
- package/dist/src/server/domains/platform/handlers/miniapp-handlers.d.ts +1 -1
- package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +4 -4
- package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
- package/dist/src/server/domains/platform/handlers.d.ts +48 -0
- package/dist/src/server/domains/platform/handlers.js +29 -0
- package/dist/src/server/domains/platform/manifest.js +38 -0
- package/dist/src/server/domains/process/definitions.js +163 -647
- package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
- package/dist/src/server/domains/process/handlers.base.js +7 -462
- package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
- package/dist/src/server/domains/process/handlers.base.process.js +417 -0
- package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
- package/dist/src/server/domains/process/handlers.base.types.js +50 -0
- package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +19 -17
- package/dist/src/server/domains/process/manifest.js +6 -1
- package/dist/src/server/domains/sandbox/definitions.js +11 -33
- package/dist/src/server/domains/sandbox/handlers.js +8 -3
- package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
- package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
- package/dist/src/server/domains/shared/modules.d.ts +0 -2
- package/dist/src/server/domains/shared/modules.js +0 -1
- package/dist/src/server/domains/sourcemap/definitions.js +27 -111
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
- package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
- package/dist/src/server/domains/sourcemap/manifest.js +1 -1
- package/dist/src/server/domains/streaming/definitions.js +36 -148
- package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
- package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
- package/dist/src/server/domains/trace/TraceSummarizer.d.ts +60 -0
- package/dist/src/server/domains/trace/TraceSummarizer.js +112 -0
- package/dist/src/server/domains/trace/definitions.tools.js +51 -176
- package/dist/src/server/domains/trace/handlers.d.ts +2 -1
- package/dist/src/server/domains/trace/handlers.js +62 -9
- package/dist/src/server/domains/trace/index.d.ts +2 -1
- package/dist/src/server/domains/trace/index.js +2 -1
- package/dist/src/server/domains/trace/manifest.js +18 -4
- package/dist/src/server/domains/transform/definitions.js +50 -210
- package/dist/src/server/domains/transform/handlers.impl.transform-base.js +6 -6
- package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
- package/dist/src/server/domains/transform/manifest.d.ts +1 -1
- package/dist/src/server/domains/transform/manifest.js +1 -1
- package/dist/src/server/domains/wasm/definitions.js +55 -232
- package/dist/src/server/domains/wasm/handlers.js +3 -3
- package/dist/src/server/domains/workflow/definitions.js +144 -414
- package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +2 -2
- package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
- package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
- package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
- package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
- package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
- package/dist/src/server/evidence/index.d.ts +2 -0
- package/dist/src/server/evidence/index.js +1 -0
- package/dist/src/server/evidence/types.d.ts +22 -0
- package/dist/src/server/evidence/types.js +1 -0
- package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
- package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
- package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
- package/dist/src/server/extensions/ExtensionManager.js +193 -40
- package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
- package/dist/src/server/extensions/ExtensionManager.roots.js +19 -9
- package/dist/src/server/extensions/plugin-config.js +1 -1
- package/dist/src/server/extensions/plugin-env.d.ts +1 -1
- package/dist/src/server/extensions/plugin-env.js +10 -4
- package/dist/src/server/extensions/types.d.ts +17 -0
- package/dist/src/server/extensions/types.js +1 -1
- package/dist/src/server/http/HttpMiddleware.js +1 -1
- package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
- package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
- package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
- package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
- package/dist/src/server/instrumentation/index.d.ts +2 -0
- package/dist/src/server/instrumentation/index.js +2 -0
- package/dist/src/server/instrumentation/types.d.ts +62 -0
- package/dist/src/server/instrumentation/types.js +7 -0
- package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
- package/dist/src/server/macros/MacroConfigLoader.js +61 -59
- package/dist/src/server/macros/MacroRunner.js +6 -2
- package/dist/src/server/macros/builtins/index.d.ts +2 -3
- package/dist/src/server/macros/builtins/index.js +51 -7
- package/dist/src/server/plugins/PluginContract.d.ts +1 -1
- package/dist/src/server/registry/contracts.d.ts +7 -1
- package/dist/src/server/registry/discovery.js +5 -4
- package/dist/src/server/registry/ensure-browser-core.js +0 -3
- package/dist/src/server/registry/index.js +4 -4
- package/dist/src/server/registry/tool-builder.d.ts +46 -0
- package/dist/src/server/registry/tool-builder.js +105 -0
- package/dist/src/server/sandbox/MCPBridge.d.ts +9 -0
- package/dist/src/server/sandbox/MCPBridge.js +22 -0
- package/dist/src/server/sandbox/QuickJSSandbox.d.ts +4 -1
- package/dist/src/server/sandbox/QuickJSSandbox.js +162 -2
- package/dist/src/server/sandbox/types.d.ts +13 -0
- package/dist/src/server/search/AffinityGraph.d.ts +7 -1
- package/dist/src/server/search/AffinityGraph.js +24 -3
- package/dist/src/server/search/EmbeddingWorker.js +5 -3
- package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
- package/dist/src/server/search/FeedbackTracker.js +26 -0
- package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
- package/dist/src/server/search/QueryNormalizer.js +94 -0
- package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
- package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
- package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
- package/dist/src/server/workflows/WorkflowContract.js +12 -0
- package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
- package/dist/src/server/workflows/WorkflowEngine.js +136 -3
- package/dist/src/types/config.d.ts +0 -14
- package/dist/src/types/deobfuscator.d.ts +0 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/utils/DetailedDataManager.js +2 -0
- package/dist/src/utils/RingBuffer.js +5 -5
- package/dist/src/utils/TokenBudgetManager.js +1 -1
- package/dist/src/utils/UnifiedCacheManager.d.ts +1 -1
- package/dist/src/utils/UnifiedCacheManager.js +3 -3
- package/dist/src/utils/artifactRetention.js +2 -2
- package/dist/src/utils/betterSqlite3.d.ts +11 -0
- package/dist/src/utils/betterSqlite3.js +88 -0
- package/dist/src/utils/browserExecutable.js +2 -2
- package/dist/src/utils/cliFastPath.js +17 -6
- package/dist/src/utils/config.js +4 -26
- package/dist/src/utils/environmentDoctor.js +138 -11
- package/dist/src/utils/outputPaths.js +16 -9
- package/dist/src/utils/parallel.js +1 -3
- package/package.json +76 -72
- package/scripts/postinstall.cjs +37 -37
- package/src/native/scripts/linux/enum-windows.sh +12 -12
- package/src/native/scripts/macos/enum-windows.applescript +22 -22
- package/src/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
- package/src/native/scripts/windows/enum-windows.ps1 +44 -44
- package/src/native/scripts/windows/inject-dll.ps1 +21 -21
- package/workflows/.gitkeep +0 -0
- package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
- package/dist/src/modules/analyzer/AISummarizer.js +0 -122
- package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
- package/dist/src/modules/hook/AIHookGenerator.js +0 -360
- package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
- package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
- package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
- package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
- package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
- package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
- package/dist/src/services/LLMService.d.ts +0 -37
- package/dist/src/services/LLMService.js +0 -233
- package/dist/src/services/prompts/analysis.d.ts +0 -9
- package/dist/src/services/prompts/analysis.js +0 -158
- package/dist/src/services/prompts/crypto.d.ts +0 -2
- package/dist/src/services/prompts/crypto.js +0 -108
- package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
- package/dist/src/services/prompts/deobfuscation.js +0 -300
- package/dist/src/services/prompts/environment.d.ts +0 -16
- package/dist/src/services/prompts/environment.js +0 -372
- package/dist/src/services/prompts/intelligence.d.ts +0 -4
- package/dist/src/services/prompts/intelligence.js +0 -250
- package/dist/src/services/prompts/taint.d.ts +0 -2
- package/dist/src/services/prompts/taint.js +0 -54
|
@@ -1,660 +1,160 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
default: true,
|
|
16
|
-
},
|
|
17
|
-
includeExternal: {
|
|
18
|
-
type: 'boolean',
|
|
19
|
-
description: 'Include external scripts',
|
|
20
|
-
default: true,
|
|
21
|
-
},
|
|
22
|
-
includeDynamic: {
|
|
23
|
-
type: 'boolean',
|
|
24
|
-
description: 'Include dynamically loaded scripts',
|
|
25
|
-
default: false,
|
|
26
|
-
},
|
|
27
|
-
smartMode: {
|
|
28
|
-
type: 'string',
|
|
29
|
-
description: 'Collection mode',
|
|
30
|
-
enum: ['summary', 'priority', 'incremental', 'full'],
|
|
31
|
-
default: 'full',
|
|
32
|
-
},
|
|
33
|
-
compress: {
|
|
34
|
-
type: 'boolean',
|
|
35
|
-
description: 'Enable compression for collected content',
|
|
36
|
-
default: false,
|
|
37
|
-
},
|
|
38
|
-
maxTotalSize: {
|
|
39
|
-
type: 'number',
|
|
40
|
-
description: 'Maximum total collection size in bytes',
|
|
41
|
-
default: 2097152,
|
|
42
|
-
},
|
|
43
|
-
maxFileSize: {
|
|
44
|
-
type: 'number',
|
|
45
|
-
description: 'Maximum single file size in KB',
|
|
46
|
-
default: 500,
|
|
47
|
-
},
|
|
48
|
-
priorities: {
|
|
49
|
-
type: 'array',
|
|
50
|
-
description: 'Preferred URL patterns for priority mode',
|
|
51
|
-
items: { type: 'string' },
|
|
52
|
-
},
|
|
53
|
-
returnSummaryOnly: {
|
|
54
|
-
type: 'boolean',
|
|
55
|
-
description: 'Return summary only (legacy compatibility)',
|
|
56
|
-
default: false,
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
required: ['url'],
|
|
60
|
-
},
|
|
61
|
-
annotations: {
|
|
62
|
-
readOnlyHint: false,
|
|
63
|
-
destructiveHint: false,
|
|
64
|
-
idempotentHint: false,
|
|
65
|
-
openWorldHint: true,
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: 'search_in_scripts',
|
|
70
|
-
description: 'Search collected scripts by keyword or regex pattern.',
|
|
71
|
-
inputSchema: {
|
|
72
|
-
type: 'object',
|
|
73
|
-
properties: {
|
|
74
|
-
keyword: {
|
|
75
|
-
type: 'string',
|
|
76
|
-
description: 'Search keyword or regex pattern',
|
|
77
|
-
},
|
|
78
|
-
isRegex: {
|
|
79
|
-
type: 'boolean',
|
|
80
|
-
description: 'Treat keyword as a regex pattern',
|
|
81
|
-
default: false,
|
|
82
|
-
},
|
|
83
|
-
caseSensitive: {
|
|
84
|
-
type: 'boolean',
|
|
85
|
-
description: 'Enable case-sensitive search',
|
|
86
|
-
default: false,
|
|
87
|
-
},
|
|
88
|
-
contextLines: {
|
|
89
|
-
type: 'number',
|
|
90
|
-
description: 'Context lines before and after each match',
|
|
91
|
-
default: 3,
|
|
92
|
-
},
|
|
93
|
-
maxMatches: {
|
|
94
|
-
type: 'number',
|
|
95
|
-
description: 'Maximum matches to return',
|
|
96
|
-
default: 100,
|
|
97
|
-
},
|
|
98
|
-
returnSummary: {
|
|
99
|
-
type: 'boolean',
|
|
100
|
-
description: 'Return summary data instead of full match payload',
|
|
101
|
-
default: false,
|
|
102
|
-
},
|
|
103
|
-
maxContextSize: {
|
|
104
|
-
type: 'number',
|
|
105
|
-
description: 'Maximum response size in bytes before summary fallback',
|
|
106
|
-
default: 50000,
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
required: ['keyword'],
|
|
110
|
-
},
|
|
111
|
-
annotations: {
|
|
112
|
-
readOnlyHint: true,
|
|
113
|
-
destructiveHint: false,
|
|
114
|
-
idempotentHint: true,
|
|
115
|
-
openWorldHint: false,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
name: 'extract_function_tree',
|
|
120
|
-
description: 'Extract a function and its dependency tree from collected scripts.',
|
|
121
|
-
inputSchema: {
|
|
122
|
-
type: 'object',
|
|
123
|
-
properties: {
|
|
124
|
-
scriptId: {
|
|
125
|
-
type: 'string',
|
|
126
|
-
description: 'Script identifier',
|
|
127
|
-
},
|
|
128
|
-
functionName: {
|
|
129
|
-
type: 'string',
|
|
130
|
-
description: 'Function name to extract',
|
|
131
|
-
},
|
|
132
|
-
maxDepth: {
|
|
133
|
-
type: 'number',
|
|
134
|
-
description: 'Maximum dependency traversal depth',
|
|
135
|
-
default: 3,
|
|
136
|
-
},
|
|
137
|
-
maxSize: {
|
|
138
|
-
type: 'number',
|
|
139
|
-
description: 'Maximum output size in KB',
|
|
140
|
-
default: 500,
|
|
141
|
-
},
|
|
142
|
-
includeComments: {
|
|
143
|
-
type: 'boolean',
|
|
144
|
-
description: 'Include comments in extracted source',
|
|
145
|
-
default: true,
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
required: ['scriptId', 'functionName'],
|
|
149
|
-
},
|
|
150
|
-
annotations: {
|
|
151
|
-
readOnlyHint: false,
|
|
152
|
-
destructiveHint: false,
|
|
153
|
-
idempotentHint: false,
|
|
154
|
-
openWorldHint: false,
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
name: 'deobfuscate',
|
|
159
|
-
description: 'Run webcrack-powered JavaScript deobfuscation with bundle unpacking support.',
|
|
160
|
-
inputSchema: {
|
|
161
|
-
type: 'object',
|
|
162
|
-
properties: {
|
|
163
|
-
code: {
|
|
164
|
-
type: 'string',
|
|
165
|
-
description: 'Obfuscated JavaScript source',
|
|
166
|
-
},
|
|
167
|
-
llm: {
|
|
168
|
-
type: 'string',
|
|
169
|
-
enum: ['gpt-4', 'claude'],
|
|
170
|
-
description: 'Preferred LLM for analysis',
|
|
171
|
-
default: 'gpt-4',
|
|
172
|
-
},
|
|
173
|
-
aggressive: {
|
|
174
|
-
type: 'boolean',
|
|
175
|
-
description: 'Enable aggressive deobfuscation strategy',
|
|
176
|
-
default: false,
|
|
177
|
-
},
|
|
178
|
-
unpack: {
|
|
179
|
-
type: 'boolean',
|
|
180
|
-
description: 'Use webcrack to unpack webpack/browserify bundles when possible',
|
|
181
|
-
default: true,
|
|
182
|
-
},
|
|
183
|
-
unminify: {
|
|
184
|
-
type: 'boolean',
|
|
185
|
-
description: 'Use webcrack to reformat and unminify code before post-processing',
|
|
186
|
-
default: true,
|
|
187
|
-
},
|
|
188
|
-
jsx: {
|
|
189
|
-
type: 'boolean',
|
|
190
|
-
description: 'Ask webcrack to decompile React.createElement trees back to JSX when supported',
|
|
191
|
-
default: true,
|
|
192
|
-
},
|
|
193
|
-
mangle: {
|
|
194
|
-
type: 'boolean',
|
|
195
|
-
description: 'Rename obfuscated identifiers using webcrack mangle pass',
|
|
196
|
-
default: false,
|
|
197
|
-
},
|
|
198
|
-
outputDir: {
|
|
199
|
-
type: 'string',
|
|
200
|
-
description: 'Optional directory where webcrack should save the deobfuscated code and extracted bundle',
|
|
201
|
-
},
|
|
202
|
-
forceOutput: {
|
|
203
|
-
type: 'boolean',
|
|
204
|
-
description: 'Remove outputDir before saving webcrack artifacts',
|
|
205
|
-
default: false,
|
|
206
|
-
},
|
|
207
|
-
includeModuleCode: {
|
|
208
|
-
type: 'boolean',
|
|
209
|
-
description: 'Include unpacked module source in bundle output when returning bundle details',
|
|
210
|
-
default: false,
|
|
211
|
-
},
|
|
212
|
-
maxBundleModules: {
|
|
213
|
-
type: 'number',
|
|
214
|
-
description: 'Maximum number of bundle modules to return in the response',
|
|
215
|
-
default: 100,
|
|
216
|
-
},
|
|
217
|
-
mappings: {
|
|
218
|
-
type: 'array',
|
|
219
|
-
description: 'Optional remapping rules applied to unpacked bundle module paths. Each rule can match against module code or current path.',
|
|
220
|
-
items: {
|
|
221
|
-
type: 'object',
|
|
222
|
-
properties: {
|
|
223
|
-
path: {
|
|
224
|
-
type: 'string',
|
|
225
|
-
description: 'New module path to assign when the rule matches',
|
|
226
|
-
},
|
|
227
|
-
pattern: {
|
|
228
|
-
type: 'string',
|
|
229
|
-
description: 'Text or regex used to match module code/path',
|
|
230
|
-
},
|
|
231
|
-
matchType: {
|
|
232
|
-
type: 'string',
|
|
233
|
-
enum: ['includes', 'regex', 'exact'],
|
|
234
|
-
description: 'How to interpret pattern',
|
|
235
|
-
default: 'includes',
|
|
236
|
-
},
|
|
237
|
-
target: {
|
|
238
|
-
type: 'string',
|
|
239
|
-
enum: ['code', 'path'],
|
|
240
|
-
description: 'Whether to match against module source code or the current module path',
|
|
241
|
-
default: 'code',
|
|
242
|
-
},
|
|
243
|
-
},
|
|
244
|
-
required: ['path', 'pattern'],
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
required: ['code'],
|
|
249
|
-
},
|
|
250
|
-
annotations: {
|
|
251
|
-
readOnlyHint: false,
|
|
252
|
-
destructiveHint: false,
|
|
253
|
-
idempotentHint: false,
|
|
254
|
-
openWorldHint: false,
|
|
255
|
-
},
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
name: 'understand_code',
|
|
259
|
-
description: 'Run semantic code analysis for structure, behavior, and risks.',
|
|
260
|
-
inputSchema: {
|
|
261
|
-
type: 'object',
|
|
262
|
-
properties: {
|
|
263
|
-
code: {
|
|
264
|
-
type: 'string',
|
|
265
|
-
description: 'Source code to analyze',
|
|
266
|
-
},
|
|
267
|
-
context: {
|
|
268
|
-
type: 'object',
|
|
269
|
-
description: 'Additional contextual data',
|
|
270
|
-
},
|
|
271
|
-
focus: {
|
|
272
|
-
type: 'string',
|
|
273
|
-
enum: ['structure', 'business', 'security', 'all'],
|
|
274
|
-
description: 'Analysis focus',
|
|
275
|
-
default: 'all',
|
|
276
|
-
},
|
|
277
|
-
},
|
|
278
|
-
required: ['code'],
|
|
279
|
-
},
|
|
280
|
-
annotations: {
|
|
281
|
-
readOnlyHint: false,
|
|
282
|
-
destructiveHint: false,
|
|
283
|
-
idempotentHint: false,
|
|
284
|
-
openWorldHint: false,
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
name: 'detect_crypto',
|
|
289
|
-
description: 'Detect cryptographic algorithms and usage patterns in source code.',
|
|
290
|
-
inputSchema: {
|
|
291
|
-
type: 'object',
|
|
292
|
-
properties: {
|
|
293
|
-
code: {
|
|
294
|
-
type: 'string',
|
|
295
|
-
description: 'Source code for crypto analysis',
|
|
296
|
-
},
|
|
297
|
-
},
|
|
298
|
-
required: ['code'],
|
|
299
|
-
},
|
|
300
|
-
annotations: {
|
|
301
|
-
readOnlyHint: true,
|
|
302
|
-
destructiveHint: false,
|
|
303
|
-
idempotentHint: true,
|
|
304
|
-
openWorldHint: false,
|
|
305
|
-
},
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
name: 'manage_hooks',
|
|
309
|
-
description: 'Create, inspect, and clear JavaScript runtime hooks.',
|
|
310
|
-
inputSchema: {
|
|
311
|
-
type: 'object',
|
|
312
|
-
properties: {
|
|
313
|
-
action: {
|
|
314
|
-
type: 'string',
|
|
315
|
-
enum: ['create', 'list', 'records', 'clear'],
|
|
316
|
-
description: 'Hook management operation',
|
|
317
|
-
},
|
|
318
|
-
target: {
|
|
319
|
-
type: 'string',
|
|
320
|
-
description: 'Hook target identifier',
|
|
321
|
-
},
|
|
322
|
-
type: {
|
|
323
|
-
type: 'string',
|
|
324
|
-
enum: ['function', 'xhr', 'fetch', 'websocket', 'localstorage', 'cookie'],
|
|
325
|
-
description: 'Hook target type',
|
|
326
|
-
},
|
|
327
|
-
hookAction: {
|
|
328
|
-
type: 'string',
|
|
329
|
-
enum: ['log', 'block', 'modify'],
|
|
330
|
-
description: 'Hook behavior',
|
|
331
|
-
default: 'log',
|
|
332
|
-
},
|
|
333
|
-
customCode: {
|
|
334
|
-
type: 'string',
|
|
335
|
-
description: 'Custom JavaScript hook payload',
|
|
336
|
-
},
|
|
337
|
-
hookId: {
|
|
338
|
-
type: 'string',
|
|
339
|
-
description: 'Hook identifier',
|
|
340
|
-
},
|
|
341
|
-
},
|
|
342
|
-
required: ['action'],
|
|
343
|
-
},
|
|
344
|
-
annotations: {
|
|
345
|
-
readOnlyHint: false,
|
|
346
|
-
destructiveHint: false,
|
|
347
|
-
idempotentHint: false,
|
|
348
|
-
openWorldHint: true,
|
|
349
|
-
},
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
name: 'detect_obfuscation',
|
|
353
|
-
description: 'Detect obfuscation techniques in JavaScript source.',
|
|
354
|
-
inputSchema: {
|
|
355
|
-
type: 'object',
|
|
356
|
-
properties: {
|
|
357
|
-
code: {
|
|
358
|
-
type: 'string',
|
|
359
|
-
description: 'Source code to inspect',
|
|
360
|
-
},
|
|
361
|
-
generateReport: {
|
|
362
|
-
type: 'boolean',
|
|
363
|
-
description: 'Include human-readable report output',
|
|
364
|
-
default: true,
|
|
365
|
-
},
|
|
366
|
-
},
|
|
367
|
-
required: ['code'],
|
|
368
|
-
},
|
|
369
|
-
annotations: {
|
|
370
|
-
readOnlyHint: true,
|
|
371
|
-
destructiveHint: false,
|
|
372
|
-
idempotentHint: true,
|
|
373
|
-
openWorldHint: false,
|
|
374
|
-
},
|
|
375
|
-
},
|
|
376
|
-
{
|
|
377
|
-
name: 'advanced_deobfuscate',
|
|
378
|
-
description: 'Run advanced deobfuscation with webcrack backend (deprecated legacy flags ignored).',
|
|
379
|
-
inputSchema: {
|
|
380
|
-
type: 'object',
|
|
381
|
-
properties: {
|
|
382
|
-
code: {
|
|
383
|
-
type: 'string',
|
|
384
|
-
description: 'Obfuscated JavaScript source',
|
|
385
|
-
},
|
|
386
|
-
detectOnly: {
|
|
387
|
-
type: 'boolean',
|
|
388
|
-
description: 'Only detect techniques without transformation',
|
|
389
|
-
default: false,
|
|
390
|
-
},
|
|
391
|
-
aggressiveVM: {
|
|
392
|
-
type: 'boolean',
|
|
393
|
-
description: 'Enable aggressive VM deobfuscation mode',
|
|
394
|
-
default: false,
|
|
395
|
-
},
|
|
396
|
-
useASTOptimization: {
|
|
397
|
-
type: 'boolean',
|
|
398
|
-
description: 'Apply AST-based optimization after transformation',
|
|
399
|
-
default: true,
|
|
400
|
-
},
|
|
401
|
-
timeout: {
|
|
402
|
-
type: 'number',
|
|
403
|
-
description: 'Operation timeout in milliseconds',
|
|
404
|
-
default: 60000,
|
|
405
|
-
},
|
|
406
|
-
unpack: {
|
|
407
|
-
type: 'boolean',
|
|
408
|
-
description: 'Use webcrack to unpack webpack/browserify bundles before advanced cleanup',
|
|
409
|
-
default: true,
|
|
410
|
-
},
|
|
411
|
-
unminify: {
|
|
412
|
-
type: 'boolean',
|
|
413
|
-
description: 'Use webcrack unminify pass before VM and AST-oriented cleanup',
|
|
414
|
-
default: true,
|
|
415
|
-
},
|
|
416
|
-
jsx: {
|
|
417
|
-
type: 'boolean',
|
|
418
|
-
description: 'Allow webcrack to decompile React.createElement back to JSX when supported',
|
|
419
|
-
default: true,
|
|
420
|
-
},
|
|
421
|
-
mangle: {
|
|
422
|
-
type: 'boolean',
|
|
423
|
-
description: 'Rename obfuscated identifiers during the webcrack phase',
|
|
424
|
-
default: false,
|
|
425
|
-
},
|
|
426
|
-
outputDir: {
|
|
427
|
-
type: 'string',
|
|
428
|
-
description: 'Optional directory where webcrack should save the deobfuscated code and extracted bundle',
|
|
429
|
-
},
|
|
430
|
-
forceOutput: {
|
|
431
|
-
type: 'boolean',
|
|
432
|
-
description: 'Remove outputDir before saving webcrack artifacts',
|
|
433
|
-
default: false,
|
|
434
|
-
},
|
|
435
|
-
includeModuleCode: {
|
|
436
|
-
type: 'boolean',
|
|
437
|
-
description: 'Include unpacked module source in bundle output when returning bundle details',
|
|
438
|
-
default: false,
|
|
439
|
-
},
|
|
440
|
-
maxBundleModules: {
|
|
441
|
-
type: 'number',
|
|
442
|
-
description: 'Maximum number of bundle modules to return in the response',
|
|
443
|
-
default: 100,
|
|
444
|
-
},
|
|
445
|
-
mappings: {
|
|
446
|
-
type: 'array',
|
|
447
|
-
description: 'Optional remapping rules applied to unpacked bundle module paths. Each rule can match against module code or current path.',
|
|
448
|
-
items: {
|
|
449
|
-
type: 'object',
|
|
450
|
-
properties: {
|
|
451
|
-
path: {
|
|
452
|
-
type: 'string',
|
|
453
|
-
description: 'New module path to assign when the rule matches',
|
|
454
|
-
},
|
|
455
|
-
pattern: {
|
|
456
|
-
type: 'string',
|
|
457
|
-
description: 'Text or regex used to match module code/path',
|
|
458
|
-
},
|
|
459
|
-
matchType: {
|
|
460
|
-
type: 'string',
|
|
461
|
-
enum: ['includes', 'regex', 'exact'],
|
|
462
|
-
description: 'How to interpret pattern',
|
|
463
|
-
default: 'includes',
|
|
464
|
-
},
|
|
465
|
-
target: {
|
|
466
|
-
type: 'string',
|
|
467
|
-
enum: ['code', 'path'],
|
|
468
|
-
description: 'Whether to match against module source code or the current module path',
|
|
469
|
-
default: 'code',
|
|
470
|
-
},
|
|
471
|
-
},
|
|
472
|
-
required: ['path', 'pattern'],
|
|
473
|
-
},
|
|
474
|
-
},
|
|
475
|
-
},
|
|
476
|
-
required: ['code'],
|
|
477
|
-
},
|
|
478
|
-
annotations: {
|
|
479
|
-
readOnlyHint: false,
|
|
480
|
-
destructiveHint: false,
|
|
481
|
-
idempotentHint: false,
|
|
482
|
-
openWorldHint: false,
|
|
483
|
-
},
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
name: 'webcrack_unpack',
|
|
487
|
-
description: 'Run webcrack bundle unpacking directly and return extracted module graph details.',
|
|
488
|
-
inputSchema: {
|
|
489
|
-
type: 'object',
|
|
490
|
-
properties: {
|
|
491
|
-
code: {
|
|
492
|
-
type: 'string',
|
|
493
|
-
description: 'Bundled or obfuscated JavaScript source',
|
|
494
|
-
},
|
|
495
|
-
unpack: {
|
|
496
|
-
type: 'boolean',
|
|
497
|
-
description: 'Extract modules from the bundle when supported',
|
|
498
|
-
default: true,
|
|
499
|
-
},
|
|
500
|
-
unminify: {
|
|
501
|
-
type: 'boolean',
|
|
502
|
-
description: 'Unminify the code before extracting bundle modules',
|
|
503
|
-
default: true,
|
|
504
|
-
},
|
|
505
|
-
jsx: {
|
|
506
|
-
type: 'boolean',
|
|
507
|
-
description: 'Decompile React.createElement trees back to JSX when supported',
|
|
508
|
-
default: true,
|
|
509
|
-
},
|
|
510
|
-
mangle: {
|
|
511
|
-
type: 'boolean',
|
|
512
|
-
description: 'Rename obfuscated identifiers during the webcrack pass',
|
|
513
|
-
default: false,
|
|
514
|
-
},
|
|
515
|
-
outputDir: {
|
|
516
|
-
type: 'string',
|
|
517
|
-
description: 'Optional directory where webcrack should save the extracted bundle files',
|
|
518
|
-
},
|
|
519
|
-
forceOutput: {
|
|
520
|
-
type: 'boolean',
|
|
521
|
-
description: 'Remove outputDir before saving webcrack artifacts',
|
|
522
|
-
default: false,
|
|
523
|
-
},
|
|
524
|
-
includeModuleCode: {
|
|
525
|
-
type: 'boolean',
|
|
526
|
-
description: 'Include unpacked module source in bundle output',
|
|
527
|
-
default: false,
|
|
528
|
-
},
|
|
529
|
-
maxBundleModules: {
|
|
530
|
-
type: 'number',
|
|
531
|
-
description: 'Maximum number of bundle modules to return in the response',
|
|
532
|
-
default: 100,
|
|
533
|
-
},
|
|
534
|
-
mappings: {
|
|
535
|
-
type: 'array',
|
|
536
|
-
description: 'Optional remapping rules applied to unpacked bundle module paths. Each rule can match against module code or current path.',
|
|
537
|
-
items: {
|
|
538
|
-
type: 'object',
|
|
539
|
-
properties: {
|
|
540
|
-
path: {
|
|
541
|
-
type: 'string',
|
|
542
|
-
description: 'New module path to assign when the rule matches',
|
|
543
|
-
},
|
|
544
|
-
pattern: {
|
|
545
|
-
type: 'string',
|
|
546
|
-
description: 'Text or regex used to match module code/path',
|
|
547
|
-
},
|
|
548
|
-
matchType: {
|
|
549
|
-
type: 'string',
|
|
550
|
-
enum: ['includes', 'regex', 'exact'],
|
|
551
|
-
description: 'How to interpret pattern',
|
|
552
|
-
default: 'includes',
|
|
553
|
-
},
|
|
554
|
-
target: {
|
|
555
|
-
type: 'string',
|
|
556
|
-
enum: ['code', 'path'],
|
|
557
|
-
description: 'Whether to match against module source code or the current module path',
|
|
558
|
-
default: 'code',
|
|
559
|
-
},
|
|
560
|
-
},
|
|
561
|
-
required: ['path', 'pattern'],
|
|
562
|
-
},
|
|
563
|
-
},
|
|
564
|
-
},
|
|
565
|
-
required: ['code'],
|
|
566
|
-
},
|
|
567
|
-
annotations: {
|
|
568
|
-
readOnlyHint: false,
|
|
569
|
-
destructiveHint: false,
|
|
570
|
-
idempotentHint: false,
|
|
571
|
-
openWorldHint: false,
|
|
572
|
-
},
|
|
573
|
-
},
|
|
574
|
-
{
|
|
575
|
-
name: 'clear_collected_data',
|
|
576
|
-
description: 'Clear collected script data, caches, and in-memory indexes.',
|
|
577
|
-
inputSchema: {
|
|
578
|
-
type: 'object',
|
|
579
|
-
properties: {},
|
|
580
|
-
},
|
|
581
|
-
annotations: {
|
|
582
|
-
readOnlyHint: false,
|
|
583
|
-
destructiveHint: true,
|
|
584
|
-
idempotentHint: false,
|
|
585
|
-
openWorldHint: false,
|
|
586
|
-
},
|
|
587
|
-
},
|
|
588
|
-
{
|
|
589
|
-
name: 'get_collection_stats',
|
|
590
|
-
description: 'Get collection, cache, and compression statistics.',
|
|
591
|
-
inputSchema: {
|
|
592
|
-
type: 'object',
|
|
593
|
-
properties: {},
|
|
594
|
-
},
|
|
595
|
-
annotations: {
|
|
596
|
-
readOnlyHint: true,
|
|
597
|
-
destructiveHint: false,
|
|
598
|
-
idempotentHint: true,
|
|
599
|
-
openWorldHint: false,
|
|
600
|
-
},
|
|
601
|
-
},
|
|
602
|
-
{
|
|
603
|
-
name: 'webpack_enumerate',
|
|
604
|
-
description: 'Enumerate all webpack modules in the current page and optionally search for keywords. Useful for finding hidden APIs, flags, or internal logic in bundled applications.',
|
|
605
|
-
inputSchema: {
|
|
606
|
-
type: 'object',
|
|
607
|
-
properties: {
|
|
608
|
-
searchKeyword: {
|
|
609
|
-
type: 'string',
|
|
610
|
-
description: 'Keyword to search across all module exports (case-insensitive). Leave empty to just list all module IDs.',
|
|
611
|
-
},
|
|
612
|
-
forceRequireAll: {
|
|
613
|
-
type: 'boolean',
|
|
614
|
-
description: 'Force-require every module (slower, but finds lazily-loaded modules). Default: true when searchKeyword provided.',
|
|
615
|
-
default: false,
|
|
616
|
-
},
|
|
617
|
-
maxResults: {
|
|
618
|
-
type: 'number',
|
|
619
|
-
description: 'Maximum number of matching modules to return',
|
|
620
|
-
default: 20,
|
|
621
|
-
},
|
|
1
|
+
import { tool } from '../../registry/tool-builder.js';
|
|
2
|
+
const webcrackMappingsSchema = {
|
|
3
|
+
type: 'array',
|
|
4
|
+
description: 'Remapping rules for unpacked bundle module paths',
|
|
5
|
+
items: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
path: { type: 'string', description: 'New module path when matched' },
|
|
9
|
+
pattern: { type: 'string', description: 'Match text or regex' },
|
|
10
|
+
matchType: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
enum: ['includes', 'regex', 'exact'],
|
|
13
|
+
description: 'How to interpret pattern',
|
|
14
|
+
default: 'includes',
|
|
622
15
|
},
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
openWorldHint: true,
|
|
629
|
-
},
|
|
630
|
-
},
|
|
631
|
-
{
|
|
632
|
-
name: 'source_map_extract',
|
|
633
|
-
description: 'Find and parse JavaScript source maps to recover original source code. Useful for analyzing minified or bundled applications.',
|
|
634
|
-
inputSchema: {
|
|
635
|
-
type: 'object',
|
|
636
|
-
properties: {
|
|
637
|
-
includeContent: {
|
|
638
|
-
type: 'boolean',
|
|
639
|
-
description: 'Include full source file content (can be large). Default: false (only lists recovered file names).',
|
|
640
|
-
default: false,
|
|
641
|
-
},
|
|
642
|
-
filterPath: {
|
|
643
|
-
type: 'string',
|
|
644
|
-
description: 'Only return source files whose path contains this string (e.g., "src/", ".tsx")',
|
|
645
|
-
},
|
|
646
|
-
maxFiles: {
|
|
647
|
-
type: 'number',
|
|
648
|
-
description: 'Maximum number of source files to return',
|
|
649
|
-
default: 50,
|
|
650
|
-
},
|
|
16
|
+
target: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
enum: ['code', 'path'],
|
|
19
|
+
description: 'Match against source code or module path',
|
|
20
|
+
default: 'code',
|
|
651
21
|
},
|
|
652
22
|
},
|
|
653
|
-
|
|
654
|
-
readOnlyHint: true,
|
|
655
|
-
destructiveHint: false,
|
|
656
|
-
idempotentHint: true,
|
|
657
|
-
openWorldHint: false,
|
|
658
|
-
},
|
|
23
|
+
required: ['path', 'pattern'],
|
|
659
24
|
},
|
|
25
|
+
};
|
|
26
|
+
function withWebcrackOpts(b) {
|
|
27
|
+
return b
|
|
28
|
+
.boolean('unpack', 'Unpack webpack/browserify bundles', { default: true })
|
|
29
|
+
.boolean('unminify', 'Reformat and unminify code', { default: true })
|
|
30
|
+
.boolean('jsx', 'Decompile React.createElement to JSX', { default: true })
|
|
31
|
+
.boolean('mangle', 'Rename obfuscated identifiers', { default: false })
|
|
32
|
+
.string('outputDir', 'Directory to save deobfuscated artifacts')
|
|
33
|
+
.boolean('forceOutput', 'Remove outputDir before saving', { default: false })
|
|
34
|
+
.boolean('includeModuleCode', 'Include module source in bundle output', { default: false })
|
|
35
|
+
.number('maxBundleModules', 'Maximum bundle modules to return', { default: 100 })
|
|
36
|
+
.prop('mappings', webcrackMappingsSchema);
|
|
37
|
+
}
|
|
38
|
+
export const coreTools = [
|
|
39
|
+
tool('collect_code')
|
|
40
|
+
.desc('Collect JavaScript from a target website in summary, priority, incremental, or full mode')
|
|
41
|
+
.string('url', 'Target website URL')
|
|
42
|
+
.boolean('includeInline', 'Include inline scripts', { default: true })
|
|
43
|
+
.boolean('includeExternal', 'Include external scripts', { default: true })
|
|
44
|
+
.boolean('includeDynamic', 'Include dynamically loaded scripts', { default: false })
|
|
45
|
+
.enum('smartMode', ['summary', 'priority', 'incremental', 'full'], 'Collection mode', {
|
|
46
|
+
default: 'full',
|
|
47
|
+
})
|
|
48
|
+
.boolean('compress', 'Enable compression', { default: false })
|
|
49
|
+
.number('maxTotalSize', 'Maximum total size in bytes', { default: 2097152 })
|
|
50
|
+
.number('maxFileSize', 'Maximum single file size in KB', { default: 500 })
|
|
51
|
+
.array('priorities', { type: 'string' }, 'Preferred URL patterns for priority mode')
|
|
52
|
+
.boolean('returnSummaryOnly', 'Return summary only', { default: false })
|
|
53
|
+
.required('url')
|
|
54
|
+
.openWorld()
|
|
55
|
+
.build(),
|
|
56
|
+
tool('search_in_scripts')
|
|
57
|
+
.desc('Search collected scripts by keyword or regex pattern')
|
|
58
|
+
.string('keyword', 'Search keyword or regex pattern')
|
|
59
|
+
.boolean('isRegex', 'Treat keyword as regex', { default: false })
|
|
60
|
+
.boolean('caseSensitive', 'Case-sensitive search', { default: false })
|
|
61
|
+
.number('contextLines', 'Context lines around each match', { default: 3 })
|
|
62
|
+
.number('maxMatches', 'Maximum matches', { default: 100 })
|
|
63
|
+
.boolean('returnSummary', 'Return summary instead of full payload', { default: false })
|
|
64
|
+
.number('maxContextSize', 'Max response size before summary fallback', { default: 50000 })
|
|
65
|
+
.required('keyword')
|
|
66
|
+
.readOnly()
|
|
67
|
+
.idempotent()
|
|
68
|
+
.build(),
|
|
69
|
+
tool('extract_function_tree')
|
|
70
|
+
.desc('Extract a function and its dependency tree from collected scripts')
|
|
71
|
+
.string('scriptId', 'Script identifier')
|
|
72
|
+
.string('functionName', 'Function name to extract')
|
|
73
|
+
.number('maxDepth', 'Maximum dependency traversal depth', { default: 3 })
|
|
74
|
+
.number('maxSize', 'Maximum output size in KB', { default: 500 })
|
|
75
|
+
.boolean('includeComments', 'Include comments in extracted source', { default: true })
|
|
76
|
+
.required('scriptId', 'functionName')
|
|
77
|
+
.build(),
|
|
78
|
+
withWebcrackOpts(tool('deobfuscate')
|
|
79
|
+
.desc('Run webcrack-powered JavaScript deobfuscation with bundle unpacking')
|
|
80
|
+
.string('code', 'Obfuscated JavaScript source')
|
|
81
|
+
.enum('llm', ['gpt-4', 'claude'], 'Preferred LLM for analysis', { default: 'gpt-4' })
|
|
82
|
+
.boolean('aggressive', 'Aggressive deobfuscation strategy', { default: false }))
|
|
83
|
+
.required('code')
|
|
84
|
+
.build(),
|
|
85
|
+
tool('understand_code')
|
|
86
|
+
.desc('Run semantic code analysis for structure, behavior, and risks')
|
|
87
|
+
.string('code', 'Source code to analyze')
|
|
88
|
+
.prop('context', { type: 'object', description: 'Additional contextual data' })
|
|
89
|
+
.enum('focus', ['structure', 'business', 'security', 'all'], 'Analysis focus', {
|
|
90
|
+
default: 'all',
|
|
91
|
+
})
|
|
92
|
+
.required('code')
|
|
93
|
+
.build(),
|
|
94
|
+
tool('detect_crypto')
|
|
95
|
+
.desc('Detect cryptographic algorithms and usage patterns in source code')
|
|
96
|
+
.string('code', 'Source code for crypto analysis')
|
|
97
|
+
.required('code')
|
|
98
|
+
.readOnly()
|
|
99
|
+
.idempotent()
|
|
100
|
+
.build(),
|
|
101
|
+
tool('manage_hooks')
|
|
102
|
+
.desc('Create, inspect, and clear JavaScript runtime hooks')
|
|
103
|
+
.enum('action', ['create', 'list', 'records', 'clear'], 'Hook management operation')
|
|
104
|
+
.string('target', 'Hook target identifier')
|
|
105
|
+
.enum('type', ['function', 'xhr', 'fetch', 'websocket', 'localstorage', 'cookie'], 'Hook target type')
|
|
106
|
+
.enum('hookAction', ['log', 'block', 'modify'], 'Hook behavior', { default: 'log' })
|
|
107
|
+
.string('customCode', 'Custom JavaScript hook payload')
|
|
108
|
+
.string('hookId', 'Hook identifier')
|
|
109
|
+
.required('action')
|
|
110
|
+
.openWorld()
|
|
111
|
+
.build(),
|
|
112
|
+
tool('detect_obfuscation')
|
|
113
|
+
.desc('Detect obfuscation techniques in JavaScript source')
|
|
114
|
+
.string('code', 'Source code to inspect')
|
|
115
|
+
.boolean('generateReport', 'Include human-readable report', { default: true })
|
|
116
|
+
.required('code')
|
|
117
|
+
.readOnly()
|
|
118
|
+
.idempotent()
|
|
119
|
+
.build(),
|
|
120
|
+
withWebcrackOpts(tool('advanced_deobfuscate')
|
|
121
|
+
.desc('Advanced deobfuscation with webcrack backend')
|
|
122
|
+
.string('code', 'Obfuscated JavaScript source')
|
|
123
|
+
.boolean('detectOnly', 'Detect only without transformation', { default: false })
|
|
124
|
+
.boolean('aggressiveVM', 'Aggressive VM deobfuscation', { default: false })
|
|
125
|
+
.boolean('useASTOptimization', 'Apply AST optimization after transformation', {
|
|
126
|
+
default: true,
|
|
127
|
+
})
|
|
128
|
+
.number('timeout', 'Operation timeout in ms', { default: 60000 }))
|
|
129
|
+
.required('code')
|
|
130
|
+
.build(),
|
|
131
|
+
withWebcrackOpts(tool('webcrack_unpack')
|
|
132
|
+
.desc('Run webcrack bundle unpacking and return extracted module graph')
|
|
133
|
+
.string('code', 'Bundled or obfuscated JavaScript source'))
|
|
134
|
+
.required('code')
|
|
135
|
+
.build(),
|
|
136
|
+
tool('clear_collected_data')
|
|
137
|
+
.desc('Clear collected script data, caches, and in-memory indexes')
|
|
138
|
+
.destructive()
|
|
139
|
+
.build(),
|
|
140
|
+
tool('get_collection_stats')
|
|
141
|
+
.desc('Get collection, cache, and compression statistics')
|
|
142
|
+
.readOnly()
|
|
143
|
+
.idempotent()
|
|
144
|
+
.build(),
|
|
145
|
+
tool('webpack_enumerate')
|
|
146
|
+
.desc('Enumerate webpack modules in current page and search for keywords')
|
|
147
|
+
.string('searchKeyword', 'Keyword to search across module exports')
|
|
148
|
+
.boolean('forceRequireAll', 'Force-require every module', { default: false })
|
|
149
|
+
.number('maxResults', 'Maximum matching modules', { default: 20 })
|
|
150
|
+
.openWorld()
|
|
151
|
+
.build(),
|
|
152
|
+
tool('source_map_extract')
|
|
153
|
+
.desc('Find and parse JavaScript source maps to recover original source code')
|
|
154
|
+
.boolean('includeContent', 'Include full source file content', { default: false })
|
|
155
|
+
.string('filterPath', 'Filter by path substring')
|
|
156
|
+
.number('maxFiles', 'Maximum source files', { default: 50 })
|
|
157
|
+
.readOnly()
|
|
158
|
+
.idempotent()
|
|
159
|
+
.build(),
|
|
660
160
|
];
|