@jshookmcp/jshook 0.2.3 → 0.2.6
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/README.md +14 -5
- package/README.zh.md +18 -3
- 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 +171 -0
- package/dist/packages/extension-sdk/src/workflow.js +272 -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.js +2 -2
- package/dist/src/modules/browser/BrowserModeManager.js +11 -10
- package/dist/src/modules/browser/BrowserPool.d.ts +49 -0
- package/dist/src/modules/browser/BrowserPool.js +288 -0
- 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 +18 -3
- package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
- package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
- package/dist/src/modules/collector/CodeCollector.js +4 -5
- package/dist/src/modules/collector/DOMInspector.js +48 -58
- 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 +4 -2
- package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
- package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.d.ts +5 -0
- package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.js +43 -2
- package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
- package/dist/src/modules/deobfuscator/Deobfuscator.js +9 -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 +1 -2
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
- package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
- 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.js +25 -22
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
- 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/ConsoleMonitor.impl.core.dynamic.js +194 -194
- 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/monitor/PlaywrightNetworkMonitor.js +62 -62
- package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
- package/dist/src/modules/process/LinuxProcessManager.js +2 -0
- package/dist/src/modules/process/MacProcessManager.js +25 -25
- package/dist/src/modules/process/MemoryManager.d.ts +1 -1
- package/dist/src/modules/process/MemoryManager.js +2 -2
- package/dist/src/modules/process/memory/AuditTrail.js +1 -1
- package/dist/src/modules/process/memory/availability.js +49 -49
- package/dist/src/modules/process/memory/injector.js +185 -185
- package/dist/src/modules/process/memory/reader.js +85 -53
- package/dist/src/modules/process/memory/regions.dump.js +51 -51
- package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
- package/dist/src/modules/process/memory/regions.modules.js +80 -80
- package/dist/src/modules/process/memory/regions.protection.js +148 -115
- package/dist/src/modules/process/memory/scanner.d.ts +5 -1
- package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
- package/dist/src/modules/process/memory/scanner.js +88 -4
- package/dist/src/modules/process/memory/scanner.windows.js +124 -124
- package/dist/src/modules/process/memory/writer.js +98 -58
- package/dist/src/modules/security/ExecutionSandbox.js +51 -52
- package/dist/src/modules/stealth/FingerprintManager.js +1 -1
- package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
- package/dist/src/modules/stealth/StealthScripts.js +18 -13
- package/dist/src/modules/stealth/StealthVerifier.js +1 -3
- 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 +75 -69
- package/dist/src/modules/trace/TraceRecorder.js +1 -5
- package/dist/src/native/AntiCheatDetector.js +67 -16
- package/dist/src/native/CodeInjector.js +3 -3
- package/dist/src/native/HardwareBreakpoint.js +24 -15
- 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 +3 -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 +41 -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 +1 -1
- package/dist/src/server/MCPServer.transport.js +12 -0
- package/dist/src/server/ToolCallContextGuard.js +8 -0
- package/dist/src/server/ToolRouter.d.ts +25 -9
- 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.js +26 -20
- package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
- 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 +210 -439
- package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
- package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
- package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
- 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/framework-state.js +27 -9
- 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.d.ts +1 -0
- package/dist/src/server/domains/browser/handlers/stealth-injection.js +3 -0
- package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
- package/dist/src/server/domains/browser/handlers.impl.js +2 -3
- package/dist/src/server/domains/browser/manifest.js +37 -13
- package/dist/src/server/domains/coordination/definitions.js +50 -216
- package/dist/src/server/domains/coordination/index.d.ts +2 -1
- package/dist/src/server/domains/coordination/index.js +1 -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/graphql/handlers.impl.core.runtime.shared.js +77 -77
- package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
- package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
- 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.extensions.js +78 -20
- 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 +4 -0
- package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
- 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.js +3 -3
- 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 +18 -16
- 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/shared-state-board/definitions.d.ts +2 -0
- package/dist/src/server/domains/shared-state-board/definitions.js +78 -0
- package/dist/src/server/domains/shared-state-board/handlers.impl.d.ts +58 -0
- package/dist/src/server/domains/shared-state-board/handlers.impl.js +419 -0
- package/dist/src/server/domains/shared-state-board/index.d.ts +2 -0
- package/dist/src/server/domains/shared-state-board/index.js +2 -0
- package/dist/src/server/domains/shared-state-board/manifest.d.ts +57 -0
- package/dist/src/server/domains/shared-state-board/manifest.js +74 -0
- 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.js +8 -5
- package/dist/src/server/domains/trace/definitions.tools.js +51 -206
- package/dist/src/server/domains/trace/handlers.js +10 -12
- 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 +15 -3
- package/dist/src/server/domains/transform/definitions.js +50 -210
- package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
- 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 +1 -1
- package/dist/src/server/domains/workflow/definitions.js +144 -414
- package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
- package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
- 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 +4 -4
- 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/SseStream.d.ts +21 -0
- package/dist/src/server/http/SseStream.js +129 -0
- 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 +1 -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/QuickJSSandbox.js +16 -5
- package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
- 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/teams/TeamManager.d.ts +43 -0
- package/dist/src/server/teams/TeamManager.js +238 -0
- package/dist/src/server/teams/index.d.ts +1 -0
- package/dist/src/server/teams/index.js +1 -0
- package/dist/src/server/workflows/WorkflowContract.d.ts +44 -4
- package/dist/src/server/workflows/WorkflowContract.js +52 -0
- package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
- package/dist/src/server/workflows/WorkflowEngine.js +314 -4
- package/dist/src/types/config.d.ts +0 -14
- package/dist/src/types/deobfuscator.d.ts +1 -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.js +1 -1
- 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/cache/CachedDecorator.d.ts +8 -0
- package/dist/src/utils/cache/CachedDecorator.js +55 -0
- package/dist/src/utils/cache/PersistentCache.d.ts +33 -0
- package/dist/src/utils/cache/PersistentCache.js +246 -0
- package/dist/src/utils/cache/index.d.ts +2 -0
- package/dist/src/utils/cache/index.js +2 -0
- package/dist/src/utils/cliFastPath.js +5 -8
- 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 +82 -81
- package/scripts/postinstall.cjs +54 -27
- package/workflows/.gitkeep +0 -0
- package/workflows/anti-bot-diagnoser/.jshook-install.json +14 -0
- package/workflows/anti-bot-diagnoser/LICENSE +21 -0
- package/workflows/anti-bot-diagnoser/README.md +105 -0
- package/workflows/anti-bot-diagnoser/docs/agent-recipes.md +44 -0
- package/workflows/anti-bot-diagnoser/meta.yaml +6 -0
- package/workflows/anti-bot-diagnoser/package.json +22 -0
- package/workflows/anti-bot-diagnoser/tsconfig.json +15 -0
- package/workflows/anti-bot-diagnoser/workflow.ts +224 -0
- package/workflows/api-openapi-probe/.jshook-install.json +14 -0
- package/workflows/api-openapi-probe/meta.yaml +6 -0
- package/workflows/api-openapi-probe/package.json +22 -0
- package/workflows/api-openapi-probe/pnpm-lock.yaml +819 -0
- package/workflows/api-openapi-probe/tsconfig.json +15 -0
- package/workflows/api-openapi-probe/workflow.ts +40 -0
- package/workflows/api-probe-batch/.jshook-install.json +14 -0
- package/workflows/api-probe-batch/LICENSE +21 -0
- package/workflows/api-probe-batch/README.md +45 -0
- package/workflows/api-probe-batch/meta.yaml +4 -0
- package/workflows/api-probe-batch/package.json +23 -0
- package/workflows/api-probe-batch/tsconfig.json +16 -0
- package/workflows/api-probe-batch/workflow.ts +111 -0
- package/workflows/auth-bootstrap/.jshook-install.json +14 -0
- package/workflows/auth-bootstrap/LICENSE +21 -0
- package/workflows/auth-bootstrap/README.md +74 -0
- package/workflows/auth-bootstrap/meta.yaml +4 -0
- package/workflows/auth-bootstrap/package.json +23 -0
- package/workflows/auth-bootstrap/tsconfig.json +16 -0
- package/workflows/auth-bootstrap/workflow.ts +141 -0
- package/workflows/auth-extract/.jshook-install.json +14 -0
- package/workflows/auth-extract/meta.yaml +6 -0
- package/workflows/auth-extract/package.json +22 -0
- package/workflows/auth-extract/pnpm-lock.yaml +819 -0
- package/workflows/auth-extract/tsconfig.json +15 -0
- package/workflows/auth-extract/workflow.ts +36 -0
- package/workflows/auth-surface-mapper/.jshook-install.json +14 -0
- package/workflows/auth-surface-mapper/meta.yaml +6 -0
- package/workflows/auth-surface-mapper/package.json +22 -0
- package/workflows/auth-surface-mapper/pnpm-lock.yaml +819 -0
- package/workflows/auth-surface-mapper/tsconfig.json +15 -0
- package/workflows/auth-surface-mapper/workflow.ts +104 -0
- package/workflows/batch-register/.jshook-install.json +14 -0
- package/workflows/batch-register/LICENSE +21 -0
- package/workflows/batch-register/README.md +39 -0
- package/workflows/batch-register/meta.yaml +4 -0
- package/workflows/batch-register/package.json +23 -0
- package/workflows/batch-register/tsconfig.json +16 -0
- package/workflows/batch-register/workflow.ts +67 -0
- package/workflows/bundle-recovery/.jshook-install.json +14 -0
- package/workflows/bundle-recovery/LICENSE +21 -0
- package/workflows/bundle-recovery/README.md +105 -0
- package/workflows/bundle-recovery/docs/agent-recipes.md +44 -0
- package/workflows/bundle-recovery/meta.yaml +6 -0
- package/workflows/bundle-recovery/package.json +22 -0
- package/workflows/bundle-recovery/tsconfig.json +15 -0
- package/workflows/bundle-recovery/workflow.ts +179 -0
- package/workflows/challenge-detector/.jshook-install.json +14 -0
- package/workflows/challenge-detector/meta.yaml +14 -0
- package/workflows/challenge-detector/package.json +22 -0
- package/workflows/challenge-detector/pnpm-lock.yaml +819 -0
- package/workflows/challenge-detector/tsconfig.json +15 -0
- package/workflows/challenge-detector/workflow.ts +298 -0
- package/workflows/deobfuscation-pipeline/.jshook-install.json +14 -0
- package/workflows/deobfuscation-pipeline/meta.yaml +6 -0
- package/workflows/deobfuscation-pipeline/package.json +22 -0
- package/workflows/deobfuscation-pipeline/pnpm-lock.yaml +819 -0
- package/workflows/deobfuscation-pipeline/tsconfig.json +15 -0
- package/workflows/deobfuscation-pipeline/workflow.ts +119 -0
- package/workflows/electron-bridge-mapper/.jshook-install.json +14 -0
- package/workflows/electron-bridge-mapper/meta.yaml +6 -0
- package/workflows/electron-bridge-mapper/package.json +22 -0
- package/workflows/electron-bridge-mapper/pnpm-lock.yaml +819 -0
- package/workflows/electron-bridge-mapper/tsconfig.json +15 -0
- package/workflows/electron-bridge-mapper/workflow.ts +125 -0
- package/workflows/evidence-pack/.jshook-install.json +14 -0
- package/workflows/evidence-pack/LICENSE +21 -0
- package/workflows/evidence-pack/README.md +105 -0
- package/workflows/evidence-pack/docs/agent-recipes.md +44 -0
- package/workflows/evidence-pack/meta.yaml +6 -0
- package/workflows/evidence-pack/package.json +22 -0
- package/workflows/evidence-pack/tsconfig.json +15 -0
- package/workflows/evidence-pack/workflow.ts +154 -0
- package/workflows/js-bundle-search/.jshook-install.json +14 -0
- package/workflows/js-bundle-search/LICENSE +21 -0
- package/workflows/js-bundle-search/README.md +46 -0
- package/workflows/js-bundle-search/meta.yaml +4 -0
- package/workflows/js-bundle-search/package.json +23 -0
- package/workflows/js-bundle-search/tsconfig.json +16 -0
- package/workflows/js-bundle-search/workflow.ts +118 -0
- package/workflows/protocol-registry/.jshook-install.json +14 -0
- package/workflows/protocol-registry/meta.yaml +6 -0
- package/workflows/protocol-registry/package.json +22 -0
- package/workflows/protocol-registry/pnpm-lock.yaml +819 -0
- package/workflows/protocol-registry/tsconfig.json +15 -0
- package/workflows/protocol-registry/workflow.ts +107 -0
- package/workflows/qwen-mail-open-latest/meta.yaml +7 -0
- package/workflows/qwen-mail-open-latest/package.json +22 -0
- package/workflows/qwen-mail-open-latest/pnpm-lock.yaml +819 -0
- package/workflows/qwen-mail-open-latest/tsconfig.json +15 -0
- package/workflows/qwen-mail-open-latest/workflow.ts +77 -0
- package/workflows/register-account-flow/.jshook-install.json +14 -0
- package/workflows/register-account-flow/LICENSE +21 -0
- package/workflows/register-account-flow/README.md +64 -0
- package/workflows/register-account-flow/meta.yaml +4 -0
- package/workflows/register-account-flow/package.json +23 -0
- package/workflows/register-account-flow/tsconfig.json +16 -0
- package/workflows/register-account-flow/workflow.ts +127 -0
- package/workflows/replay-lab/.jshook-install.json +14 -0
- package/workflows/replay-lab/meta.yaml +6 -0
- package/workflows/replay-lab/package.json +22 -0
- package/workflows/replay-lab/pnpm-lock.yaml +819 -0
- package/workflows/replay-lab/tsconfig.json +15 -0
- package/workflows/replay-lab/workflow.ts +106 -0
- package/workflows/script-evidence-scan/.jshook-install.json +14 -0
- package/workflows/script-evidence-scan/LICENSE +21 -0
- package/workflows/script-evidence-scan/README.md +61 -0
- package/workflows/script-evidence-scan/meta.yaml +4 -0
- package/workflows/script-evidence-scan/package.json +23 -0
- package/workflows/script-evidence-scan/tsconfig.json +16 -0
- package/workflows/script-evidence-scan/workflow.ts +89 -0
- package/workflows/signature-hunter/.jshook-install.json +14 -0
- package/workflows/signature-hunter/LICENSE +21 -0
- package/workflows/signature-hunter/README.md +105 -0
- package/workflows/signature-hunter/docs/agent-recipes.md +44 -0
- package/workflows/signature-hunter/meta.yaml +6 -0
- package/workflows/signature-hunter/package.json +22 -0
- package/workflows/signature-hunter/tsconfig.json +15 -0
- package/workflows/signature-hunter/workflow.ts +170 -0
- package/workflows/signing-lineage/.jshook-install.json +14 -0
- package/workflows/signing-lineage/meta.yaml +6 -0
- package/workflows/signing-lineage/package.json +22 -0
- package/workflows/signing-lineage/pnpm-lock.yaml +819 -0
- package/workflows/signing-lineage/tsconfig.json +15 -0
- package/workflows/signing-lineage/workflow.ts +120 -0
- package/workflows/temp-mail-extract-link/.jshook-install.json +14 -0
- package/workflows/temp-mail-extract-link/LICENSE +21 -0
- package/workflows/temp-mail-extract-link/README.md +71 -0
- package/workflows/temp-mail-extract-link/meta.yaml +4 -0
- package/workflows/temp-mail-extract-link/package.json +23 -0
- package/workflows/temp-mail-extract-link/tsconfig.json +16 -0
- package/workflows/temp-mail-extract-link/workflow.ts +221 -0
- package/workflows/temp-mail-open-latest/.jshook-install.json +14 -0
- package/workflows/temp-mail-open-latest/LICENSE +21 -0
- package/workflows/temp-mail-open-latest/README.md +61 -0
- package/workflows/temp-mail-open-latest/meta.yaml +4 -0
- package/workflows/temp-mail-open-latest/package.json +23 -0
- package/workflows/temp-mail-open-latest/tsconfig.json +16 -0
- package/workflows/temp-mail-open-latest/workflow.ts +136 -0
- package/workflows/template/.jshook-install.json +14 -0
- package/workflows/template/LICENSE +21 -0
- package/workflows/template/README.md +45 -0
- package/workflows/template/docs/SKILL.md +111 -0
- package/workflows/template/meta.yaml +6 -0
- package/workflows/template/package.json +22 -0
- package/workflows/template/pnpm-lock.yaml +819 -0
- package/workflows/template/tsconfig.json +15 -0
- package/workflows/template/workflow.ts +73 -0
- package/workflows/web-api-capture-session/.jshook-install.json +14 -0
- package/workflows/web-api-capture-session/LICENSE +21 -0
- package/workflows/web-api-capture-session/README.md +64 -0
- package/workflows/web-api-capture-session/meta.yaml +4 -0
- package/workflows/web-api-capture-session/package.json +23 -0
- package/workflows/web-api-capture-session/tsconfig.json +16 -0
- package/workflows/web-api-capture-session/workflow.ts +124 -0
- package/workflows/ws-protocol-lifter/.jshook-install.json +14 -0
- package/workflows/ws-protocol-lifter/LICENSE +21 -0
- package/workflows/ws-protocol-lifter/README.md +105 -0
- package/workflows/ws-protocol-lifter/docs/agent-recipes.md +44 -0
- package/workflows/ws-protocol-lifter/meta.yaml +6 -0
- package/workflows/ws-protocol-lifter/package.json +22 -0
- package/workflows/ws-protocol-lifter/tsconfig.json +15 -0
- package/workflows/ws-protocol-lifter/workflow.ts +163 -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
|
@@ -67,28 +67,24 @@ export class DOMInspector {
|
|
|
67
67
|
const page = await this.collector.getActivePage();
|
|
68
68
|
const readyStateStatus = await this.waitForReadyState(page);
|
|
69
69
|
const runQuery = async () => page.evaluate((sel, maxLimit) => {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
shadowRootCount += 1;
|
|
86
|
-
}
|
|
70
|
+
const roots = [document];
|
|
71
|
+
const queue = [document];
|
|
72
|
+
let shadowRootCount = 0;
|
|
73
|
+
while (queue.length > 0) {
|
|
74
|
+
const root = queue.shift();
|
|
75
|
+
if (!root)
|
|
76
|
+
continue;
|
|
77
|
+
const elements = Array.from(root.querySelectorAll('*'));
|
|
78
|
+
for (const element of elements) {
|
|
79
|
+
const shadowRoot = element
|
|
80
|
+
.shadowRoot;
|
|
81
|
+
if (shadowRoot) {
|
|
82
|
+
roots.push(shadowRoot);
|
|
83
|
+
queue.push(shadowRoot);
|
|
84
|
+
shadowRootCount += 1;
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
|
-
|
|
90
|
-
};
|
|
91
|
-
const { roots, shadowRootCount } = collectRoots();
|
|
87
|
+
}
|
|
92
88
|
const seen = new Set();
|
|
93
89
|
const results = [];
|
|
94
90
|
let totalMatches = 0;
|
|
@@ -232,28 +228,24 @@ export class DOMInspector {
|
|
|
232
228
|
const page = await this.collector.getActivePage();
|
|
233
229
|
const readyStateStatus = await this.waitForReadyState(page);
|
|
234
230
|
const runQuery = async () => page.evaluate((filter) => {
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
shadowRootCount += 1;
|
|
251
|
-
}
|
|
231
|
+
const roots = [document];
|
|
232
|
+
const queue = [document];
|
|
233
|
+
let shadowRootCount = 0;
|
|
234
|
+
while (queue.length > 0) {
|
|
235
|
+
const root = queue.shift();
|
|
236
|
+
if (!root)
|
|
237
|
+
continue;
|
|
238
|
+
const elements = Array.from(root.querySelectorAll('*'));
|
|
239
|
+
for (const element of elements) {
|
|
240
|
+
const shadowRoot = element
|
|
241
|
+
.shadowRoot;
|
|
242
|
+
if (shadowRoot) {
|
|
243
|
+
roots.push(shadowRoot);
|
|
244
|
+
queue.push(shadowRoot);
|
|
245
|
+
shadowRootCount += 1;
|
|
252
246
|
}
|
|
253
247
|
}
|
|
254
|
-
|
|
255
|
-
};
|
|
256
|
-
const { roots, shadowRootCount } = collectRoots();
|
|
248
|
+
}
|
|
257
249
|
const results = [];
|
|
258
250
|
const seen = new Set();
|
|
259
251
|
const normalizedFilter = filter?.toLowerCase();
|
|
@@ -448,7 +440,7 @@ export class DOMInspector {
|
|
|
448
440
|
? `//${tagName}[contains(text(), "${searchText}")]`
|
|
449
441
|
: `//*[contains(text(), "${searchText}")]`;
|
|
450
442
|
const result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
|
451
|
-
const
|
|
443
|
+
const matchedElements = [];
|
|
452
444
|
for (let i = 0; i < Math.min(result.snapshotLength, 100); i++) {
|
|
453
445
|
const element = result.snapshotItem(i);
|
|
454
446
|
if (!element)
|
|
@@ -465,7 +457,7 @@ export class DOMInspector {
|
|
|
465
457
|
selector = `${element.tagName.toLowerCase()}.${classes[0]}`;
|
|
466
458
|
}
|
|
467
459
|
}
|
|
468
|
-
|
|
460
|
+
matchedElements.push({
|
|
469
461
|
found: true,
|
|
470
462
|
nodeName: element.tagName,
|
|
471
463
|
textContent: element.textContent?.trim(),
|
|
@@ -479,7 +471,7 @@ export class DOMInspector {
|
|
|
479
471
|
visible: style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0',
|
|
480
472
|
});
|
|
481
473
|
}
|
|
482
|
-
return
|
|
474
|
+
return matchedElements;
|
|
483
475
|
}, text, tag);
|
|
484
476
|
logger.info(`findByText: "${text}" - found ${elements.length} elements`);
|
|
485
477
|
return elements;
|
|
@@ -497,32 +489,30 @@ export class DOMInspector {
|
|
|
497
489
|
if (!element) {
|
|
498
490
|
return null;
|
|
499
491
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
return '
|
|
492
|
+
const parts = [];
|
|
493
|
+
let current = element;
|
|
494
|
+
while (current && current !== document.body && current !== document.documentElement) {
|
|
495
|
+
if (current.id) {
|
|
496
|
+
parts.unshift(`//*[@id="${current.id}"]`);
|
|
497
|
+
return parts.join('');
|
|
506
498
|
}
|
|
507
499
|
let ix = 0;
|
|
508
|
-
const siblings =
|
|
500
|
+
const siblings = current.parentElement?.children;
|
|
509
501
|
if (siblings) {
|
|
510
502
|
for (let i = 0; i < siblings.length; i++) {
|
|
511
503
|
const sibling = siblings[i];
|
|
512
504
|
if (!sibling)
|
|
513
505
|
continue;
|
|
514
|
-
if (sibling ===
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
}
|
|
518
|
-
if (sibling.tagName === el.tagName) {
|
|
506
|
+
if (sibling === current)
|
|
507
|
+
break;
|
|
508
|
+
if (sibling.tagName === current.tagName)
|
|
519
509
|
ix++;
|
|
520
|
-
}
|
|
521
510
|
}
|
|
522
511
|
}
|
|
523
|
-
|
|
512
|
+
parts.unshift(`/${current.tagName.toLowerCase()}[${ix + 1}]`);
|
|
513
|
+
current = current.parentElement;
|
|
524
514
|
}
|
|
525
|
-
return
|
|
515
|
+
return '/html/body' + parts.join('');
|
|
526
516
|
}, selector);
|
|
527
517
|
logger.info(`getXPath: ${selector} -> ${xpath}`);
|
|
528
518
|
return xpath;
|
|
@@ -103,13 +103,26 @@ export declare class PageController {
|
|
|
103
103
|
export declare function evaluateWithTimeout<Args extends readonly unknown[], Result>(page: Page, pageFunction: (...args: Args) => Result, ...args: Args): Promise<Awaited<Result>>;
|
|
104
104
|
export declare function evaluateWithTimeout(page: Page, pageFunction: string, ...args: readonly unknown[]): Promise<unknown>;
|
|
105
105
|
export declare function evaluateOnNewDocumentWithTimeout<Args extends readonly unknown[], Result>(page: Page, pageFunction: string | ((...args: never[]) => Result), ...args: Args): Promise<unknown>;
|
|
106
|
-
|
|
106
|
+
interface CoveragePage {
|
|
107
|
+
coverage: {
|
|
108
|
+
startJSCoverage(options?: {
|
|
109
|
+
resetOnNavigation?: boolean;
|
|
110
|
+
reportAnonymousScripts?: boolean;
|
|
111
|
+
}): Promise<void>;
|
|
112
|
+
stopJSCoverage(): Promise<unknown>;
|
|
113
|
+
startCSSCoverage(options?: {
|
|
114
|
+
resetOnNavigation?: boolean;
|
|
115
|
+
}): Promise<void>;
|
|
116
|
+
stopCSSCoverage(): Promise<unknown>;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export declare function coverageStartJSWithTimeout(page: CoveragePage, options?: {
|
|
107
120
|
resetOnNavigation?: boolean;
|
|
108
121
|
reportAnonymousScripts?: boolean;
|
|
109
122
|
}): Promise<void>;
|
|
110
|
-
export declare function coverageStartCSSWithTimeout(page:
|
|
123
|
+
export declare function coverageStartCSSWithTimeout(page: CoveragePage, options?: {
|
|
111
124
|
resetOnNavigation?: boolean;
|
|
112
125
|
}): Promise<void>;
|
|
113
|
-
export declare function coverageStopJSWithTimeout(page:
|
|
114
|
-
export declare function coverageStopCSSWithTimeout(page:
|
|
126
|
+
export declare function coverageStopJSWithTimeout(page: CoveragePage): Promise<unknown>;
|
|
127
|
+
export declare function coverageStopCSSWithTimeout(page: CoveragePage): Promise<unknown>;
|
|
115
128
|
export {};
|
|
@@ -313,10 +313,7 @@ async function checkPageCDPHealth(page, timeoutMs = 500) {
|
|
|
313
313
|
throw new Error('cdp_unreachable');
|
|
314
314
|
});
|
|
315
315
|
try {
|
|
316
|
-
const cdp = await Promise.race([
|
|
317
|
-
page.createCDPSession(),
|
|
318
|
-
timer,
|
|
319
|
-
]);
|
|
316
|
+
const cdp = await Promise.race([page.createCDPSession(), timer]);
|
|
320
317
|
await Promise.race([
|
|
321
318
|
cdp.send('Runtime.evaluate', { expression: '1', returnByValue: true }),
|
|
322
319
|
timer,
|
|
@@ -326,7 +323,7 @@ async function checkPageCDPHealth(page, timeoutMs = 500) {
|
|
|
326
323
|
const msg = err instanceof Error ? err.message : String(err);
|
|
327
324
|
if (msg === 'cdp_unreachable') {
|
|
328
325
|
throw new Error('CDP session unresponsive — the debugger may be blocking page evaluation. ' +
|
|
329
|
-
'Call debugger_disable() before this tool, or run it before debugger_enable().');
|
|
326
|
+
'Call debugger_disable() before this tool, or run it before debugger_enable().', { cause: err });
|
|
330
327
|
}
|
|
331
328
|
throw err;
|
|
332
329
|
}
|
|
@@ -28,7 +28,7 @@ export async function setupWebWorkerTracking(page) {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
export async function collectInlineScripts(page, maxSingleSize, maxFilesPerCollect) {
|
|
31
|
-
const scripts = await page.evaluate((
|
|
31
|
+
const scripts = await page.evaluate((limit) => {
|
|
32
32
|
const scriptElements = Array.from(document.querySelectorAll('script'));
|
|
33
33
|
return scriptElements
|
|
34
34
|
.filter((script) => !script.src && script.textContent)
|
|
@@ -36,8 +36,8 @@ export async function collectInlineScripts(page, maxSingleSize, maxFilesPerColle
|
|
|
36
36
|
let content = script.textContent || '';
|
|
37
37
|
const originalSize = content.length;
|
|
38
38
|
let truncated = false;
|
|
39
|
-
if (content.length >
|
|
40
|
-
content = content.substring(0,
|
|
39
|
+
if (content.length > limit) {
|
|
40
|
+
content = content.substring(0, limit);
|
|
41
41
|
truncated = true;
|
|
42
42
|
}
|
|
43
43
|
return {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { DetectCryptoOptions, DetectCryptoResult } from '../../types/index.js';
|
|
2
|
-
import { type LLMService } from '../../services/LLMService.js';
|
|
3
2
|
import { CryptoRulesManager } from '../crypto/CryptoRules.js';
|
|
4
3
|
export interface SecurityIssue {
|
|
5
4
|
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
@@ -22,9 +21,8 @@ export interface CryptoStrength {
|
|
|
22
21
|
};
|
|
23
22
|
}
|
|
24
23
|
export declare class CryptoDetector {
|
|
25
|
-
private llm;
|
|
26
24
|
private rulesManager;
|
|
27
|
-
constructor(
|
|
25
|
+
constructor(_llm?: any, customRules?: CryptoRulesManager);
|
|
28
26
|
loadCustomRules(json: string): void;
|
|
29
27
|
exportRules(): string;
|
|
30
28
|
detect(options: DetectCryptoOptions): Promise<DetectCryptoResult & {
|
|
@@ -33,7 +31,6 @@ export declare class CryptoDetector {
|
|
|
33
31
|
}>;
|
|
34
32
|
private detectByKeywords;
|
|
35
33
|
private escapeRegex;
|
|
36
|
-
private detectByAI;
|
|
37
34
|
private detectLibraries;
|
|
38
35
|
private detectByAST;
|
|
39
36
|
private mergeParameters;
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import * as parser from '@babel/parser';
|
|
2
2
|
import traverse from '@babel/traverse';
|
|
3
3
|
import * as t from '@babel/types';
|
|
4
|
-
import {} from '../../services/LLMService.js';
|
|
5
|
-
import { generateCryptoDetectionPrompt } from '../../services/prompts/crypto.js';
|
|
6
4
|
import { logger } from '../../utils/logger.js';
|
|
7
|
-
import { CRYPTO_DETECT_LLM_MAX_TOKENS } from '../../constants.js';
|
|
8
5
|
import { CryptoRulesManager } from '../crypto/CryptoRules.js';
|
|
9
6
|
export class CryptoDetector {
|
|
10
|
-
llm;
|
|
11
7
|
rulesManager;
|
|
12
|
-
constructor(
|
|
13
|
-
this.llm = llm;
|
|
8
|
+
constructor(_llm, customRules) {
|
|
14
9
|
this.rulesManager = customRules || new CryptoRulesManager();
|
|
15
10
|
}
|
|
16
11
|
loadCustomRules(json) {
|
|
@@ -36,11 +31,6 @@ export class CryptoDetector {
|
|
|
36
31
|
if (astResults.parameters) {
|
|
37
32
|
this.mergeParameters(algorithms, astResults.parameters);
|
|
38
33
|
}
|
|
39
|
-
const useAI = options.useAI !== false;
|
|
40
|
-
if (useAI) {
|
|
41
|
-
const aiResults = await this.detectByAI(code);
|
|
42
|
-
algorithms.push(...aiResults);
|
|
43
|
-
}
|
|
44
34
|
const mergedAlgorithms = this.mergeResults(algorithms);
|
|
45
35
|
const securityResults = this.evaluateSecurity(mergedAlgorithms, code);
|
|
46
36
|
securityIssues.push(...securityResults);
|
|
@@ -82,36 +72,6 @@ export class CryptoDetector {
|
|
|
82
72
|
escapeRegex(str) {
|
|
83
73
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
84
74
|
}
|
|
85
|
-
async detectByAI(code) {
|
|
86
|
-
try {
|
|
87
|
-
const messages = generateCryptoDetectionPrompt(code);
|
|
88
|
-
const response = await this.llm.chat(messages, {
|
|
89
|
-
temperature: 0.2,
|
|
90
|
-
maxTokens: CRYPTO_DETECT_LLM_MAX_TOKENS,
|
|
91
|
-
});
|
|
92
|
-
const jsonMatch = response.content.match(/\{[\s\S]*\}/);
|
|
93
|
-
if (!jsonMatch)
|
|
94
|
-
return [];
|
|
95
|
-
const result = JSON.parse(jsonMatch[0]);
|
|
96
|
-
if (!Array.isArray(result.algorithms))
|
|
97
|
-
return [];
|
|
98
|
-
return result.algorithms.map((algo) => {
|
|
99
|
-
const a = algo;
|
|
100
|
-
return {
|
|
101
|
-
name: a.name || 'Unknown',
|
|
102
|
-
type: a.type || 'other',
|
|
103
|
-
confidence: a.confidence || 0.5,
|
|
104
|
-
location: { file: 'current', line: 0 },
|
|
105
|
-
parameters: a.parameters,
|
|
106
|
-
usage: a.usage || '',
|
|
107
|
-
};
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
logger.warn('AI crypto detection failed', error);
|
|
112
|
-
return [];
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
75
|
detectLibraries(code) {
|
|
116
76
|
const libraries = [];
|
|
117
77
|
const libraryRules = this.rulesManager.getLibraryRules();
|
|
@@ -308,7 +268,7 @@ export class CryptoDetector {
|
|
|
308
268
|
merged.set(key, algo);
|
|
309
269
|
}
|
|
310
270
|
});
|
|
311
|
-
return Array.from(merged.values()).
|
|
271
|
+
return Array.from(merged.values()).toSorted((a, b) => b.confidence - a.confidence);
|
|
312
272
|
}
|
|
313
273
|
findLineNumber(code, keyword) {
|
|
314
274
|
const lines = code.split('\n');
|
|
@@ -138,7 +138,7 @@ export async function getObjectPropertiesByIdCore(ctx, objectId) {
|
|
|
138
138
|
const message = toErrorMessage(error);
|
|
139
139
|
if (message.includes('Could not find object with given id') ||
|
|
140
140
|
message.includes('Invalid remote object id')) {
|
|
141
|
-
throw new Error('Object handle is expired or invalid. Pause execution again and reacquire objectId from get_scope_variables_enhanced.');
|
|
141
|
+
throw new Error('Object handle is expired or invalid. Pause execution again and reacquire objectId from get_scope_variables_enhanced.', { cause: error });
|
|
142
142
|
}
|
|
143
143
|
throw error;
|
|
144
144
|
}
|
|
@@ -38,7 +38,7 @@ export async function extractFunctionTreeCore(ctx, scriptId, functionName, optio
|
|
|
38
38
|
t = await import('@babel/types');
|
|
39
39
|
}
|
|
40
40
|
catch (error) {
|
|
41
|
-
throw new Error(`Failed to load Babel dependencies. Please install: npm install @babel/parser @babel/traverse @babel/generator @babel/types\nError: ${getErrorMessage(error)}
|
|
41
|
+
throw new Error(`Failed to load Babel dependencies. Please install: npm install @babel/parser @babel/traverse @babel/generator @babel/types\nError: ${getErrorMessage(error)}`, { cause: error });
|
|
42
42
|
}
|
|
43
43
|
let ast;
|
|
44
44
|
try {
|
|
@@ -48,7 +48,9 @@ export async function extractFunctionTreeCore(ctx, scriptId, functionName, optio
|
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
catch (error) {
|
|
51
|
-
throw new Error(`Failed to parse script ${scriptId}: ${getErrorMessage(error)}
|
|
51
|
+
throw new Error(`Failed to parse script ${scriptId}: ${getErrorMessage(error)}`, {
|
|
52
|
+
cause: error,
|
|
53
|
+
});
|
|
52
54
|
}
|
|
53
55
|
const allFunctions = new Map();
|
|
54
56
|
const callGraph = {};
|
|
@@ -101,7 +101,7 @@ export class WatchExpressionManager {
|
|
|
101
101
|
deepEqual(a, b) {
|
|
102
102
|
if (a === b)
|
|
103
103
|
return true;
|
|
104
|
-
if (a
|
|
104
|
+
if (a === null || a === undefined || b === null || b === undefined)
|
|
105
105
|
return false;
|
|
106
106
|
if (!this.isRecord(a) || !this.isRecord(b))
|
|
107
107
|
return false;
|
|
@@ -20,6 +20,7 @@ export interface AdvancedDeobfuscateResult {
|
|
|
20
20
|
detectedTechniques: string[];
|
|
21
21
|
confidence: number;
|
|
22
22
|
warnings: string[];
|
|
23
|
+
cached?: boolean;
|
|
23
24
|
astOptimized?: boolean;
|
|
24
25
|
bundle?: DeobfuscateBundleSummary;
|
|
25
26
|
savedTo?: string;
|
|
@@ -33,6 +34,10 @@ export interface AdvancedDeobfuscateResult {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
export declare class AdvancedDeobfuscator {
|
|
37
|
+
private resultCache;
|
|
38
|
+
private maxCacheSize;
|
|
39
|
+
private generateCacheKey;
|
|
36
40
|
deobfuscate(options: AdvancedDeobfuscateOptions): Promise<AdvancedDeobfuscateResult>;
|
|
41
|
+
private storeCacheEntry;
|
|
37
42
|
private calculateConfidence;
|
|
38
43
|
}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
import { logger } from '../../utils/logger.js';
|
|
2
2
|
import { runWebcrack } from '../deobfuscator/webcrack.js';
|
|
3
3
|
import { detectObfuscationType as detectObfuscationTypeUtil } from '../deobfuscator/Deobfuscator.utils.js';
|
|
4
|
+
import crypto from 'crypto';
|
|
4
5
|
export class AdvancedDeobfuscator {
|
|
6
|
+
resultCache = new Map();
|
|
7
|
+
maxCacheSize = 100;
|
|
8
|
+
generateCacheKey(options) {
|
|
9
|
+
const key = JSON.stringify({
|
|
10
|
+
aggressiveVM: options.aggressiveVM,
|
|
11
|
+
code: options.code.substring(0, 2000),
|
|
12
|
+
detectOnly: options.detectOnly,
|
|
13
|
+
forceOutput: options.forceOutput,
|
|
14
|
+
includeModuleCode: options.includeModuleCode,
|
|
15
|
+
jsx: options.jsx,
|
|
16
|
+
mangle: options.mangle,
|
|
17
|
+
mappings: options.mappings,
|
|
18
|
+
maxBundleModules: options.maxBundleModules,
|
|
19
|
+
outputDir: options.outputDir,
|
|
20
|
+
timeout: options.timeout,
|
|
21
|
+
unpack: options.unpack,
|
|
22
|
+
unminify: options.unminify,
|
|
23
|
+
useASTOptimization: options.useASTOptimization,
|
|
24
|
+
});
|
|
25
|
+
return crypto.createHash('md5').update(key).digest('hex');
|
|
26
|
+
}
|
|
5
27
|
async deobfuscate(options) {
|
|
28
|
+
const cacheKey = this.generateCacheKey(options);
|
|
29
|
+
const cached = this.resultCache.get(cacheKey);
|
|
30
|
+
if (cached) {
|
|
31
|
+
logger.debug('Advanced deobfuscation result from cache');
|
|
32
|
+
return { ...cached, cached: true };
|
|
33
|
+
}
|
|
6
34
|
logger.info('Starting advanced webcrack deobfuscation...');
|
|
7
35
|
const detectedTechniques = detectObfuscationTypeUtil(options.code);
|
|
8
36
|
const warnings = [];
|
|
@@ -16,7 +44,7 @@ export class AdvancedDeobfuscator {
|
|
|
16
44
|
warnings.push('timeout is currently ignored; webcrack controls its own execution flow.');
|
|
17
45
|
}
|
|
18
46
|
if (options.detectOnly) {
|
|
19
|
-
|
|
47
|
+
const result = {
|
|
20
48
|
code: options.code,
|
|
21
49
|
detectedTechniques,
|
|
22
50
|
confidence: Math.min(0.6 + detectedTechniques.length * 0.05, 0.9),
|
|
@@ -28,6 +56,8 @@ export class AdvancedDeobfuscator {
|
|
|
28
56
|
engine: 'webcrack',
|
|
29
57
|
webcrackApplied: false,
|
|
30
58
|
};
|
|
59
|
+
this.storeCacheEntry(cacheKey, result);
|
|
60
|
+
return { ...result, cached: false };
|
|
31
61
|
}
|
|
32
62
|
const webcrackResult = await runWebcrack(options.code, {
|
|
33
63
|
unpack: options.unpack,
|
|
@@ -58,7 +88,7 @@ export class AdvancedDeobfuscator {
|
|
|
58
88
|
detectedTechniques.push('mangle');
|
|
59
89
|
}
|
|
60
90
|
detectedTechniques.push('webcrack');
|
|
61
|
-
|
|
91
|
+
const result = {
|
|
62
92
|
code: webcrackResult.code,
|
|
63
93
|
detectedTechniques: Array.from(new Set(detectedTechniques)),
|
|
64
94
|
confidence: this.calculateConfidence(webcrackResult, detectedTechniques),
|
|
@@ -70,6 +100,17 @@ export class AdvancedDeobfuscator {
|
|
|
70
100
|
engine: 'webcrack',
|
|
71
101
|
webcrackApplied: true,
|
|
72
102
|
};
|
|
103
|
+
this.storeCacheEntry(cacheKey, result);
|
|
104
|
+
return { ...result, cached: false };
|
|
105
|
+
}
|
|
106
|
+
storeCacheEntry(cacheKey, result) {
|
|
107
|
+
if (this.resultCache.size >= this.maxCacheSize) {
|
|
108
|
+
const firstKey = this.resultCache.keys().next().value;
|
|
109
|
+
if (firstKey) {
|
|
110
|
+
this.resultCache.delete(firstKey);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
this.resultCache.set(cacheKey, result);
|
|
73
114
|
}
|
|
74
115
|
calculateConfidence(webcrackResult, detectedTechniques) {
|
|
75
116
|
let confidence = 0.72 + detectedTechniques.length * 0.03;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import type { DeobfuscateOptions, DeobfuscateResult } from '../../types/index.js';
|
|
2
|
-
import { type LLMService } from '../../services/LLMService.js';
|
|
3
2
|
export declare class Deobfuscator {
|
|
4
|
-
private llm?;
|
|
5
3
|
private resultCache;
|
|
6
4
|
private maxCacheSize;
|
|
7
|
-
constructor(
|
|
5
|
+
constructor(legacyDependency?: unknown);
|
|
8
6
|
private generateCacheKey;
|
|
9
7
|
deobfuscate(options: DeobfuscateOptions): Promise<DeobfuscateResult>;
|
|
10
8
|
private detectObfuscationType;
|
|
11
9
|
private calculateReadabilityScore;
|
|
12
10
|
private calculateConfidence;
|
|
13
11
|
private buildAnalysis;
|
|
14
|
-
private llmAnalysis;
|
|
15
12
|
}
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
2
|
import { logger } from '../../utils/logger.js';
|
|
3
|
-
import { DEOBF_LLM_MAX_TOKENS } from '../../constants.js';
|
|
4
|
-
import {} from '../../services/LLMService.js';
|
|
5
|
-
import { generateDeobfuscationPrompt } from '../../services/prompts/deobfuscation.js';
|
|
6
3
|
import { calculateReadabilityScore as calculateReadabilityScoreUtil, detectObfuscationType as detectObfuscationTypeUtil, } from '../deobfuscator/Deobfuscator.utils.js';
|
|
7
4
|
import { runWebcrack } from '../deobfuscator/webcrack.js';
|
|
8
5
|
export class Deobfuscator {
|
|
9
|
-
llm;
|
|
10
6
|
resultCache = new Map();
|
|
11
7
|
maxCacheSize = 100;
|
|
12
|
-
constructor(
|
|
13
|
-
|
|
8
|
+
constructor(legacyDependency) {
|
|
9
|
+
void legacyDependency;
|
|
14
10
|
}
|
|
15
11
|
generateCacheKey(options) {
|
|
16
12
|
const key = JSON.stringify({
|
|
13
|
+
aggressive: options.aggressive,
|
|
17
14
|
code: options.code.substring(0, 2000),
|
|
18
15
|
forceOutput: options.forceOutput,
|
|
19
16
|
includeModuleCode: options.includeModuleCode,
|
|
17
|
+
inlineFunctions: options.inlineFunctions,
|
|
20
18
|
jsx: options.jsx,
|
|
21
|
-
llm:
|
|
19
|
+
llm: false,
|
|
22
20
|
mangle: options.mangle ?? options.renameVariables,
|
|
23
21
|
mappings: options.mappings,
|
|
24
22
|
maxBundleModules: options.maxBundleModules,
|
|
25
23
|
outputDir: options.outputDir,
|
|
24
|
+
preserveLogic: options.preserveLogic,
|
|
26
25
|
unpack: options.unpack,
|
|
27
26
|
unminify: options.unminify,
|
|
28
27
|
});
|
|
@@ -33,6 +32,7 @@ export class Deobfuscator {
|
|
|
33
32
|
const cached = this.resultCache.get(cacheKey);
|
|
34
33
|
if (cached) {
|
|
35
34
|
logger.debug('Deobfuscation result from cache');
|
|
35
|
+
cached.cached = true;
|
|
36
36
|
return cached;
|
|
37
37
|
}
|
|
38
38
|
logger.info('Starting webcrack deobfuscation...');
|
|
@@ -64,13 +64,7 @@ export class Deobfuscator {
|
|
|
64
64
|
logger.error(`webcrack deobfuscation failed: ${reason}`);
|
|
65
65
|
throw new Error(reason);
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
if (this.llm && options.llm) {
|
|
69
|
-
const llmResult = await this.llmAnalysis(webcrackResult.code);
|
|
70
|
-
if (llmResult) {
|
|
71
|
-
analysis = llmResult;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
67
|
+
const analysis = this.buildAnalysis(webcrackResult, obfuscationType);
|
|
74
68
|
const transformations = [
|
|
75
69
|
{
|
|
76
70
|
type: 'webcrack',
|
|
@@ -95,15 +89,6 @@ export class Deobfuscator {
|
|
|
95
89
|
},
|
|
96
90
|
]
|
|
97
91
|
: []),
|
|
98
|
-
...(this.llm && options.llm
|
|
99
|
-
? [
|
|
100
|
-
{
|
|
101
|
-
type: 'llm-analysis',
|
|
102
|
-
description: 'AI-assisted analysis completed after webcrack deobfuscation',
|
|
103
|
-
success: true,
|
|
104
|
-
},
|
|
105
|
-
]
|
|
106
|
-
: []),
|
|
107
92
|
];
|
|
108
93
|
const readabilityScore = this.calculateReadabilityScore(webcrackResult.code);
|
|
109
94
|
const confidence = this.calculateConfidence(webcrackResult, readabilityScore);
|
|
@@ -129,6 +114,7 @@ export class Deobfuscator {
|
|
|
129
114
|
this.resultCache.delete(firstKey);
|
|
130
115
|
}
|
|
131
116
|
}
|
|
117
|
+
result.cached = false;
|
|
132
118
|
this.resultCache.set(cacheKey, result);
|
|
133
119
|
return result;
|
|
134
120
|
}
|
|
@@ -161,20 +147,4 @@ export class Deobfuscator {
|
|
|
161
147
|
}
|
|
162
148
|
return parts.join(' ');
|
|
163
149
|
}
|
|
164
|
-
async llmAnalysis(code) {
|
|
165
|
-
if (!this.llm)
|
|
166
|
-
return null;
|
|
167
|
-
try {
|
|
168
|
-
const messages = generateDeobfuscationPrompt(code);
|
|
169
|
-
const response = await this.llm.chat(messages, {
|
|
170
|
-
temperature: 0.3,
|
|
171
|
-
maxTokens: DEOBF_LLM_MAX_TOKENS,
|
|
172
|
-
});
|
|
173
|
-
return response.content;
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
logger.warn('LLM analysis failed after webcrack deobfuscation', error);
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
150
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { JSVMPDeobfuscatorOptions, JSVMPDeobfuscatorResult } from '../../types/index.js';
|
|
2
|
-
import type { LLMService } from '../../services/LLMService.js';
|
|
3
2
|
export declare class JSVMPDeobfuscator {
|
|
4
|
-
private llm?;
|
|
5
3
|
private readonly sandbox;
|
|
6
|
-
constructor(llm?: LLMService);
|
|
7
4
|
deobfuscate(options: JSVMPDeobfuscatorOptions): Promise<JSVMPDeobfuscatorResult>;
|
|
8
5
|
private detectJSVMP;
|
|
9
6
|
private detectJSVMPWithRegex;
|