@jshookmcp/jshook 0.2.2 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +15 -6
  3. package/README.zh.md +19 -4
  4. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  5. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  6. package/dist/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  7. package/dist/native/scripts/windows/enum-windows.ps1 +44 -44
  8. package/dist/native/scripts/windows/inject-dll.ps1 +21 -21
  9. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  10. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  11. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  12. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  13. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  14. package/dist/src/config/search-defaults.js +161 -0
  15. package/dist/src/constants.d.ts +3 -0
  16. package/dist/src/constants.js +4 -1
  17. package/dist/src/index.d.ts +1 -1
  18. package/dist/src/index.js +13 -17
  19. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  20. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  21. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  22. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  23. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  24. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  25. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  26. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  27. package/dist/src/modules/browser/BrowserDiscovery.d.ts +6 -5
  28. package/dist/src/modules/browser/BrowserDiscovery.js +3 -3
  29. package/dist/src/modules/browser/BrowserModeManager.d.ts +1 -1
  30. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  31. package/dist/src/modules/browser/TabRegistry.js +2 -2
  32. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  33. package/dist/src/modules/browser/UnifiedBrowserManager.js +19 -4
  34. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +14 -23
  35. package/dist/src/modules/captcha/AICaptchaDetector.js +8 -202
  36. package/dist/src/modules/captcha/CaptchaDetector.d.ts +31 -17
  37. package/dist/src/modules/captcha/CaptchaDetector.js +1 -1
  38. package/dist/src/modules/collector/CodeCache.d.ts +2 -2
  39. package/dist/src/modules/collector/CodeCollector.d.ts +12 -9
  40. package/dist/src/modules/collector/CodeCollector.js +5 -6
  41. package/dist/src/modules/collector/DOMInspector.d.ts +3 -2
  42. package/dist/src/modules/collector/DOMInspector.js +49 -59
  43. package/dist/src/modules/collector/PageController.d.ts +17 -4
  44. package/dist/src/modules/collector/PageController.js +2 -5
  45. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  46. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  47. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  48. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  49. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  50. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  51. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +5 -3
  52. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  53. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  54. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  55. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  56. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  57. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +2 -3
  58. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +5 -57
  59. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  60. package/dist/src/modules/deobfuscator/PackerDeobfuscator.js +1 -1
  61. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  62. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  63. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  64. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  65. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  66. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  67. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  68. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  69. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  70. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  71. package/dist/src/modules/external/ExternalToolRunner.d.ts +1 -1
  72. package/dist/src/modules/external/ExternalToolRunner.js +26 -23
  73. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  74. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  75. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  76. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  77. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  78. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  79. package/dist/src/modules/process/LinuxProcessManager.js +4 -2
  80. package/dist/src/modules/process/MacProcessManager.js +1 -1
  81. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  82. package/dist/src/modules/process/MemoryManager.js +2 -2
  83. package/dist/src/modules/process/ProcessManager.impl.js +1 -1
  84. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  85. package/dist/src/modules/process/memory/reader.js +35 -3
  86. package/dist/src/modules/process/memory/regions.enumerate.js +1 -1
  87. package/dist/src/modules/process/memory/regions.protection.js +42 -9
  88. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  89. package/dist/src/modules/process/memory/scanner.darwin.js +57 -0
  90. package/dist/src/modules/process/memory/scanner.js +88 -4
  91. package/dist/src/modules/process/memory/writer.js +44 -4
  92. package/dist/src/modules/security/ExecutionSandbox.js +7 -8
  93. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  94. package/dist/src/modules/stealth/StealthScripts.d.ts +4 -2
  95. package/dist/src/modules/stealth/StealthScripts.js +53 -14
  96. package/dist/src/modules/stealth/StealthVerifier.d.ts +1 -1
  97. package/dist/src/modules/stealth/StealthVerifier.js +2 -4
  98. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  99. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  100. package/dist/src/modules/trace/TraceDB.js +12 -6
  101. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  102. package/dist/src/native/AntiCheatDetector.js +67 -16
  103. package/dist/src/native/CodeInjector.js +4 -4
  104. package/dist/src/native/HardwareBreakpoint.js +25 -16
  105. package/dist/src/native/HeapAnalyzer.js +2 -2
  106. package/dist/src/native/MemoryController.js +1 -1
  107. package/dist/src/native/MemoryScanSession.js +2 -2
  108. package/dist/src/native/MemoryScanner.js +4 -8
  109. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  110. package/dist/src/native/PEAnalyzer.js +14 -15
  111. package/dist/src/native/PointerChainEngine.js +2 -4
  112. package/dist/src/native/ScriptLoader.js +4 -9
  113. package/dist/src/native/Speedhack.js +1 -1
  114. package/dist/src/native/StructureAnalyzer.js +52 -33
  115. package/dist/src/native/Win32API.d.ts +1 -0
  116. package/dist/src/native/Win32API.js +13 -0
  117. package/dist/src/native/Win32Debug.js +19 -19
  118. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  119. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  120. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  121. package/dist/src/server/MCPServer.context.d.ts +2 -1
  122. package/dist/src/server/MCPServer.d.ts +2 -1
  123. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  124. package/dist/src/server/MCPServer.domain.js +81 -16
  125. package/dist/src/server/MCPServer.js +42 -14
  126. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  127. package/dist/src/server/MCPServer.resources.js +91 -0
  128. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  129. package/dist/src/server/MCPServer.search.helpers.js +2 -2
  130. package/dist/src/server/MCPServer.tools.js +1 -1
  131. package/dist/src/server/MCPServer.transport.js +12 -0
  132. package/dist/src/server/ToolCallContextGuard.d.ts +5 -0
  133. package/dist/src/server/ToolCallContextGuard.js +85 -0
  134. package/dist/src/server/ToolRouter.d.ts +26 -10
  135. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  136. package/dist/src/server/ToolRouter.intent.js +77 -0
  137. package/dist/src/server/ToolRouter.js +103 -284
  138. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  139. package/dist/src/server/ToolRouter.policy.js +163 -0
  140. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  141. package/dist/src/server/ToolRouter.probe.js +103 -0
  142. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  143. package/dist/src/server/ToolRouter.renderer.js +52 -0
  144. package/dist/src/server/activation/ActivationController.js +15 -12
  145. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  146. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  147. package/dist/src/server/domains/analysis/definitions.js +155 -655
  148. package/dist/src/server/domains/analysis/handlers.impl.d.ts +8 -8
  149. package/dist/src/server/domains/analysis/handlers.impl.js +34 -28
  150. package/dist/src/server/domains/analysis/handlers.web-tools.js +4 -3
  151. package/dist/src/server/domains/analysis/manifest.js +6 -4
  152. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  153. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  154. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  155. package/dist/src/server/domains/browser/definitions.tools.page-core.js +157 -386
  156. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  157. package/dist/src/server/domains/browser/definitions.tools.runtime.js +61 -174
  158. package/dist/src/server/domains/browser/definitions.tools.security.js +92 -237
  159. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  160. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  161. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  162. package/dist/src/server/domains/browser/handlers/facade-initializer.d.ts +3 -3
  163. package/dist/src/server/domains/browser/handlers/facade-initializer.js +3 -3
  164. package/dist/src/server/domains/browser/handlers/framework-state.js +231 -3
  165. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  166. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  167. package/dist/src/server/domains/browser/handlers/stealth-injection.js +8 -2
  168. package/dist/src/server/domains/browser/handlers.impl.d.ts +15 -12
  169. package/dist/src/server/domains/browser/handlers.impl.js +5 -6
  170. package/dist/src/server/domains/browser/manifest.js +37 -13
  171. package/dist/src/server/domains/coordination/definitions.js +50 -149
  172. package/dist/src/server/domains/coordination/index.d.ts +20 -1
  173. package/dist/src/server/domains/coordination/index.js +133 -0
  174. package/dist/src/server/domains/coordination/manifest.js +15 -0
  175. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  176. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  177. package/dist/src/server/domains/debugger/manifest.js +9 -2
  178. package/dist/src/server/domains/encoding/definitions.js +43 -153
  179. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  180. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  181. package/dist/src/server/domains/evidence/definitions.js +42 -0
  182. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  183. package/dist/src/server/domains/evidence/handlers.js +60 -0
  184. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  185. package/dist/src/server/domains/evidence/index.js +2 -0
  186. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  187. package/dist/src/server/domains/evidence/manifest.js +78 -0
  188. package/dist/src/server/domains/graphql/definitions.js +53 -141
  189. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  190. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  191. package/dist/src/server/domains/hooks/ai-handlers.js +4 -70
  192. package/dist/src/server/domains/hooks/definitions.js +69 -335
  193. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  194. package/dist/src/server/domains/hooks/manifest.js +1 -2
  195. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  196. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  197. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  198. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  199. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  200. package/dist/src/server/domains/instrumentation/index.js +2 -0
  201. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  202. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  203. package/dist/src/server/domains/macro/definitions.js +16 -43
  204. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  205. package/dist/src/server/domains/maintenance/handlers.d.ts +2 -2
  206. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  207. package/dist/src/server/domains/maintenance/handlers.js +2 -2
  208. package/dist/src/server/domains/memory/definitions.js +387 -559
  209. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  210. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  211. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  212. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  213. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  215. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  216. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  217. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  218. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  219. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  220. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  221. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  222. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  223. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  224. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  225. package/dist/src/server/domains/memory/manifest.js +236 -64
  226. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  227. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  228. package/dist/src/server/domains/native-bridge/index.js +2 -1
  229. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  230. package/dist/src/server/domains/network/definitions.js +175 -578
  231. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  232. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  233. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  234. package/dist/src/server/domains/network/handlers.base.js +3 -878
  235. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  236. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  237. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  238. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  239. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  240. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  241. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  242. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  243. package/dist/src/server/domains/network/manifest.js +15 -0
  244. package/dist/src/server/domains/network/replay.js +1 -4
  245. package/dist/src/server/domains/platform/definitions.js +121 -112
  246. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +5 -1
  247. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +194 -5
  248. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  249. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  250. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  251. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  252. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  253. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  254. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  255. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  256. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  257. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  258. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  259. package/dist/src/server/domains/platform/handlers/miniapp-handlers.d.ts +1 -1
  260. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +4 -4
  261. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  262. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  263. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  264. package/dist/src/server/domains/platform/handlers.js +29 -0
  265. package/dist/src/server/domains/platform/manifest.js +38 -0
  266. package/dist/src/server/domains/process/definitions.js +163 -647
  267. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  268. package/dist/src/server/domains/process/handlers.base.js +7 -462
  269. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  270. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  271. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  272. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  273. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +19 -17
  274. package/dist/src/server/domains/process/manifest.js +6 -1
  275. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  276. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  277. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  278. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  279. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  280. package/dist/src/server/domains/shared/modules.js +0 -1
  281. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  284. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  286. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  287. package/dist/src/server/domains/streaming/definitions.js +36 -148
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  289. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  290. package/dist/src/server/domains/trace/TraceSummarizer.d.ts +60 -0
  291. package/dist/src/server/domains/trace/TraceSummarizer.js +112 -0
  292. package/dist/src/server/domains/trace/definitions.tools.js +51 -176
  293. package/dist/src/server/domains/trace/handlers.d.ts +2 -1
  294. package/dist/src/server/domains/trace/handlers.js +62 -9
  295. package/dist/src/server/domains/trace/index.d.ts +2 -1
  296. package/dist/src/server/domains/trace/index.js +2 -1
  297. package/dist/src/server/domains/trace/manifest.js +18 -4
  298. package/dist/src/server/domains/transform/definitions.js +50 -210
  299. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +6 -6
  300. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  301. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  302. package/dist/src/server/domains/transform/manifest.js +1 -1
  303. package/dist/src/server/domains/wasm/definitions.js +55 -232
  304. package/dist/src/server/domains/wasm/handlers.js +3 -3
  305. package/dist/src/server/domains/workflow/definitions.js +144 -414
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +2 -2
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  308. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  309. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  310. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  311. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  312. package/dist/src/server/evidence/index.d.ts +2 -0
  313. package/dist/src/server/evidence/index.js +1 -0
  314. package/dist/src/server/evidence/types.d.ts +22 -0
  315. package/dist/src/server/evidence/types.js +1 -0
  316. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  317. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  318. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  320. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  321. package/dist/src/server/extensions/ExtensionManager.roots.js +19 -9
  322. package/dist/src/server/extensions/plugin-config.js +1 -1
  323. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  324. package/dist/src/server/extensions/plugin-env.js +10 -4
  325. package/dist/src/server/extensions/types.d.ts +17 -0
  326. package/dist/src/server/extensions/types.js +1 -1
  327. package/dist/src/server/http/HttpMiddleware.js +1 -1
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  329. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  331. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  332. package/dist/src/server/instrumentation/index.d.ts +2 -0
  333. package/dist/src/server/instrumentation/index.js +2 -0
  334. package/dist/src/server/instrumentation/types.d.ts +62 -0
  335. package/dist/src/server/instrumentation/types.js +7 -0
  336. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  337. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  338. package/dist/src/server/macros/MacroRunner.js +6 -2
  339. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  340. package/dist/src/server/macros/builtins/index.js +51 -7
  341. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  342. package/dist/src/server/registry/contracts.d.ts +7 -1
  343. package/dist/src/server/registry/discovery.js +5 -4
  344. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  345. package/dist/src/server/registry/index.js +4 -4
  346. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  347. package/dist/src/server/registry/tool-builder.js +105 -0
  348. package/dist/src/server/sandbox/MCPBridge.d.ts +9 -0
  349. package/dist/src/server/sandbox/MCPBridge.js +22 -0
  350. package/dist/src/server/sandbox/QuickJSSandbox.d.ts +4 -1
  351. package/dist/src/server/sandbox/QuickJSSandbox.js +162 -2
  352. package/dist/src/server/sandbox/types.d.ts +13 -0
  353. package/dist/src/server/search/AffinityGraph.d.ts +7 -1
  354. package/dist/src/server/search/AffinityGraph.js +24 -3
  355. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  356. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  357. package/dist/src/server/search/FeedbackTracker.js +26 -0
  358. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  359. package/dist/src/server/search/QueryNormalizer.js +94 -0
  360. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  361. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  362. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  363. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  364. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  365. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  366. package/dist/src/types/config.d.ts +0 -14
  367. package/dist/src/types/deobfuscator.d.ts +0 -1
  368. package/dist/src/types/index.d.ts +1 -1
  369. package/dist/src/utils/DetailedDataManager.js +2 -0
  370. package/dist/src/utils/RingBuffer.js +5 -5
  371. package/dist/src/utils/TokenBudgetManager.js +1 -1
  372. package/dist/src/utils/UnifiedCacheManager.d.ts +1 -1
  373. package/dist/src/utils/UnifiedCacheManager.js +3 -3
  374. package/dist/src/utils/artifactRetention.js +2 -2
  375. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  376. package/dist/src/utils/betterSqlite3.js +88 -0
  377. package/dist/src/utils/browserExecutable.js +2 -2
  378. package/dist/src/utils/cliFastPath.js +17 -6
  379. package/dist/src/utils/config.js +4 -26
  380. package/dist/src/utils/environmentDoctor.js +138 -11
  381. package/dist/src/utils/outputPaths.js +16 -9
  382. package/dist/src/utils/parallel.js +1 -3
  383. package/package.json +76 -72
  384. package/scripts/postinstall.cjs +37 -37
  385. package/src/native/scripts/linux/enum-windows.sh +12 -12
  386. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  387. package/src/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  388. package/src/native/scripts/windows/enum-windows.ps1 +44 -44
  389. package/src/native/scripts/windows/inject-dll.ps1 +21 -21
  390. package/workflows/.gitkeep +0 -0
  391. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  392. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  393. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  394. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  395. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  396. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  397. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  398. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  399. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  400. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  401. package/dist/src/services/LLMService.d.ts +0 -37
  402. package/dist/src/services/LLMService.js +0 -233
  403. package/dist/src/services/prompts/analysis.d.ts +0 -9
  404. package/dist/src/services/prompts/analysis.js +0 -158
  405. package/dist/src/services/prompts/crypto.d.ts +0 -2
  406. package/dist/src/services/prompts/crypto.js +0 -108
  407. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  408. package/dist/src/services/prompts/deobfuscation.js +0 -300
  409. package/dist/src/services/prompts/environment.d.ts +0 -16
  410. package/dist/src/services/prompts/environment.js +0 -372
  411. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  412. package/dist/src/services/prompts/intelligence.js +0 -250
  413. package/dist/src/services/prompts/taint.d.ts +0 -2
  414. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,28 +1,37 @@
1
1
  import { memoryScanToolDefinitions } from './definitions.js';
2
2
  import { MemoryScanHandlers } from './handlers.impl.js';
3
- import { memoryScanner } from '../../../native/MemoryScanner.js';
4
- import { scanSessionManager } from '../../../native/MemoryScanSession.js';
5
- import { pointerChainEngine } from '../../../native/PointerChainEngine.js';
6
- import { structureAnalyzer } from '../../../native/StructureAnalyzer.js';
7
- import { codeInjector } from '../../../native/CodeInjector.js';
8
- import { memoryController } from '../../../native/MemoryController.js';
9
3
  const DOMAIN = 'memory';
10
4
  const DEP_KEY = 'memoryScanHandlers';
11
- const IS_WIN32 = process.platform === 'win32';
12
- function ensure(ctx) {
5
+ const EFFECTIVE_PLATFORM = process.env.JSHOOK_REGISTRY_PLATFORM === 'win32' ||
6
+ process.env.JSHOOK_REGISTRY_PLATFORM === 'linux' ||
7
+ process.env.JSHOOK_REGISTRY_PLATFORM === 'darwin'
8
+ ? process.env.JSHOOK_REGISTRY_PLATFORM
9
+ : process.platform;
10
+ const IS_WIN32 = EFFECTIVE_PLATFORM === 'win32';
11
+ async function ensure(ctx) {
13
12
  const ctxAny = ctx;
14
- if (!ctxAny[DEP_KEY]) {
15
- if (IS_WIN32) {
16
- const { hardwareBreakpointEngine } = require('../../../native/HardwareBreakpoint.js');
17
- const { speedhack } = require('../../../native/Speedhack.js');
18
- const { heapAnalyzer } = require('../../../native/HeapAnalyzer.js');
19
- const { peAnalyzer } = require('../../../native/PEAnalyzer.js');
20
- const { antiCheatDetector } = require('../../../native/AntiCheatDetector.js');
21
- ctxAny[DEP_KEY] = new MemoryScanHandlers(memoryScanner, scanSessionManager, pointerChainEngine, structureAnalyzer, hardwareBreakpointEngine, codeInjector, memoryController, speedhack, heapAnalyzer, peAnalyzer, antiCheatDetector);
22
- }
23
- else {
24
- ctxAny[DEP_KEY] = new MemoryScanHandlers(memoryScanner, scanSessionManager, pointerChainEngine, structureAnalyzer, null, codeInjector, memoryController, null, null, null, null);
25
- }
13
+ if (ctxAny[DEP_KEY])
14
+ return ctxAny[DEP_KEY];
15
+ const [memoryScanner, scanSessionManager, pointerChainEngine, structureAnalyzer, codeInjector, memoryController,] = await Promise.all([
16
+ import('../../../native/MemoryScanner.js'),
17
+ import('../../../native/MemoryScanSession.js'),
18
+ import('../../../native/PointerChainEngine.js'),
19
+ import('../../../native/StructureAnalyzer.js'),
20
+ import('../../../native/CodeInjector.js'),
21
+ import('../../../native/MemoryController.js'),
22
+ ]);
23
+ if (IS_WIN32) {
24
+ const [hardwareBreakpointEngine, speedhack, heapAnalyzer, peAnalyzer, antiCheatDetector] = await Promise.all([
25
+ import('../../../native/HardwareBreakpoint.js'),
26
+ import('../../../native/Speedhack.js'),
27
+ import('../../../native/HeapAnalyzer.js'),
28
+ import('../../../native/PEAnalyzer.js'),
29
+ import('../../../native/AntiCheatDetector.js'),
30
+ ]);
31
+ ctxAny[DEP_KEY] = new MemoryScanHandlers(memoryScanner.memoryScanner, scanSessionManager.scanSessionManager, pointerChainEngine.pointerChainEngine, structureAnalyzer.structureAnalyzer, hardwareBreakpointEngine.hardwareBreakpointEngine, codeInjector.codeInjector, memoryController.memoryController, speedhack.speedhack, heapAnalyzer.heapAnalyzer, peAnalyzer.peAnalyzer, antiCheatDetector.antiCheatDetector);
32
+ }
33
+ else {
34
+ ctxAny[DEP_KEY] = new MemoryScanHandlers(memoryScanner.memoryScanner, scanSessionManager.scanSessionManager, pointerChainEngine.pointerChainEngine, structureAnalyzer.structureAnalyzer, null, codeInjector.codeInjector, memoryController.memoryController, null, null, null, null);
26
35
  }
27
36
  return ctxAny[DEP_KEY];
28
37
  }
@@ -56,47 +65,207 @@ const WIN32_ONLY_TOOLS = new Set([
56
65
  'memory_speedhack_set',
57
66
  ]);
58
67
  const allRegistrations = [
59
- { tool: toolByName('memory_first_scan'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleFirstScan(a)) },
60
- { tool: toolByName('memory_next_scan'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleNextScan(a)) },
61
- { tool: toolByName('memory_unknown_scan'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleUnknownScan(a)) },
62
- { tool: toolByName('memory_pointer_scan'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePointerScan(a)) },
63
- { tool: toolByName('memory_group_scan'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleGroupScan(a)) },
64
- { tool: toolByName('memory_scan_list'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleScanList(a)) },
65
- { tool: toolByName('memory_scan_delete'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleScanDelete(a)) },
66
- { tool: toolByName('memory_scan_export'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleScanExport(a)) },
67
- { tool: toolByName('memory_pointer_chain_scan'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePointerChainScan(a)) },
68
- { tool: toolByName('memory_pointer_chain_validate'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePointerChainValidate(a)) },
69
- { tool: toolByName('memory_pointer_chain_resolve'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePointerChainResolve(a)) },
70
- { tool: toolByName('memory_pointer_chain_export'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePointerChainExport(a)) },
71
- { tool: toolByName('memory_structure_analyze'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleStructureAnalyze(a)) },
72
- { tool: toolByName('memory_vtable_parse'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleVtableParse(a)) },
73
- { tool: toolByName('memory_structure_export_c'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleStructureExportC(a)) },
74
- { tool: toolByName('memory_structure_compare'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleStructureCompare(a)) },
75
- { tool: toolByName('memory_breakpoint_set'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleBreakpointSet(a)) },
76
- { tool: toolByName('memory_breakpoint_remove'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleBreakpointRemove(a)) },
77
- { tool: toolByName('memory_breakpoint_list'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleBreakpointList(a)) },
78
- { tool: toolByName('memory_breakpoint_trace'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleBreakpointTrace(a)) },
79
- { tool: toolByName('memory_patch_bytes'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePatchBytes(a)) },
80
- { tool: toolByName('memory_patch_nop'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePatchNop(a)) },
81
- { tool: toolByName('memory_patch_undo'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePatchUndo(a)) },
82
- { tool: toolByName('memory_code_caves'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleCodeCaves(a)) },
83
- { tool: toolByName('memory_write_value'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleWriteValue(a)) },
84
- { tool: toolByName('memory_freeze'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleFreeze(a)) },
85
- { tool: toolByName('memory_unfreeze'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleUnfreeze(a)) },
68
+ {
69
+ tool: toolByName('memory_first_scan'),
70
+ domain: DOMAIN,
71
+ bind: bindByKey((h, a) => h.handleFirstScan(a)),
72
+ },
73
+ {
74
+ tool: toolByName('memory_next_scan'),
75
+ domain: DOMAIN,
76
+ bind: bindByKey((h, a) => h.handleNextScan(a)),
77
+ },
78
+ {
79
+ tool: toolByName('memory_unknown_scan'),
80
+ domain: DOMAIN,
81
+ bind: bindByKey((h, a) => h.handleUnknownScan(a)),
82
+ },
83
+ {
84
+ tool: toolByName('memory_pointer_scan'),
85
+ domain: DOMAIN,
86
+ bind: bindByKey((h, a) => h.handlePointerScan(a)),
87
+ },
88
+ {
89
+ tool: toolByName('memory_group_scan'),
90
+ domain: DOMAIN,
91
+ bind: bindByKey((h, a) => h.handleGroupScan(a)),
92
+ },
93
+ {
94
+ tool: toolByName('memory_scan_list'),
95
+ domain: DOMAIN,
96
+ bind: bindByKey((h, a) => h.handleScanList(a)),
97
+ },
98
+ {
99
+ tool: toolByName('memory_scan_delete'),
100
+ domain: DOMAIN,
101
+ bind: bindByKey((h, a) => h.handleScanDelete(a)),
102
+ },
103
+ {
104
+ tool: toolByName('memory_scan_export'),
105
+ domain: DOMAIN,
106
+ bind: bindByKey((h, a) => h.handleScanExport(a)),
107
+ },
108
+ {
109
+ tool: toolByName('memory_pointer_chain_scan'),
110
+ domain: DOMAIN,
111
+ bind: bindByKey((h, a) => h.handlePointerChainScan(a)),
112
+ },
113
+ {
114
+ tool: toolByName('memory_pointer_chain_validate'),
115
+ domain: DOMAIN,
116
+ bind: bindByKey((h, a) => h.handlePointerChainValidate(a)),
117
+ },
118
+ {
119
+ tool: toolByName('memory_pointer_chain_resolve'),
120
+ domain: DOMAIN,
121
+ bind: bindByKey((h, a) => h.handlePointerChainResolve(a)),
122
+ },
123
+ {
124
+ tool: toolByName('memory_pointer_chain_export'),
125
+ domain: DOMAIN,
126
+ bind: bindByKey((h, a) => h.handlePointerChainExport(a)),
127
+ },
128
+ {
129
+ tool: toolByName('memory_structure_analyze'),
130
+ domain: DOMAIN,
131
+ bind: bindByKey((h, a) => h.handleStructureAnalyze(a)),
132
+ },
133
+ {
134
+ tool: toolByName('memory_vtable_parse'),
135
+ domain: DOMAIN,
136
+ bind: bindByKey((h, a) => h.handleVtableParse(a)),
137
+ },
138
+ {
139
+ tool: toolByName('memory_structure_export_c'),
140
+ domain: DOMAIN,
141
+ bind: bindByKey((h, a) => h.handleStructureExportC(a)),
142
+ },
143
+ {
144
+ tool: toolByName('memory_structure_compare'),
145
+ domain: DOMAIN,
146
+ bind: bindByKey((h, a) => h.handleStructureCompare(a)),
147
+ },
148
+ {
149
+ tool: toolByName('memory_breakpoint_set'),
150
+ domain: DOMAIN,
151
+ bind: bindByKey((h, a) => h.handleBreakpointSet(a)),
152
+ },
153
+ {
154
+ tool: toolByName('memory_breakpoint_remove'),
155
+ domain: DOMAIN,
156
+ bind: bindByKey((h, a) => h.handleBreakpointRemove(a)),
157
+ },
158
+ {
159
+ tool: toolByName('memory_breakpoint_list'),
160
+ domain: DOMAIN,
161
+ bind: bindByKey((h, a) => h.handleBreakpointList(a)),
162
+ },
163
+ {
164
+ tool: toolByName('memory_breakpoint_trace'),
165
+ domain: DOMAIN,
166
+ bind: bindByKey((h, a) => h.handleBreakpointTrace(a)),
167
+ },
168
+ {
169
+ tool: toolByName('memory_patch_bytes'),
170
+ domain: DOMAIN,
171
+ bind: bindByKey((h, a) => h.handlePatchBytes(a)),
172
+ },
173
+ {
174
+ tool: toolByName('memory_patch_nop'),
175
+ domain: DOMAIN,
176
+ bind: bindByKey((h, a) => h.handlePatchNop(a)),
177
+ },
178
+ {
179
+ tool: toolByName('memory_patch_undo'),
180
+ domain: DOMAIN,
181
+ bind: bindByKey((h, a) => h.handlePatchUndo(a)),
182
+ },
183
+ {
184
+ tool: toolByName('memory_code_caves'),
185
+ domain: DOMAIN,
186
+ bind: bindByKey((h, a) => h.handleCodeCaves(a)),
187
+ },
188
+ {
189
+ tool: toolByName('memory_write_value'),
190
+ domain: DOMAIN,
191
+ bind: bindByKey((h, a) => h.handleWriteValue(a)),
192
+ },
193
+ {
194
+ tool: toolByName('memory_freeze'),
195
+ domain: DOMAIN,
196
+ bind: bindByKey((h, a) => h.handleFreeze(a)),
197
+ },
198
+ {
199
+ tool: toolByName('memory_unfreeze'),
200
+ domain: DOMAIN,
201
+ bind: bindByKey((h, a) => h.handleUnfreeze(a)),
202
+ },
86
203
  { tool: toolByName('memory_dump'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleDump(a)) },
87
- { tool: toolByName('memory_speedhack_apply'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleSpeedhackApply(a)) },
88
- { tool: toolByName('memory_speedhack_set'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleSpeedhackSet(a)) },
89
- { tool: toolByName('memory_write_undo'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleWriteUndo(a)) },
90
- { tool: toolByName('memory_write_redo'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleWriteRedo(a)) },
91
- { tool: toolByName('memory_heap_enumerate'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleHeapEnumerate(a)) },
92
- { tool: toolByName('memory_heap_stats'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleHeapStats(a)) },
93
- { tool: toolByName('memory_heap_anomalies'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleHeapAnomalies(a)) },
94
- { tool: toolByName('memory_pe_headers'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePEHeaders(a)) },
95
- { tool: toolByName('memory_pe_imports_exports'), domain: DOMAIN, bind: bindByKey((h, a) => h.handlePEImportsExports(a)) },
96
- { tool: toolByName('memory_inline_hook_detect'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleInlineHookDetect(a)) },
97
- { tool: toolByName('memory_anticheat_detect'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleAntiCheatDetect(a)) },
98
- { tool: toolByName('memory_guard_pages'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleGuardPages(a)) },
99
- { tool: toolByName('memory_integrity_check'), domain: DOMAIN, bind: bindByKey((h, a) => h.handleIntegrityCheck(a)) },
204
+ {
205
+ tool: toolByName('memory_speedhack_apply'),
206
+ domain: DOMAIN,
207
+ bind: bindByKey((h, a) => h.handleSpeedhackApply(a)),
208
+ },
209
+ {
210
+ tool: toolByName('memory_speedhack_set'),
211
+ domain: DOMAIN,
212
+ bind: bindByKey((h, a) => h.handleSpeedhackSet(a)),
213
+ },
214
+ {
215
+ tool: toolByName('memory_write_undo'),
216
+ domain: DOMAIN,
217
+ bind: bindByKey((h, a) => h.handleWriteUndo(a)),
218
+ },
219
+ {
220
+ tool: toolByName('memory_write_redo'),
221
+ domain: DOMAIN,
222
+ bind: bindByKey((h, a) => h.handleWriteRedo(a)),
223
+ },
224
+ {
225
+ tool: toolByName('memory_heap_enumerate'),
226
+ domain: DOMAIN,
227
+ bind: bindByKey((h, a) => h.handleHeapEnumerate(a)),
228
+ },
229
+ {
230
+ tool: toolByName('memory_heap_stats'),
231
+ domain: DOMAIN,
232
+ bind: bindByKey((h, a) => h.handleHeapStats(a)),
233
+ },
234
+ {
235
+ tool: toolByName('memory_heap_anomalies'),
236
+ domain: DOMAIN,
237
+ bind: bindByKey((h, a) => h.handleHeapAnomalies(a)),
238
+ },
239
+ {
240
+ tool: toolByName('memory_pe_headers'),
241
+ domain: DOMAIN,
242
+ bind: bindByKey((h, a) => h.handlePEHeaders(a)),
243
+ },
244
+ {
245
+ tool: toolByName('memory_pe_imports_exports'),
246
+ domain: DOMAIN,
247
+ bind: bindByKey((h, a) => h.handlePEImportsExports(a)),
248
+ },
249
+ {
250
+ tool: toolByName('memory_inline_hook_detect'),
251
+ domain: DOMAIN,
252
+ bind: bindByKey((h, a) => h.handleInlineHookDetect(a)),
253
+ },
254
+ {
255
+ tool: toolByName('memory_anticheat_detect'),
256
+ domain: DOMAIN,
257
+ bind: bindByKey((h, a) => h.handleAntiCheatDetect(a)),
258
+ },
259
+ {
260
+ tool: toolByName('memory_guard_pages'),
261
+ domain: DOMAIN,
262
+ bind: bindByKey((h, a) => h.handleGuardPages(a)),
263
+ },
264
+ {
265
+ tool: toolByName('memory_integrity_check'),
266
+ domain: DOMAIN,
267
+ bind: bindByKey((h, a) => h.handleIntegrityCheck(a)),
268
+ },
100
269
  ];
101
270
  const registrations = IS_WIN32
102
271
  ? allRegistrations
@@ -140,14 +309,17 @@ const manifest = {
140
309
  'memory_structure_analyze',
141
310
  'memory_vtable_parse',
142
311
  'memory_scan_list',
143
- ...(IS_WIN32
144
- ? ['memory_breakpoint_set', 'memory_breakpoint_trace']
145
- : []),
312
+ ...(IS_WIN32 ? ['memory_breakpoint_set', 'memory_breakpoint_trace'] : []),
146
313
  'memory_patch_bytes',
147
314
  'memory_freeze',
148
315
  'memory_dump',
149
316
  ...(IS_WIN32
150
- ? ['memory_speedhack_apply', 'memory_heap_enumerate', 'memory_pe_headers', 'memory_anticheat_detect']
317
+ ? [
318
+ 'memory_speedhack_apply',
319
+ 'memory_heap_enumerate',
320
+ 'memory_pe_headers',
321
+ 'memory_anticheat_detect',
322
+ ]
151
323
  : []),
152
324
  'memory_write_undo',
153
325
  ],
@@ -1,194 +1,56 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const nativeBridgeTools = [
2
- {
3
- name: 'native_bridge_status',
4
- description: 'Check connectivity to Ghidra and/or IDA bridge servers.\n\n' +
5
- 'Returns health status, version info, and available capabilities for each configured backend.\n\n' +
6
- 'Use this first to verify your analysis environment is ready.',
7
- inputSchema: {
8
- type: 'object',
9
- properties: {
10
- backend: {
11
- type: 'string',
12
- enum: ['ghidra', 'ida', 'all'],
13
- description: 'Which backend to check (default: all)',
14
- default: 'all',
15
- },
16
- ghidraEndpoint: {
17
- type: 'string',
18
- description: 'Ghidra bridge server URL (default: http://127.0.0.1:18080)',
19
- },
20
- idaEndpoint: {
21
- type: 'string',
22
- description: 'IDA bridge server URL (default: http://127.0.0.1:18081)',
23
- },
24
- },
25
- },
26
- annotations: {
27
- readOnlyHint: true,
28
- destructiveHint: false,
29
- idempotentHint: true,
30
- openWorldHint: false,
31
- },
32
- },
33
- {
34
- name: 'ghidra_bridge',
35
- description: 'Interact with Ghidra headless analyzer via a bridge server.\n\n' +
36
- 'Supported actions:\n' +
37
- '- `status`: Check Ghidra server health\n' +
38
- '- `open_project`: Open/create a Ghidra project for a binary\n' +
39
- '- `list_functions`: List all functions in the analyzed binary\n' +
40
- '- `decompile_function`: Decompile a specific function by name or address\n' +
41
- '- `run_script`: Execute a Ghidra Python/Java script\n' +
42
- '- `get_xrefs`: Get cross-references for a symbol\n' +
43
- '- `search_strings`: Search for strings in the binary\n\n' +
44
- 'Requires a Ghidra bridge server (ghidra_bridge or ghidriff) running locally.',
45
- inputSchema: {
46
- type: 'object',
47
- properties: {
48
- action: {
49
- type: 'string',
50
- enum: [
51
- 'status',
52
- 'open_project',
53
- 'list_functions',
54
- 'decompile_function',
55
- 'run_script',
56
- 'get_xrefs',
57
- 'search_strings',
58
- ],
59
- description: 'Action to perform',
60
- },
61
- binaryPath: {
62
- type: 'string',
63
- description: 'Path to binary file (for open_project)',
64
- },
65
- functionName: {
66
- type: 'string',
67
- description: 'Function name or address (for decompile_function, get_xrefs)',
68
- },
69
- scriptPath: {
70
- type: 'string',
71
- description: 'Path to Ghidra script (for run_script)',
72
- },
73
- scriptArgs: {
74
- type: 'array',
75
- items: { type: 'string' },
76
- description: 'Arguments for the script',
77
- },
78
- searchPattern: {
79
- type: 'string',
80
- description: 'String pattern to search (for search_strings)',
81
- },
82
- endpoint: {
83
- type: 'string',
84
- description: 'Ghidra bridge server URL',
85
- },
86
- },
87
- required: ['action'],
88
- },
89
- annotations: {
90
- readOnlyHint: false,
91
- destructiveHint: false,
92
- idempotentHint: false,
93
- openWorldHint: false,
94
- },
95
- },
96
- {
97
- name: 'ida_bridge',
98
- description: 'Interact with IDA Pro via a Python sidecar bridge server.\n\n' +
99
- 'Supported actions:\n' +
100
- '- `status`: Check IDA bridge server health\n' +
101
- '- `open_binary`: Load a binary into IDA\n' +
102
- '- `list_functions`: List all functions\n' +
103
- '- `decompile_function`: Decompile with Hex-Rays (if available)\n' +
104
- '- `run_script`: Execute an IDAPython script\n' +
105
- '- `get_xrefs`: Get cross-references\n' +
106
- '- `get_strings`: List defined strings\n\n' +
107
- 'Requires an IDA Python bridge server (ida_bridge or idalink) running locally.',
108
- inputSchema: {
109
- type: 'object',
110
- properties: {
111
- action: {
112
- type: 'string',
113
- enum: [
114
- 'status',
115
- 'open_binary',
116
- 'list_functions',
117
- 'decompile_function',
118
- 'run_script',
119
- 'get_xrefs',
120
- 'get_strings',
121
- ],
122
- description: 'Action to perform',
123
- },
124
- binaryPath: {
125
- type: 'string',
126
- description: 'Path to binary file (for open_binary)',
127
- },
128
- functionName: {
129
- type: 'string',
130
- description: 'Function name or address (for decompile_function, get_xrefs)',
131
- },
132
- scriptPath: {
133
- type: 'string',
134
- description: 'Path to IDAPython script (for run_script)',
135
- },
136
- scriptArgs: {
137
- type: 'array',
138
- items: { type: 'string' },
139
- description: 'Arguments for the script',
140
- },
141
- endpoint: {
142
- type: 'string',
143
- description: 'IDA bridge server URL',
144
- },
145
- },
146
- required: ['action'],
147
- },
148
- annotations: {
149
- readOnlyHint: false,
150
- destructiveHint: false,
151
- idempotentHint: false,
152
- openWorldHint: false,
153
- },
154
- },
155
- {
156
- name: 'native_symbol_sync',
157
- description: 'Synchronize symbol information between native analysis tools and jshookmcp.\n\n' +
158
- 'Export function names and addresses from Ghidra/IDA, then make them available ' +
159
- 'for WASM analysis, source map reconstruction, or hook generation.\n\n' +
160
- 'Useful when JS calls into WASM or native libraries — bridges the gap between ' +
161
- 'web-level and binary-level analysis.',
162
- inputSchema: {
163
- type: 'object',
164
- properties: {
165
- source: {
166
- type: 'string',
167
- enum: ['ghidra', 'ida'],
168
- description: 'Which tool to export symbols from',
169
- },
170
- filter: {
171
- type: 'string',
172
- description: 'Regex pattern to filter symbol names',
173
- },
174
- exportFormat: {
175
- type: 'string',
176
- enum: ['json', 'csv', 'idc'],
177
- description: 'Output format (default: json)',
178
- default: 'json',
179
- },
180
- endpoint: {
181
- type: 'string',
182
- description: 'Bridge server URL',
183
- },
184
- },
185
- required: ['source'],
186
- },
187
- annotations: {
188
- readOnlyHint: false,
189
- destructiveHint: false,
190
- idempotentHint: false,
191
- openWorldHint: false,
192
- },
193
- },
3
+ tool('native_bridge_status')
4
+ .desc('Check connectivity to Ghidra and/or IDA bridge servers.\n\nReturns health status, version info, and available capabilities for each configured backend.\n\nUse this first to verify your analysis environment is ready.')
5
+ .enum('backend', ['ghidra', 'ida', 'all'], 'Which backend to check', { default: 'all' })
6
+ .string('ghidraEndpoint', 'Ghidra bridge server URL', { default: 'http://127.0.0.1:18080' })
7
+ .string('idaEndpoint', 'IDA bridge server URL', { default: 'http://127.0.0.1:18081' })
8
+ .readOnly()
9
+ .idempotent()
10
+ .build(),
11
+ tool('ghidra_bridge')
12
+ .desc('Interact with Ghidra headless analyzer via a bridge server.\n\nSupported actions:\n- `status`: Check Ghidra server health\n- `open_project`: Open/create a Ghidra project for a binary\n- `list_functions`: List all functions in the analyzed binary\n- `decompile_function`: Decompile a specific function by name or address\n- `run_script`: Execute a Ghidra Python/Java script\n- `get_xrefs`: Get cross-references for a symbol\n- `search_strings`: Search for strings in the binary\n\nRequires a Ghidra bridge server (ghidra_bridge or ghidriff) running locally.')
13
+ .enum('action', [
14
+ 'status',
15
+ 'open_project',
16
+ 'list_functions',
17
+ 'decompile_function',
18
+ 'run_script',
19
+ 'get_xrefs',
20
+ 'search_strings',
21
+ ], 'Action to perform')
22
+ .string('binaryPath', 'Path to binary file (for open_project)')
23
+ .string('functionName', 'Function name or address (for decompile_function, get_xrefs)')
24
+ .string('scriptPath', 'Path to Ghidra script (for run_script)')
25
+ .array('scriptArgs', { type: 'string' }, 'Arguments for the script')
26
+ .string('searchPattern', 'String pattern to search (for search_strings)')
27
+ .string('endpoint', 'Ghidra bridge server URL')
28
+ .required('action')
29
+ .build(),
30
+ tool('ida_bridge')
31
+ .desc('Interact with IDA Pro via a Python sidecar bridge server.\n\nSupported actions:\n- `status`: Check IDA bridge server health\n- `open_binary`: Load a binary into IDA\n- `list_functions`: List all functions\n- `decompile_function`: Decompile with Hex-Rays (if available)\n- `run_script`: Execute an IDAPython script\n- `get_xrefs`: Get cross-references\n- `get_strings`: List defined strings\n\nRequires an IDA Python bridge server (ida_bridge or idalink) running locally.')
32
+ .enum('action', [
33
+ 'status',
34
+ 'open_binary',
35
+ 'list_functions',
36
+ 'decompile_function',
37
+ 'run_script',
38
+ 'get_xrefs',
39
+ 'get_strings',
40
+ ], 'Action to perform')
41
+ .string('binaryPath', 'Path to binary file (for open_binary)')
42
+ .string('functionName', 'Function name or address (for decompile_function, get_xrefs)')
43
+ .string('scriptPath', 'Path to IDAPython script (for run_script)')
44
+ .array('scriptArgs', { type: 'string' }, 'Arguments for the script')
45
+ .string('endpoint', 'IDA bridge server URL')
46
+ .required('action')
47
+ .build(),
48
+ tool('native_symbol_sync')
49
+ .desc('Synchronize symbol information between native analysis tools and jshookmcp.\n\nExport function names and addresses from Ghidra/IDA, then make them available for WASM analysis, source map reconstruction, or hook generation.\n\nUseful when JS calls into WASM or native libraries — bridges the gap between web-level and binary-level analysis.')
50
+ .enum('source', ['ghidra', 'ida'], 'Which tool to export symbols from')
51
+ .string('filter', 'Regex pattern to filter symbol names')
52
+ .enum('exportFormat', ['json', 'csv', 'idc'], 'Output format', { default: 'json' })
53
+ .string('endpoint', 'Bridge server URL')
54
+ .required('source')
55
+ .build(),
194
56
  ];
@@ -1,3 +1,4 @@
1
+ export * from './definitions.js';
1
2
  export declare class NativeBridgeHandlers {
2
3
  private readonly ghidraEndpoint;
3
4
  private readonly idaEndpoint;
@@ -1,4 +1,5 @@
1
1
  import { GHIDRA_BRIDGE_ENDPOINT, IDA_BRIDGE_ENDPOINT } from '../../../constants.js';
2
+ export * from './definitions.js';
2
3
  function toTextResponse(payload) {
3
4
  return {
4
5
  content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }],
@@ -17,7 +18,7 @@ async function bridgeFetch(baseUrl, path, method = 'GET', body) {
17
18
  const res = await fetch(url, {
18
19
  method,
19
20
  headers: { 'Content-Type': 'application/json' },
20
- body,
21
+ ...(body === undefined ? {} : { body }),
21
22
  signal: AbortSignal.timeout(15_000),
22
23
  });
23
24
  const data = await res.json().catch(() => ({}));
@@ -125,5 +125,5 @@ export function extractAuthFromRequests(requests) {
125
125
  }
126
126
  }
127
127
  }
128
- return findings.sort((a, b) => b.confidence - a.confidence);
128
+ return findings.toSorted((a, b) => b.confidence - a.confidence);
129
129
  }