@jshookmcp/jshook 0.2.3 → 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/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 +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.js +2 -2
- 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 +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/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 +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 +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 +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.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/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/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/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.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/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 +74 -72
- 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
|
@@ -94,6 +94,12 @@ function collectTopHeapAllocations(root, topN) {
|
|
|
94
94
|
}
|
|
95
95
|
return { sampleCount, topAllocations };
|
|
96
96
|
}
|
|
97
|
+
async function PING(cdp) {
|
|
98
|
+
await Promise.race([
|
|
99
|
+
cdp.send('Runtime.evaluate', { expression: '1', returnByValue: true }),
|
|
100
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('cdp_unreachable')), 500)),
|
|
101
|
+
]);
|
|
102
|
+
}
|
|
97
103
|
export class PerformanceMonitor {
|
|
98
104
|
collector;
|
|
99
105
|
cdpSession = null;
|
|
@@ -107,12 +113,6 @@ export class PerformanceMonitor {
|
|
|
107
113
|
this.collector = collector;
|
|
108
114
|
}
|
|
109
115
|
async ensureCDPSession() {
|
|
110
|
-
const PING = async (cdp) => {
|
|
111
|
-
await Promise.race([
|
|
112
|
-
cdp.send('Runtime.evaluate', { expression: '1', returnByValue: true }),
|
|
113
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('cdp_unreachable')), 500)),
|
|
114
|
-
]);
|
|
115
|
-
};
|
|
116
116
|
if (!this.cdpSession) {
|
|
117
117
|
const page = await this.collector.getActivePage();
|
|
118
118
|
this.cdpSession = await Promise.race([
|
|
@@ -133,7 +133,8 @@ export class PerformanceMonitor {
|
|
|
133
133
|
try {
|
|
134
134
|
await this.cdpSession.detach();
|
|
135
135
|
}
|
|
136
|
-
catch {
|
|
136
|
+
catch {
|
|
137
|
+
}
|
|
137
138
|
this.cdpSession = null;
|
|
138
139
|
const page = await this.collector.getActivePage();
|
|
139
140
|
this.cdpSession = await Promise.race([
|
|
@@ -300,38 +300,38 @@ export class PlaywrightNetworkMonitor {
|
|
|
300
300
|
await this.evaluateInPage(script);
|
|
301
301
|
}
|
|
302
302
|
async injectXHRInterceptor(options) {
|
|
303
|
-
const script = `
|
|
304
|
-
(function() {
|
|
305
|
-
if (window.__xhrInterceptorInjected) return;
|
|
306
|
-
window.__xhrInterceptorInjected = true;
|
|
307
|
-
const maxRecords = ${this.MAX_INJECTED_RECORDS};
|
|
308
|
-
const OrigXHR = window.__pwOriginalXMLHttpRequest || window.XMLHttpRequest;
|
|
309
|
-
window.__pwOriginalXMLHttpRequest = OrigXHR;
|
|
310
|
-
if (!window.__xhrRequests) window.__xhrRequests = [];
|
|
311
|
-
window.XMLHttpRequest = function() {
|
|
312
|
-
const xhr = new OrigXHR();
|
|
313
|
-
const origOpen = xhr.open.bind(xhr);
|
|
314
|
-
const origSend = xhr.send.bind(xhr);
|
|
315
|
-
xhr.open = function(method, url, ...rest) {
|
|
316
|
-
xhr.__hookMeta = { method, url, timestamp: Date.now() };
|
|
317
|
-
return origOpen(method, url, ...rest);
|
|
318
|
-
};
|
|
319
|
-
xhr.send = function(body) {
|
|
320
|
-
xhr.addEventListener('load', function() {
|
|
321
|
-
window.__xhrRequests.push({
|
|
322
|
-
...xhr.__hookMeta, body: body ? String(body).slice(0, 2048) : null,
|
|
323
|
-
status: xhr.status, response: xhr.responseText.slice(0, 2048),
|
|
324
|
-
});
|
|
325
|
-
if (window.__xhrRequests.length > maxRecords) {
|
|
326
|
-
window.__xhrRequests.splice(0, window.__xhrRequests.length - maxRecords);
|
|
327
|
-
}
|
|
328
|
-
});
|
|
329
|
-
return origSend(body);
|
|
330
|
-
};
|
|
331
|
-
return xhr;
|
|
332
|
-
};
|
|
333
|
-
console.log('[PlaywrightXHR] XHR interceptor injected');
|
|
334
|
-
})();
|
|
303
|
+
const script = `
|
|
304
|
+
(function() {
|
|
305
|
+
if (window.__xhrInterceptorInjected) return;
|
|
306
|
+
window.__xhrInterceptorInjected = true;
|
|
307
|
+
const maxRecords = ${this.MAX_INJECTED_RECORDS};
|
|
308
|
+
const OrigXHR = window.__pwOriginalXMLHttpRequest || window.XMLHttpRequest;
|
|
309
|
+
window.__pwOriginalXMLHttpRequest = OrigXHR;
|
|
310
|
+
if (!window.__xhrRequests) window.__xhrRequests = [];
|
|
311
|
+
window.XMLHttpRequest = function() {
|
|
312
|
+
const xhr = new OrigXHR();
|
|
313
|
+
const origOpen = xhr.open.bind(xhr);
|
|
314
|
+
const origSend = xhr.send.bind(xhr);
|
|
315
|
+
xhr.open = function(method, url, ...rest) {
|
|
316
|
+
xhr.__hookMeta = { method, url, timestamp: Date.now() };
|
|
317
|
+
return origOpen(method, url, ...rest);
|
|
318
|
+
};
|
|
319
|
+
xhr.send = function(body) {
|
|
320
|
+
xhr.addEventListener('load', function() {
|
|
321
|
+
window.__xhrRequests.push({
|
|
322
|
+
...xhr.__hookMeta, body: body ? String(body).slice(0, 2048) : null,
|
|
323
|
+
status: xhr.status, response: xhr.responseText.slice(0, 2048),
|
|
324
|
+
});
|
|
325
|
+
if (window.__xhrRequests.length > maxRecords) {
|
|
326
|
+
window.__xhrRequests.splice(0, window.__xhrRequests.length - maxRecords);
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
return origSend(body);
|
|
330
|
+
};
|
|
331
|
+
return xhr;
|
|
332
|
+
};
|
|
333
|
+
console.log('[PlaywrightXHR] XHR interceptor injected');
|
|
334
|
+
})();
|
|
335
335
|
`;
|
|
336
336
|
if (options?.persistent) {
|
|
337
337
|
await this.evaluateOnNewDocumentInPage(script);
|
|
@@ -341,36 +341,36 @@ export class PlaywrightNetworkMonitor {
|
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
343
|
async injectFetchInterceptor(options) {
|
|
344
|
-
const script = `
|
|
345
|
-
(function() {
|
|
346
|
-
if (window.__fetchInterceptorInjected) return;
|
|
347
|
-
window.__fetchInterceptorInjected = true;
|
|
348
|
-
const maxRecords = ${this.MAX_INJECTED_RECORDS};
|
|
349
|
-
const origFetch = window.__pwOriginalFetch || window.fetch;
|
|
350
|
-
window.__pwOriginalFetch = origFetch;
|
|
351
|
-
if (!window.__fetchRequests) window.__fetchRequests = [];
|
|
352
|
-
window.fetch = function(...args) {
|
|
353
|
-
const [url, opts] = args;
|
|
354
|
-
const entry = { url: String(url), method: opts?.method || 'GET', timestamp: Date.now() };
|
|
355
|
-
return origFetch.apply(this, args).then(res => {
|
|
356
|
-
entry.status = res.status;
|
|
357
|
-
window.__fetchRequests.push(entry);
|
|
358
|
-
if (window.__fetchRequests.length > maxRecords) {
|
|
359
|
-
window.__fetchRequests.splice(0, window.__fetchRequests.length - maxRecords);
|
|
360
|
-
}
|
|
361
|
-
// Auto-persist compact summary so data survives context compression
|
|
362
|
-
try {
|
|
363
|
-
const s = { url: entry.url, method: entry.method, status: entry.status, ts: entry.timestamp };
|
|
364
|
-
const prev = JSON.parse(localStorage.getItem('__capturedAPIs') || '[]');
|
|
365
|
-
prev.push(s);
|
|
366
|
-
if (prev.length > 500) prev.splice(0, prev.length - 500);
|
|
367
|
-
localStorage.setItem('__capturedAPIs', JSON.stringify(prev));
|
|
368
|
-
} catch(e) {}
|
|
369
|
-
return res;
|
|
370
|
-
});
|
|
371
|
-
};
|
|
372
|
-
console.log('[PlaywrightFetch] Fetch interceptor injected');
|
|
373
|
-
})();
|
|
344
|
+
const script = `
|
|
345
|
+
(function() {
|
|
346
|
+
if (window.__fetchInterceptorInjected) return;
|
|
347
|
+
window.__fetchInterceptorInjected = true;
|
|
348
|
+
const maxRecords = ${this.MAX_INJECTED_RECORDS};
|
|
349
|
+
const origFetch = window.__pwOriginalFetch || window.fetch;
|
|
350
|
+
window.__pwOriginalFetch = origFetch;
|
|
351
|
+
if (!window.__fetchRequests) window.__fetchRequests = [];
|
|
352
|
+
window.fetch = function(...args) {
|
|
353
|
+
const [url, opts] = args;
|
|
354
|
+
const entry = { url: String(url), method: opts?.method || 'GET', timestamp: Date.now() };
|
|
355
|
+
return origFetch.apply(this, args).then(res => {
|
|
356
|
+
entry.status = res.status;
|
|
357
|
+
window.__fetchRequests.push(entry);
|
|
358
|
+
if (window.__fetchRequests.length > maxRecords) {
|
|
359
|
+
window.__fetchRequests.splice(0, window.__fetchRequests.length - maxRecords);
|
|
360
|
+
}
|
|
361
|
+
// Auto-persist compact summary so data survives context compression
|
|
362
|
+
try {
|
|
363
|
+
const s = { url: entry.url, method: entry.method, status: entry.status, ts: entry.timestamp };
|
|
364
|
+
const prev = JSON.parse(localStorage.getItem('__capturedAPIs') || '[]');
|
|
365
|
+
prev.push(s);
|
|
366
|
+
if (prev.length > 500) prev.splice(0, prev.length - 500);
|
|
367
|
+
localStorage.setItem('__capturedAPIs', JSON.stringify(prev));
|
|
368
|
+
} catch(e) {}
|
|
369
|
+
return res;
|
|
370
|
+
});
|
|
371
|
+
};
|
|
372
|
+
console.log('[PlaywrightFetch] Fetch interceptor injected');
|
|
373
|
+
})();
|
|
374
374
|
`;
|
|
375
375
|
if (options?.persistent) {
|
|
376
376
|
await this.evaluateOnNewDocumentInPage(script);
|
|
@@ -3,7 +3,7 @@ export declare abstract class BaseMemoryManager {
|
|
|
3
3
|
abstract readonly platform: string;
|
|
4
4
|
abstract readMemory(pid: number, address: number, size: number): Promise<MemoryReadResult>;
|
|
5
5
|
abstract writeMemory(pid: number, address: number, data: Buffer): Promise<MemoryWriteResult>;
|
|
6
|
-
abstract scanMemory(pid: number, pattern: string, patternType: PatternType): Promise<MemoryScanResult>;
|
|
6
|
+
abstract scanMemory(pid: number, pattern: string, patternType: PatternType, suspendTarget?: boolean): Promise<MemoryScanResult>;
|
|
7
7
|
abstract checkMemoryProtection(pid: number, address: number): Promise<MemoryProtectionInfo>;
|
|
8
8
|
abstract enumerateRegions(pid: number): Promise<{
|
|
9
9
|
success: boolean;
|
|
@@ -42,6 +42,8 @@ export class LinuxProcessManager {
|
|
|
42
42
|
const parts = line.trim().split(/\s+/);
|
|
43
43
|
if (parts.length >= 11) {
|
|
44
44
|
const pid = parseInt(parts[1] || '0', 10);
|
|
45
|
+
if (isNaN(pid))
|
|
46
|
+
continue;
|
|
45
47
|
const cpu = parseFloat(parts[2] || '0');
|
|
46
48
|
const mem = parseFloat(parts[3] || '0');
|
|
47
49
|
const command = parts.slice(10).join(' ');
|
|
@@ -109,31 +109,31 @@ export class MacProcessManager {
|
|
|
109
109
|
if (!process) {
|
|
110
110
|
return [];
|
|
111
111
|
}
|
|
112
|
-
const appleScript = `
|
|
113
|
-
tell application "System Events"
|
|
114
|
-
set processList to {}
|
|
115
|
-
try
|
|
116
|
-
set targetProcess to first process whose unix id is ${pid}
|
|
117
|
-
set procName to name of targetProcess
|
|
118
|
-
set windowList to {}
|
|
119
|
-
|
|
120
|
-
tell targetProcess
|
|
121
|
-
repeat with win in windows
|
|
122
|
-
set winInfo to {|
|
|
123
|
-
title:name of win,
|
|
124
|
-
className:procName,
|
|
125
|
-
processId:${pid},
|
|
126
|
-
handle:"applescript-window"
|
|
127
|
-
|}
|
|
128
|
-
set end of windowList to winInfo
|
|
129
|
-
end repeat
|
|
130
|
-
end tell
|
|
131
|
-
|
|
132
|
-
return windowList
|
|
133
|
-
on error
|
|
134
|
-
return {}
|
|
135
|
-
end try
|
|
136
|
-
end tell
|
|
112
|
+
const appleScript = `
|
|
113
|
+
tell application "System Events"
|
|
114
|
+
set processList to {}
|
|
115
|
+
try
|
|
116
|
+
set targetProcess to first process whose unix id is ${pid}
|
|
117
|
+
set procName to name of targetProcess
|
|
118
|
+
set windowList to {}
|
|
119
|
+
|
|
120
|
+
tell targetProcess
|
|
121
|
+
repeat with win in windows
|
|
122
|
+
set winInfo to {|
|
|
123
|
+
title:name of win,
|
|
124
|
+
className:procName,
|
|
125
|
+
processId:${pid},
|
|
126
|
+
handle:"applescript-window"
|
|
127
|
+
|}
|
|
128
|
+
set end of windowList to winInfo
|
|
129
|
+
end repeat
|
|
130
|
+
end tell
|
|
131
|
+
|
|
132
|
+
return windowList
|
|
133
|
+
on error
|
|
134
|
+
return {}
|
|
135
|
+
end try
|
|
136
|
+
end tell
|
|
137
137
|
`;
|
|
138
138
|
const { stdout } = await execAsync(`osascript -e '${appleScript.replace(/'/g, "'\"'\"'")}' 2>/dev/null || echo "[]"`, { timeout: 5000 });
|
|
139
139
|
const windows = [];
|
|
@@ -15,7 +15,7 @@ export declare class MemoryManager {
|
|
|
15
15
|
}[];
|
|
16
16
|
error?: string;
|
|
17
17
|
}>;
|
|
18
|
-
scanMemory(pid: number, pattern: string, patternType?: PatternType): Promise<MemoryScanResult>;
|
|
18
|
+
scanMemory(pid: number, pattern: string, patternType?: PatternType, suspendTarget?: boolean): Promise<MemoryScanResult>;
|
|
19
19
|
scanMemoryFiltered(pid: number, pattern: string, addresses: string[], patternType?: PatternType): Promise<MemoryScanResult>;
|
|
20
20
|
dumpMemoryRegion(pid: number, startAddress: string, size: number, outputPath: string): Promise<{
|
|
21
21
|
success: boolean;
|
|
@@ -29,8 +29,8 @@ export class MemoryManager {
|
|
|
29
29
|
async batchMemoryWrite(pid, patches) {
|
|
30
30
|
return _batchMemoryWrite(pid, patches, (p, addr, data, enc) => this.writeMemory(p, addr, data, enc));
|
|
31
31
|
}
|
|
32
|
-
async scanMemory(pid, pattern, patternType = 'hex') {
|
|
33
|
-
return _scanMemory(this.platform, pid, pattern, patternType);
|
|
32
|
+
async scanMemory(pid, pattern, patternType = 'hex', suspendTarget = false) {
|
|
33
|
+
return _scanMemory(this.platform, pid, pattern, patternType, suspendTarget);
|
|
34
34
|
}
|
|
35
35
|
async scanMemoryFiltered(pid, pattern, addresses, patternType = 'hex') {
|
|
36
36
|
return _scanMemoryFiltered(pid, pattern, addresses, patternType, (p, addr, size) => this.readMemory(p, addr, size), (p, pat, type) => this.scanMemory(p, pat, type));
|
|
@@ -5,7 +5,7 @@ export class MemoryAuditTrail {
|
|
|
5
5
|
capacity;
|
|
6
6
|
constructor(capacity = 5000) {
|
|
7
7
|
this.capacity = Number.isInteger(capacity) && capacity > 0 ? capacity : 5000;
|
|
8
|
-
this.buffer =
|
|
8
|
+
this.buffer = Array.from({ length: this.capacity });
|
|
9
9
|
}
|
|
10
10
|
record(entry) {
|
|
11
11
|
const fullEntry = {
|
|
@@ -111,55 +111,55 @@ export async function checkDebugPort(platform, pid) {
|
|
|
111
111
|
return { success: false, error: 'Debug port check currently only implemented for Windows' };
|
|
112
112
|
}
|
|
113
113
|
try {
|
|
114
|
-
const psScript = `
|
|
115
|
-
Add-Type @"
|
|
116
|
-
using System;
|
|
117
|
-
using System.Runtime.InteropServices;
|
|
118
|
-
using System.ComponentModel;
|
|
119
|
-
|
|
120
|
-
public class DebugChecker {
|
|
121
|
-
[DllImport("ntdll.dll")]
|
|
122
|
-
public static extern int NtQueryInformationProcess(IntPtr processHandle, int processInformationClass, out IntPtr processInformation, int processInformationLength, out int returnLength);
|
|
123
|
-
|
|
124
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
125
|
-
public static extern IntPtr OpenProcess(int access, bool inherit, int pid);
|
|
126
|
-
|
|
127
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
128
|
-
public static extern bool CloseHandle(IntPtr handle);
|
|
129
|
-
|
|
130
|
-
const int PROCESS_QUERY_INFORMATION = 0x0400;
|
|
131
|
-
const int ProcessDebugPort = 7;
|
|
132
|
-
|
|
133
|
-
public static object Check(int pid) {
|
|
134
|
-
IntPtr hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, false, pid);
|
|
135
|
-
if (hProcess == IntPtr.Zero) {
|
|
136
|
-
int error = Marshal.GetLastWin32Error();
|
|
137
|
-
throw new Win32Exception(error, "Failed to open process");
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
try {
|
|
141
|
-
IntPtr debugPort;
|
|
142
|
-
int returnLength;
|
|
143
|
-
int status = NtQueryInformationProcess(hProcess, ProcessDebugPort, out debugPort, IntPtr.Size, out returnLength);
|
|
144
|
-
|
|
145
|
-
if (status != 0) {
|
|
146
|
-
return new { success = false, error = "NtQueryInformationProcess failed with status: 0x" + status.ToString("X") };
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
return new { success = true, isDebugged = debugPort != IntPtr.Zero };
|
|
150
|
-
} finally {
|
|
151
|
-
CloseHandle(hProcess);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
"@
|
|
156
|
-
|
|
157
|
-
try {
|
|
158
|
-
$result = [DebugChecker]::Check(${pid})
|
|
159
|
-
$result | ConvertTo-Json -Compress
|
|
160
|
-
} catch {
|
|
161
|
-
@{ success = $false; error = $_.Exception.Message } | ConvertTo-Json -Compress
|
|
162
|
-
}
|
|
114
|
+
const psScript = `
|
|
115
|
+
Add-Type @"
|
|
116
|
+
using System;
|
|
117
|
+
using System.Runtime.InteropServices;
|
|
118
|
+
using System.ComponentModel;
|
|
119
|
+
|
|
120
|
+
public class DebugChecker {
|
|
121
|
+
[DllImport("ntdll.dll")]
|
|
122
|
+
public static extern int NtQueryInformationProcess(IntPtr processHandle, int processInformationClass, out IntPtr processInformation, int processInformationLength, out int returnLength);
|
|
123
|
+
|
|
124
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
125
|
+
public static extern IntPtr OpenProcess(int access, bool inherit, int pid);
|
|
126
|
+
|
|
127
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
128
|
+
public static extern bool CloseHandle(IntPtr handle);
|
|
129
|
+
|
|
130
|
+
const int PROCESS_QUERY_INFORMATION = 0x0400;
|
|
131
|
+
const int ProcessDebugPort = 7;
|
|
132
|
+
|
|
133
|
+
public static object Check(int pid) {
|
|
134
|
+
IntPtr hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, false, pid);
|
|
135
|
+
if (hProcess == IntPtr.Zero) {
|
|
136
|
+
int error = Marshal.GetLastWin32Error();
|
|
137
|
+
throw new Win32Exception(error, "Failed to open process");
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
IntPtr debugPort;
|
|
142
|
+
int returnLength;
|
|
143
|
+
int status = NtQueryInformationProcess(hProcess, ProcessDebugPort, out debugPort, IntPtr.Size, out returnLength);
|
|
144
|
+
|
|
145
|
+
if (status != 0) {
|
|
146
|
+
return new { success = false, error = "NtQueryInformationProcess failed with status: 0x" + status.ToString("X") };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return new { success = true, isDebugged = debugPort != IntPtr.Zero };
|
|
150
|
+
} finally {
|
|
151
|
+
CloseHandle(hProcess);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
"@
|
|
156
|
+
|
|
157
|
+
try {
|
|
158
|
+
$result = [DebugChecker]::Check(${pid})
|
|
159
|
+
$result | ConvertTo-Json -Compress
|
|
160
|
+
} catch {
|
|
161
|
+
@{ success = $false; error = $_.Exception.Message } | ConvertTo-Json -Compress
|
|
162
|
+
}
|
|
163
163
|
`;
|
|
164
164
|
const { stdout } = await executePowerShellScript(psScript, {
|
|
165
165
|
maxBuffer: 1024 * 1024,
|