@jshookmcp/jshook 0.3.2 → 0.3.4

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 (357) hide show
  1. package/README.md +19 -4
  2. package/README.zh.md +19 -4
  3. package/dist/AntiCheatDetector-B-mz4DK_.mjs +1 -0
  4. package/dist/{BrowserSessionCoordinator-BJ-HOxo0.mjs → BrowserSessionCoordinator-Cdic8FsH.mjs} +1 -1
  5. package/dist/CodeAnalyzerDataFlow-a-NkwcaG.mjs +2 -0
  6. package/dist/CodeInjector-B099WO6x.mjs +1 -0
  7. package/dist/ConsoleMonitor-BZRqrBH-.mjs +306 -0
  8. package/dist/CpuEngine-BC8jayy9.mjs +1 -0
  9. package/dist/DartAotExecutor-B7WVTKsd.mjs +1 -0
  10. package/dist/DartAotLoader-BxdhW-K2.mjs +2 -0
  11. package/dist/DarwinAPI-DzojdfjF.mjs +1 -0
  12. package/dist/DetailedDataManager-Dgh402Gp.mjs +5 -0
  13. package/dist/ExecutionSandbox-QbWQmzuC.mjs +45 -0
  14. package/dist/ExtensionManager.tools-D3h818Xs.mjs +1 -0
  15. package/dist/FingerprintManager-D9Zlr6be.mjs +1 -0
  16. package/dist/HardwareBreakpoint-C_lJ22bj.mjs +1 -0
  17. package/dist/HeapAnalyzer-bJbLvzp6.mjs +1 -0
  18. package/dist/HookPatternScanner-yx4vJ9sd.mjs +1 -0
  19. package/dist/InstrumentationSession-Cv1wikLA.mjs +1 -0
  20. package/dist/IntegrityScanner-BB7sw-SA.mjs +1 -0
  21. package/dist/JScramblerDeobfuscator-NVR5VatT.mjs +1 -0
  22. package/dist/MCPServer.activation.ttl-C2wOCMLV.mjs +1 -0
  23. package/dist/MCPServer.search.helpers-DlassAew.mjs +2 -0
  24. package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
  25. package/dist/MemoryController-CCsGuGJS.mjs +2 -0
  26. package/dist/{MemoryScanSession-DG_F-PjE.mjs → MemoryScanSession-BZ2A9Ph1.mjs} +1 -1
  27. package/dist/MemoryScanner-DAxsq7Sx.mjs +1 -0
  28. package/dist/NativeMemoryManager.impl-BIJzXMqH.mjs +1 -0
  29. package/dist/{NativeMemoryManager.utils-BHy1P_jM.mjs → NativeMemoryManager.utils-CMoul2an.mjs} +1 -1
  30. package/dist/PEAnalyzer-CB_kaTis.mjs +1 -0
  31. package/dist/PackerDeobfuscator-BpwGjxDL.mjs +7 -0
  32. package/dist/PointerChainEngine-B6SYv6ZM.mjs +1 -0
  33. package/dist/ProcessRegistry-C5W1Tkn9.mjs +1 -0
  34. package/dist/{handlers-mPFiNPe8.mjs → QuickJSSandbox-CIde-jzG.mjs} +2 -5
  35. package/dist/{ResponseBuilder-BfWP-uaT.mjs → ResponseBuilder-BLicSCjn.mjs} +1 -1
  36. package/dist/ReverseEvidenceGraph-DJzk0GQz.mjs +2 -0
  37. package/dist/ServerRuntimeState-DGXNv8Ji.mjs +1 -0
  38. package/dist/Speedhack-MGoeq1ZS.mjs +1 -0
  39. package/dist/StructureAnalyzer-CCTWAXR3.mjs +2 -0
  40. package/dist/ToolHandlerMap-C40EmuLT.mjs +1 -0
  41. package/dist/{ToolProbe-C7ZU2x7M.mjs → ToolProbe-B02GC3ZY.mjs} +1 -1
  42. package/dist/ToolRegistry-CzqQxFqf.mjs +1 -0
  43. package/dist/ToolRouter.policy-Bgb3S8jc.mjs +4 -0
  44. package/dist/TraceRecorder-BfeCTQUj.mjs +407 -0
  45. package/dist/VMDeobfuscator-BHtkV850.mjs +1 -0
  46. package/dist/Win32API-G7QPyckq.mjs +1 -0
  47. package/dist/{Win32Debug-CYrIQBvr.mjs → Win32Debug-6yzmtv5b.mjs} +1 -1
  48. package/dist/allocation-track-CiI-CnaI.mjs +1 -0
  49. package/dist/analysis-CojUzwX-.mjs +27 -0
  50. package/dist/antidebug-CgU84TE1.mjs +1 -0
  51. package/dist/apk-DrPBsOq8.mjs +1 -0
  52. package/dist/artifactRetention-Bk6fW2uF.mjs +1 -0
  53. package/dist/artifacts-Bx9GLx4J.mjs +1 -0
  54. package/dist/ast-bridge-BlOrmVAv.mjs +1 -0
  55. package/dist/ast-utils-B9E5k_v1.mjs +1 -0
  56. package/dist/{betterSqlite3-Brtq-SIQ.mjs → betterSqlite3-Bdo_ifuJ.mjs} +1 -1
  57. package/dist/binary-instrument-DiE1BP0x.mjs +12 -0
  58. package/dist/boringssl-inspector-C6M3sOga.mjs +2 -0
  59. package/dist/browser-QDUu5ML9.mjs +29 -0
  60. package/dist/{handlers-yo_xYzT8.mjs → canvas-g5kmLdY-.mjs} +1098 -24
  61. package/dist/{capabilities-CyXuKUl1.mjs → capabilities-DwzyxL2w.mjs} +1 -1
  62. package/dist/cdp-session-Dy4OwMOP.mjs +1 -0
  63. package/dist/collector-Cld4i-E4.mjs +1 -0
  64. package/dist/config-5ODJ3Aj0.mjs +3 -0
  65. package/dist/constants-nvsLpSri.mjs +1 -0
  66. package/dist/coordination-C6y2gM9O.mjs +98 -0
  67. package/dist/coverage-and-block--cWjjEe5.mjs +1 -0
  68. package/dist/dart-inspector-D4IKxZ6u.mjs +0 -0
  69. package/dist/debugger-C2SpiXoO.mjs +1 -0
  70. package/dist/definitions-0mtilYzG.mjs +1 -0
  71. package/dist/definitions-9csunmeX.mjs +1 -0
  72. package/dist/definitions-B11MudW_.mjs +1 -0
  73. package/dist/definitions-BKpRDjcI.mjs +1 -0
  74. package/dist/definitions-BXE3H4re.mjs +1 -0
  75. package/dist/definitions-BlPHe5DX.mjs +1 -0
  76. package/dist/definitions-Bob4XMxI.mjs +27 -0
  77. package/dist/definitions-BpIQN2nm.mjs +1 -0
  78. package/dist/definitions-BvolWeSu.mjs +1 -0
  79. package/dist/definitions-C-6j3Ejl.mjs +1 -0
  80. package/dist/definitions-C-AdFfFu.mjs +1 -0
  81. package/dist/definitions-CArdw_9T.mjs +1 -0
  82. package/dist/definitions-CCvIcRrT.mjs +1 -0
  83. package/dist/definitions-CJPE5PIl.mjs +1 -0
  84. package/dist/definitions-CbqeW06u.mjs +1 -0
  85. package/dist/definitions-Cexmkypg.mjs +1 -0
  86. package/dist/definitions-D1dxl8qt.mjs +1 -0
  87. package/dist/definitions-D3uT-ZbU.mjs +1 -0
  88. package/dist/definitions-DtOY5iUc.mjs +1 -0
  89. package/dist/{definitions-DxFNRQNK2.mjs → definitions-DvrYdDCJ2.mjs} +1 -1
  90. package/dist/{definitions-Cenu6mxo.mjs → definitions-aeRd5DAR.mjs} +1 -1
  91. package/dist/definitions-ihxOqOC4.mjs +1 -0
  92. package/dist/deopt-trace-qnAcC931.mjs +17 -0
  93. package/dist/disasm-DoxSucGp.mjs +1 -0
  94. package/dist/dumpsys-parser-Du-5ruEe.mjs +2 -0
  95. package/dist/encoding-UMtwgy4M.mjs +2 -0
  96. package/dist/ensure-browser-core-BP70x0TB.mjs +285 -0
  97. package/dist/factory-BeND77hf.mjs +2 -0
  98. package/dist/graphql-CF7QKJME.mjs +68 -0
  99. package/dist/grpc-raw-Dp7ps2sv.mjs +1 -0
  100. package/dist/handlers--qCl9vNv.mjs +1 -0
  101. package/dist/handlers-BHIu1LqA.mjs +1 -0
  102. package/dist/{antidebug-7L3ygj_9.mjs → handlers-BQ4K8Jbr.mjs} +2 -2
  103. package/dist/handlers-BxQv-wtf.mjs +8 -0
  104. package/dist/handlers-ByYG27-5.mjs +1 -0
  105. package/dist/handlers-C0I9-BtX.mjs +5 -0
  106. package/dist/handlers-CL0Iokmw.mjs +1 -0
  107. package/dist/handlers-CNbhIdSK.mjs +4 -0
  108. package/dist/handlers-CnTTSJFs.mjs +109 -0
  109. package/dist/handlers-CoDx6akJ2.mjs +49 -0
  110. package/dist/{handlers-0yKLRIfo.mjs → handlers-DASJI0Pn.mjs} +1 -1
  111. package/dist/handlers-DRKMaA-_.mjs +74 -0
  112. package/dist/handlers-Dalu0olz.mjs +2 -0
  113. package/dist/handlers-KY0g31ny.mjs +9 -0
  114. package/dist/handlers-oGo60aVv.mjs +1 -0
  115. package/dist/handlers.impl-BTXLw6Qc.mjs +1 -0
  116. package/dist/heap-sampling-BqdiU-5j.mjs +1 -0
  117. package/dist/{hooks-D4XLfgtV.mjs → hooks-COK3t5rT.mjs} +52 -33
  118. package/dist/index.mjs +11 -11
  119. package/dist/logger-BGCcd-jJ.mjs +1 -0
  120. package/dist/macro-nUYUjKNZ.mjs +2 -0
  121. package/dist/maintenance-CfnE7ZKU.mjs +4 -0
  122. package/dist/manifest-7EOTUc0D.mjs +1 -0
  123. package/dist/manifest-B5ujuQmf.mjs +1 -0
  124. package/dist/manifest-BErXl3zn.mjs +1 -0
  125. package/dist/manifest-BKA-mD3J.mjs +1 -0
  126. package/dist/manifest-BUXj23bX.mjs +1 -0
  127. package/dist/manifest-BfXt9cau.mjs +1 -0
  128. package/dist/manifest-Bx-tpURK.mjs +1 -0
  129. package/dist/manifest-C0owVAdq.mjs +1 -0
  130. package/dist/manifest-C5XqYc9o.mjs +1 -0
  131. package/dist/manifest-CVKzLjsA.mjs +1 -0
  132. package/dist/manifest-CaeFjdhj.mjs +1 -0
  133. package/dist/manifest-CegBgip0.mjs +1 -0
  134. package/dist/manifest-CoJHqlgS.mjs +1 -0
  135. package/dist/manifest-D0dbtDqd.mjs +1 -0
  136. package/dist/manifest-D5Gr8ujd.mjs +12 -0
  137. package/dist/manifest-D82z-5og.mjs +1 -0
  138. package/dist/manifest-DA2afIwh.mjs +1 -0
  139. package/dist/manifest-DAbiFP5o.mjs +1 -0
  140. package/dist/manifest-DEY0s1O72.mjs +1 -0
  141. package/dist/manifest-DTOqNqiA.mjs +1 -0
  142. package/dist/manifest-DZ6ELNgX.mjs +1 -0
  143. package/dist/manifest-DjHkjddT.mjs +1 -0
  144. package/dist/manifest-DocA_itf2.mjs +1 -0
  145. package/dist/manifest-Dpnhvfq0.mjs +1 -0
  146. package/dist/manifest-DucPMG_a.mjs +1 -0
  147. package/dist/manifest-Dw5yYEac.mjs +1 -0
  148. package/dist/manifest-Ic_Cg66S.mjs +1 -0
  149. package/dist/manifest-JHaG6GMN.mjs +1 -0
  150. package/dist/manifest-QdkIzmYM.mjs +1 -0
  151. package/dist/manifest-YZqaCe25.mjs +1 -0
  152. package/dist/manifest-f0lUeXwq.mjs +1 -0
  153. package/dist/manifest-h-Ebisf8.mjs +1 -0
  154. package/dist/manifest-oOfTymBS.mjs +1 -0
  155. package/dist/manifest-qXqrO6KC.mjs +2 -0
  156. package/dist/mapsParser-DrJoeC0c.mjs +1 -0
  157. package/dist/modules-CC_ADmwi.mjs +333 -0
  158. package/dist/mojo-ipc-kVztXYw-.mjs +140 -0
  159. package/dist/native-D9ouskXO.mjs +961 -0
  160. package/dist/native-bridge-Dzd7hYoq.mjs +1 -0
  161. package/dist/network-C5Y-S87J.mjs +7 -0
  162. package/dist/one-gadget-CiWFE17F.mjs +1 -0
  163. package/dist/outputPaths-CHtELDyi.mjs +1 -0
  164. package/dist/parse-args-B6dwWc9k.mjs +1 -0
  165. package/dist/platform-BIXgJaM3.mjs +94 -0
  166. package/dist/process-aDIfLC0v.mjs +6 -0
  167. package/dist/proxy-DsHsQ1I4.mjs +2 -0
  168. package/dist/registry-7h8jJ9y9.mjs +1 -0
  169. package/dist/{registry-DH4sc1dt.mjs → registry-DJDnkQW2.mjs} +1 -1
  170. package/dist/response-R8ghbZSb.mjs +1 -0
  171. package/dist/retry-policy-DtYv0kDi.mjs +1 -0
  172. package/dist/reverseEngineeringConfig-BhZLOa3C.mjs +1 -0
  173. package/dist/safeOutput-Dt4mfjXA.mjs +1 -0
  174. package/dist/search-defaults-BBRJNAzC.mjs +1 -0
  175. package/dist/server/plugin-api.mjs +1 -1
  176. package/dist/server/search/EmbeddingWorker.d.mts +1 -0
  177. package/dist/server/search/EmbeddingWorker.mjs +1 -0
  178. package/dist/shared-BKtWZDGN.mjs +1 -0
  179. package/dist/sourcemap-2VIeVeKw.mjs +3 -0
  180. package/dist/streaming-DkpE3GGU.mjs +15 -0
  181. package/dist/syscall-DGZoYM_U.mjs +1 -0
  182. package/dist/transform-BJqsBC_-.mjs +105 -0
  183. package/dist/turbofan-graph-CbGHNVtl.mjs +1 -0
  184. package/dist/turbofan-inspect--NdCuYXi.mjs +23 -0
  185. package/dist/types-CWSvzmIh.mjs +1 -0
  186. package/dist/v8-inspector-CTJo08-K.mjs +297 -0
  187. package/dist/wasm-DX4Qm2Vs.mjs +235 -0
  188. package/dist/weakrefs-inspect-CnhaF-rN.mjs +57 -0
  189. package/dist/webgpu-D4-DxbxZ.mjs +6 -0
  190. package/dist/workflow-DHktRNF2.mjs +108 -0
  191. package/package.json +33 -27
  192. package/dist/AntiCheatDetector-B6d4Qe9D.mjs +0 -1
  193. package/dist/CodeInjector-Cll_7bLJ.mjs +0 -1
  194. package/dist/ConsoleMonitor-CxDJV15E.mjs +0 -306
  195. package/dist/DOMInspector-C19J4zeq.mjs +0 -95
  196. package/dist/DarwinAPI-ZfQdpLNI.mjs +0 -1
  197. package/dist/DetailedDataManager-DmQ1LT-W.mjs +0 -1
  198. package/dist/ExtensionManager-BD724zkO.mjs +0 -1
  199. package/dist/ExtensionManager.tools-oVMJgPcN.mjs +0 -1
  200. package/dist/FingerprintManager-DT0EAUEo.mjs +0 -1
  201. package/dist/HardwareBreakpoint-BUfPdp0f.mjs +0 -1
  202. package/dist/HeapAnalyzer-B_aqY8oj.mjs +0 -1
  203. package/dist/InstrumentationSession-D_G1ZPyd.mjs +0 -1
  204. package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +0 -1
  205. package/dist/MemoryController-X1XNSn1n.mjs +0 -2
  206. package/dist/MemoryScanner-g1_L1ub5.mjs +0 -1
  207. package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +0 -1
  208. package/dist/NetworkMonitor-B_-au6aV.mjs +0 -185
  209. package/dist/PEAnalyzer-yWQaGrcx.mjs +0 -1
  210. package/dist/PageController-Dfsm1_o7.mjs +0 -1
  211. package/dist/PointerChainEngine-BhCUkmxY.mjs +0 -1
  212. package/dist/PrerequisiteError-BjCQA-gK.mjs +0 -1
  213. package/dist/ProcessRegistry-C-bN48oR.mjs +0 -1
  214. package/dist/ReverseEvidenceGraph-BhSYYdiI.mjs +0 -2
  215. package/dist/ScriptManager-LWGPTdvD.mjs +0 -7
  216. package/dist/ServerRuntimeState-D2bWHqEE.mjs +0 -1
  217. package/dist/Speedhack-yseDPSZ9.mjs +0 -1
  218. package/dist/StructureAnalyzer-C5lpuZkg.mjs +0 -2
  219. package/dist/ToolCatalog-CYdD9F5f.mjs +0 -1
  220. package/dist/ToolRegistry-C5oB8KP8.mjs +0 -1
  221. package/dist/ToolRouter.policy-CfhJczkt.mjs +0 -4
  222. package/dist/TraceRecorder-BiJWBXHX.mjs +0 -272
  223. package/dist/VersionDetector-CHT36Az0.mjs +0 -9
  224. package/dist/Win32API-eUCF57l_.mjs +0 -1
  225. package/dist/WorkflowEngine-D876meOO.mjs +0 -1
  226. package/dist/analysis-D4swdMvq.mjs +0 -6
  227. package/dist/apk-packer-BqXcInnX.mjs +0 -1
  228. package/dist/artifactRetention-BCPQASm7.mjs +0 -1
  229. package/dist/artifacts-CkodUM4j.mjs +0 -1
  230. package/dist/binary-instrument-DU7V6TUM.mjs +0 -7
  231. package/dist/binary-secrets-PdMVoyt0.mjs +0 -1
  232. package/dist/boringssl-inspector-BBaJwwkU.mjs +0 -2
  233. package/dist/browser-Qqco2rOT.mjs +0 -11
  234. package/dist/collector-Bpl6qy2L.mjs +0 -1
  235. package/dist/constants-BYj8Xek8.mjs +0 -1
  236. package/dist/coordination-CWXW1o8K.mjs +0 -1
  237. package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
  238. package/dist/debugger-DyALjYMk.mjs +0 -1
  239. package/dist/definitions-BWxBke3r.mjs +0 -1
  240. package/dist/definitions-BYwATKc-.mjs +0 -1
  241. package/dist/definitions-B_83XfNQ.mjs +0 -1
  242. package/dist/definitions-Bf3H1EwV.mjs +0 -1
  243. package/dist/definitions-BftdXgXI.mjs +0 -1
  244. package/dist/definitions-Bio5XJYy.mjs +0 -1
  245. package/dist/definitions-C3qNgSn1.mjs +0 -1
  246. package/dist/definitions-CB6vmOer.mjs +0 -1
  247. package/dist/definitions-CMZRSy3k.mjs +0 -1
  248. package/dist/definitions-CQd7yCQH.mjs +0 -1
  249. package/dist/definitions-CT8ln6GQ.mjs +0 -1
  250. package/dist/definitions-D4g-MS10.mjs +0 -1
  251. package/dist/definitions-D5wl_8HN.mjs +0 -1
  252. package/dist/definitions-DAQm1Xar.mjs +0 -1
  253. package/dist/definitions-DP1vgxEY.mjs +0 -1
  254. package/dist/definitions-Ibci7e_L.mjs +0 -1
  255. package/dist/definitions-OeLvmlQy.mjs +0 -1
  256. package/dist/definitions-RZYGD_Ey.mjs +0 -1
  257. package/dist/definitions-Tls8c0A0.mjs +0 -1
  258. package/dist/definitions-bybDvnG0.mjs +0 -26
  259. package/dist/definitions-l7TjdE6V.mjs +0 -1
  260. package/dist/encoding-ycOaz8Vr.mjs +0 -2
  261. package/dist/ensure-browser-core-DxWC-NTp.mjs +0 -1
  262. package/dist/factory-CKr4fAE1.mjs +0 -1
  263. package/dist/flat-target-session-DvcQX7J5.mjs +0 -1
  264. package/dist/graphql-B2TiPEow.mjs +0 -62
  265. package/dist/handlers-8zN_vBIz.mjs +0 -1
  266. package/dist/handlers-B62K4FTc.mjs +0 -1
  267. package/dist/handlers-BpDlVVVU.mjs +0 -1
  268. package/dist/handlers-CMJK7m1c.mjs +0 -31
  269. package/dist/handlers-D2ZOul9p.mjs +0 -54
  270. package/dist/handlers-D5E40ssn.mjs +0 -5
  271. package/dist/handlers-DGbdQAgD.mjs +0 -4
  272. package/dist/handlers-DHO3rjsW.mjs +0 -1
  273. package/dist/handlers-FJ80VzUI.mjs +0 -2
  274. package/dist/handlers-VHWrxbM_.mjs +0 -1
  275. package/dist/handlers-l8QIKqBj.mjs +0 -2
  276. package/dist/handlers.impl-D9Hh8Bgl.mjs +0 -1
  277. package/dist/jadx-search-B_Yse0Zh.mjs +0 -5
  278. package/dist/logger-sBC6IdRT.mjs +0 -1
  279. package/dist/maintenance-BUpIukhg.mjs +0 -1
  280. package/dist/manifest-0Jpt_AQa.mjs +0 -1
  281. package/dist/manifest-B3fZbSWR.mjs +0 -1
  282. package/dist/manifest-B7NB2rh2.mjs +0 -1
  283. package/dist/manifest-BDi4nbH1.mjs +0 -1
  284. package/dist/manifest-BLDfkE7n.mjs +0 -1
  285. package/dist/manifest-BcXbB4gf.mjs +0 -1
  286. package/dist/manifest-Bdnc_vrc.mjs +0 -1
  287. package/dist/manifest-BuYKgCnp.mjs +0 -1
  288. package/dist/manifest-CBfNnGPV.mjs +0 -1
  289. package/dist/manifest-CPS1Xv69.mjs +0 -1
  290. package/dist/manifest-CQH9FhwI.mjs +0 -1
  291. package/dist/manifest-CRryuZF4.mjs +0 -1
  292. package/dist/manifest-CctIumog.mjs +0 -1
  293. package/dist/manifest-CvTe5ZGV2.mjs +0 -1
  294. package/dist/manifest-D-5GH0DV.mjs +0 -1
  295. package/dist/manifest-D3Ssf3IC.mjs +0 -1
  296. package/dist/manifest-D5ck3NvC.mjs +0 -1
  297. package/dist/manifest-D9jUUJAu.mjs +0 -1
  298. package/dist/manifest-DCx6w2XV.mjs +0 -1
  299. package/dist/manifest-DG19q-Ld.mjs +0 -1
  300. package/dist/manifest-DLMlD0Zc.mjs +0 -1
  301. package/dist/manifest-DYpn8w_h.mjs +0 -1
  302. package/dist/manifest-DYzWI8Xs.mjs +0 -1
  303. package/dist/manifest-D_obs5F4.mjs +0 -1
  304. package/dist/manifest-DujQqEQR.mjs +0 -2
  305. package/dist/manifest-DwL2ik8P.mjs +0 -1
  306. package/dist/manifest-ItF5P8A12.mjs +0 -1
  307. package/dist/manifest-KZphqIyX.mjs +0 -1
  308. package/dist/manifest-LG42zPLY2.mjs +0 -1
  309. package/dist/manifest-LLdI5m4T.mjs +0 -1
  310. package/dist/manifest-QYbQXJn0.mjs +0 -1
  311. package/dist/manifest-RcpX_MyZ.mjs +0 -123
  312. package/dist/manifest-YgVd8Sgz.mjs +0 -1
  313. package/dist/manifest-Zy7Odg5J.mjs +0 -1
  314. package/dist/manifest-ff1H7Pdp.mjs +0 -1
  315. package/dist/manifest-iuhF6pTL2.mjs +0 -1
  316. package/dist/manifest-nXHmtMSp2.mjs +0 -1
  317. package/dist/manifest-xWfu6iLo.mjs +0 -1
  318. package/dist/manifest-yC16OhL2.mjs +0 -1
  319. package/dist/manifest-ztWJoXy4.mjs +0 -1
  320. package/dist/matchesWildcardPattern-BAG6LvX5.mjs +0 -1
  321. package/dist/modules-BPBcSaM-.mjs +0 -333
  322. package/dist/mojo-ipc-BhwsdVUW.mjs +0 -9
  323. package/dist/native-j8l473zn.mjs +0 -961
  324. package/dist/network-T0VRwNPd.mjs +0 -7
  325. package/dist/outputPaths-B4Ic4RZh.mjs +0 -2
  326. package/dist/parse-args-Bw413PlW.mjs +0 -1
  327. package/dist/platform-CzaQtISh.mjs +0 -93
  328. package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +0 -1
  329. package/dist/process-CWhsCWrf.mjs +0 -2
  330. package/dist/proxy-DZFlDsG3.mjs +0 -2
  331. package/dist/renderer-pid-9tJnZ_9N.mjs +0 -1
  332. package/dist/response-C7rKQst4.mjs +0 -1
  333. package/dist/search-defaults-lYBVn_3L.mjs +0 -1
  334. package/dist/shared-state-board-BSjXLUV1.mjs +0 -1
  335. package/dist/sourcemap-Dh3Ai_ur.mjs +0 -1
  336. package/dist/streaming-BcJ0B6ao.mjs +0 -1
  337. package/dist/transform-DOxzeWPB.mjs +0 -103
  338. package/dist/types-D9EiE5o9.mjs +0 -1
  339. package/dist/wasm-CZ_HTfKR.mjs +0 -174
  340. package/dist/webcrack-C1iYG_EX.mjs +0 -46
  341. package/dist/workflow-BdwQmARn.mjs +0 -101
  342. /package/dist/{CacheAdapters-CsNtQIR8.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
  343. /package/dist/{EventBus-DL8iLA09.mjs → EventBus-Cm-t-B65.mjs} +0 -0
  344. /package/dist/{EvidenceGraphBridge-BtbwXsLC.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
  345. /package/dist/{HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
  346. /package/dist/{RingBuffer-Dm54ELKT.mjs → RingBuffer-B6RTHmij.mjs} +0 -0
  347. /package/dist/{StealthVerifier-BmcxfwSF.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
  348. /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
  349. /package/dist/{authorization-schema-BOFwSXUN.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
  350. /package/dist/{bind-helpers-m2U8glkF.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
  351. /package/dist/{concurrency-DCr8WQ2M.mjs → concurrency-Dehnw4JC.mjs} +0 -0
  352. /package/dist/{evidence-graph-bridge-CV_UdYqj.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
  353. /package/dist/{formatAddress-vLA_hOJt.mjs → formatAddress-DAcw4Ckg.mjs} +0 -0
  354. /package/dist/{chunk-C_pMuVsO.mjs → rolldown-runtime-88NL7fhV.mjs} +0 -0
  355. /package/dist/{ssrf-policy-CsIJGkpd.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
  356. /package/dist/{tool-builder-qif8M9-K.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
  357. /package/dist/{types-Fz69RzbZ.mjs → types-BzPBzmVB.mjs} +0 -0
@@ -1 +1 @@
1
- import{Qn as e,Zn as t}from"./constants-BYj8Xek8.mjs";import{n,t as r}from"./formatAddress-vLA_hOJt.mjs";import{randomUUID as i}from"node:crypto";function a(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;case`hex`:case`string`:return 0;default:return 4}}function o(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;default:return 1}}function s(e){switch(e){case`byte`:return e=>e.readUInt8(0);case`int8`:return e=>e.readInt8(0);case`int16`:return e=>e.readInt16LE(0);case`uint16`:return e=>e.readUInt16LE(0);case`int32`:return e=>e.readInt32LE(0);case`uint32`:return e=>e.readUInt32LE(0);case`int64`:return e=>e.readBigInt64LE(0);case`uint64`:case`pointer`:return e=>e.readBigUInt64LE(0);case`float`:return e=>e.readFloatLE(0);case`double`:return e=>e.readDoubleLE(0);default:return e=>e.readInt32LE(0)}}function c(e){return e===`float`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-6:e===`double`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-12:e===`int64`||e===`uint64`||e===`pointer`?(e,t)=>e===t:(e,t)=>Number(e)===Number(t)}function l(e,t){let n=s(t),r=c(t),i=t===`int64`||t===`uint64`||t===`pointer`?(e,t)=>{let n=BigInt(e),r=BigInt(t);return n<r?-1:+(n>r)}:(e,t)=>Number(e)-Number(t);switch(e){case`exact`:return(e,t,i,a)=>i?r(n(e),n(i)):!1;case`unknown_initial`:return()=>!0;case`changed`:return(e,t,i,a)=>t?!r(n(e),n(t)):!1;case`unchanged`:return(e,t,i,a)=>t?r(n(e),n(t)):!0;case`increased`:return(e,t,r,a)=>t?i(n(e),n(t))>0:!1;case`decreased`:return(e,t,r,a)=>t?i(n(e),n(t))<0:!1;case`greater_than`:return(e,t,r,a)=>r?i(n(e),n(r))>0:!1;case`less_than`:return(e,t,r,a)=>r?i(n(e),n(r))<0:!1;case`between`:return(e,t,r,a)=>!r||!a?!1:i(n(e),n(r))>=0&&i(n(e),n(a))<=0;case`not_equal`:return(e,t,i,a)=>i?!r(n(e),n(i)):!1;default:return()=>!1}}const u=new Map;function d(e,t){let n=`${e}:${t}`,r=u.get(n);return r||(r=l(e,t),u.set(n,r)),r}function f(e,t,n,r,i,a){return d(i,a)(e,t,n,r)}var p=class{sessions=new Map;maxSessions;sessionTtlMs;constructor(n=t,r=e){this.maxSessions=n,this.sessionTtlMs=r}createSession(e,t){if(this.cleanup(),this.sessions.size>=this.maxSessions){let e=null,t=1/0;for(let[n,r]of this.sessions)r.createdAt<t&&(t=r.createdAt,e=n);e&&this.sessions.delete(e)}let n=i(),r=t.alignment??o(t.valueType),a=Date.now(),s={id:n,pid:e,valueType:t.valueType,alignment:r,createdAt:a,lastScanAt:a,scanCount:0,addresses:[],previousValues:new Map};return this.sessions.set(n,s),n}getSession(e){let t=this.sessions.get(e);if(!t)throw Error(`Scan session not found: ${e}`);if(Date.now()-t.lastScanAt>this.sessionTtlMs)throw this.sessions.delete(e),Error(`Scan session expired: ${e}`);return t}updateSession(e,t,n){let r=this.getSession(e);r.addresses=t,r.previousValues=n,r.lastScanAt=Date.now(),r.scanCount++}listSessions(){this.cleanup();let e=[],t=Date.now();for(let n of this.sessions.values()){let r=t-n.createdAt,i=Math.floor(r/6e4),a=Math.floor(r%6e4/1e3);e.push({id:n.id,pid:n.pid,valueType:n.valueType,addressCount:n.addresses.length,scanCount:n.scanCount,age:i>0?`${i}m${a}s`:`${a}s`})}return e}deleteSession(e){return this.sessions.delete(e)}cleanup(){let e=Date.now(),t=0;for(let[n,r]of this.sessions)e-r.lastScanAt>this.sessionTtlMs&&(this.sessions.delete(n),t++);return t}exportSession(e){let t=this.getSession(e),n={...t,addresses:t.addresses.map(e=>r(e)),previousValues:Array.from(t.previousValues.entries()).map(([e,t])=>[r(e),t.toString(`hex`)])};return JSON.stringify(n)}importSession(e){let t=JSON.parse(e),r=i(),a=Date.now(),o=new Map;if(Array.isArray(t.previousValues))for(let[e,r]of t.previousValues)typeof e==`string`&&typeof r==`string`&&o.set(n(e),Buffer.from(r,`hex`));let s=[];if(Array.isArray(t.addresses))for(let e of t.addresses)typeof e==`string`&&s.push(n(e));let c={id:r,pid:t.pid,valueType:t.valueType,alignment:t.alignment??4,createdAt:a,lastScanAt:a,scanCount:t.scanCount??0,addresses:s,previousValues:o};return this.sessions.set(r,c),r}};const m=new p;export{p as MemoryScanSessionManager,o as n,a as r,m as scanSessionManager,f as t};
1
+ import{Jr as e,Yr as t}from"./constants-nvsLpSri.mjs";import{n,t as r}from"./formatAddress-DAcw4Ckg.mjs";import{randomUUID as i}from"node:crypto";function a(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;case`hex`:case`string`:return 0;default:return 4}}function o(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;default:return 1}}function s(e){switch(e){case`byte`:return e=>e.readUInt8(0);case`int8`:return e=>e.readInt8(0);case`int16`:return e=>e.readInt16LE(0);case`uint16`:return e=>e.readUInt16LE(0);case`int32`:return e=>e.readInt32LE(0);case`uint32`:return e=>e.readUInt32LE(0);case`int64`:return e=>e.readBigInt64LE(0);case`uint64`:case`pointer`:return e=>e.readBigUInt64LE(0);case`float`:return e=>e.readFloatLE(0);case`double`:return e=>e.readDoubleLE(0);default:return e=>e.readInt32LE(0)}}function c(e){return e===`float`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-6:e===`double`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-12:e===`int64`||e===`uint64`||e===`pointer`?(e,t)=>e===t:(e,t)=>Number(e)===Number(t)}function l(e,t){let n=s(t),r=c(t),i=t===`int64`||t===`uint64`||t===`pointer`?(e,t)=>{let n=BigInt(e),r=BigInt(t);return n<r?-1:+(n>r)}:(e,t)=>Number(e)-Number(t);switch(e){case`exact`:return(e,t,i,a)=>i?r(n(e),n(i)):!1;case`unknown_initial`:return()=>!0;case`changed`:return(e,t,i,a)=>t?!r(n(e),n(t)):!1;case`unchanged`:return(e,t,i,a)=>t?r(n(e),n(t)):!0;case`increased`:return(e,t,r,a)=>t?i(n(e),n(t))>0:!1;case`decreased`:return(e,t,r,a)=>t?i(n(e),n(t))<0:!1;case`greater_than`:return(e,t,r,a)=>r?i(n(e),n(r))>0:!1;case`less_than`:return(e,t,r,a)=>r?i(n(e),n(r))<0:!1;case`between`:return(e,t,r,a)=>!r||!a?!1:i(n(e),n(r))>=0&&i(n(e),n(a))<=0;case`not_equal`:return(e,t,i,a)=>i?!r(n(e),n(i)):!1;default:return()=>!1}}const u=new Map;function d(e,t){let n=`${e}:${t}`,r=u.get(n);return r||(r=l(e,t),u.set(n,r)),r}function f(e,t,n,r,i,a){return d(i,a)(e,t,n,r)}var p=class{sessions=new Map;maxSessions;sessionTtlMs;constructor(n=e,r=t){this.maxSessions=n,this.sessionTtlMs=r}createSession(e,t){if(this.cleanup(),this.sessions.size>=this.maxSessions){let e=null,t=1/0;for(let[n,r]of this.sessions)r.createdAt<t&&(t=r.createdAt,e=n);e&&this.sessions.delete(e)}let n=i(),r=t.alignment??o(t.valueType),a=Date.now(),s={id:n,pid:e,valueType:t.valueType,alignment:r,createdAt:a,lastScanAt:a,scanCount:0,addresses:[],previousValues:new Map};return this.sessions.set(n,s),n}getSession(e){let t=this.sessions.get(e);if(!t)throw Error(`Scan session not found: ${e}`);if(Date.now()-t.lastScanAt>this.sessionTtlMs)throw this.sessions.delete(e),Error(`Scan session expired: ${e}`);return t}updateSession(e,t,n){let r=this.getSession(e);r.addresses=t,r.previousValues=n,r.lastScanAt=Date.now(),r.scanCount++}listSessions(){this.cleanup();let e=[],t=Date.now();for(let n of this.sessions.values()){let r=t-n.createdAt,i=Math.floor(r/6e4),a=Math.floor(r%6e4/1e3);e.push({id:n.id,pid:n.pid,valueType:n.valueType,addressCount:n.addresses.length,scanCount:n.scanCount,age:i>0?`${i}m${a}s`:`${a}s`})}return e}deleteSession(e){return this.sessions.delete(e)}cleanup(){let e=Date.now(),t=0;for(let[n,r]of this.sessions)e-r.lastScanAt>this.sessionTtlMs&&(this.sessions.delete(n),t++);return t}exportSession(e){let t=this.getSession(e),n={...t,addresses:t.addresses.map(e=>r(e)),previousValues:Array.from(t.previousValues.entries()).map(([e,t])=>[r(e),t.toString(`hex`)])};return JSON.stringify(n)}importSession(e){let t=JSON.parse(e),r=i(),a=Date.now(),o=new Map;if(Array.isArray(t.previousValues))for(let[e,r]of t.previousValues)typeof e==`string`&&typeof r==`string`&&o.set(n(e),Buffer.from(r,`hex`));let s=[];if(Array.isArray(t.addresses))for(let e of t.addresses)typeof e==`string`&&s.push(n(e));let c={id:r,pid:t.pid,valueType:t.valueType,alignment:t.alignment??4,createdAt:a,lastScanAt:a,scanCount:t.scanCount??0,addresses:s,previousValues:o};return this.sessions.set(r,c),r}};const m=new p;export{p as MemoryScanSessionManager,o as n,a as r,m as scanSessionManager,f as t};
@@ -0,0 +1 @@
1
+ import{Gr as e,Kr as t,Wr as n,Xr as r,ei as i,qr as a}from"./constants-nvsLpSri.mjs";import{t as o}from"./ToolError-g3rjWzhx.mjs";import{t as s}from"./factory-BeND77hf.mjs";import{i as c}from"./NativeMemoryManager.utils-CMoul2an.mjs";import{t as l}from"./NativeMemoryManager.impl-BIJzXMqH.mjs";import{n as u,t as d}from"./formatAddress-DAcw4Ckg.mjs";import{n as f,r as p,scanSessionManager as m,t as h}from"./MemoryScanSession-BZ2A9Ph1.mjs";var g=class{nmm;providerCache=null;get provider(){return this.providerCache||=s(),this.providerCache}set provider(e){this.providerCache=e}constructor(e){this.nmm=e}async firstScan(e,r,i){let a=performance.now(),s=i.valueType,l=p(s),u=i.alignment??f(s),h=i.maxResults??t;if(l===0)return this.patternFirstScan(e,r,s,i);let{patternBytes:g}=c(r,s===`pointer`?`uint64`:s);if(g.length===0)throw new o(`VALIDATION`,`Invalid pattern for type ${s}: "${r}"`);let _=Buffer.from(g),v=m.createSession(e,i),y=[],b=new Map,x=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(x,i),t=e.length,n=0;for(let r of e){if(i.onProgress&&i.onProgress(n,t),n++,y.length>=h)break;let e=r.baseAddress,a=r.size,o=16*1024*1024;for(let t=0;t<a&&y.length<h;t+=o){let n=Math.min(o,a-t),r=e+BigInt(t),i;try{i=this.provider.readMemory(x,r,n).data}catch{break}if(u===l&&l>0){let e=this.getAlignStep(u),t=this.getAlignedChunkStart(r,e);for(;t<=i.length-l&&y.length<h;){let n=i.indexOf(_,t);if(n===-1)break;if(!this.isAlignedAddress(r+BigInt(n),e)){t=n+1;continue}let a=r+BigInt(n);y.push(a),b.set(a,Buffer.from(i.subarray(n,n+l))),t=n+e}}else{let e=this.getAlignStep(u),t=this.getAlignedChunkStart(r,e);for(let n=t;n<=i.length-l;n+=e)if(Buffer.compare(i.subarray(n,n+l),_)===0){let e=r+BigInt(n);if(y.push(e),b.set(e,Buffer.from(i.subarray(n,n+l))),y.length>=h)break}}}}}finally{this.provider.closeProcess(x)}m.updateSession(v,y,b);let S=`${(performance.now()-a).toFixed(1)}ms`,C=y.slice(0,n).map(d);return{sessionId:v,matchCount:y.length,scanNumber:1,addresses:C,totalMatches:y.length,truncated:y.length>n,elapsed:S}}async nextScan(e,t,r,i){let a=performance.now(),s=m.getSession(e),{pid:l,valueType:u,addresses:f,previousValues:g}=s,_=p(u);if(_===0)throw new o(`VALIDATION`,`Next-scan is not supported for variable-length types (hex/string)`);let v=null,y=null;if(r!==void 0){let{patternBytes:e}=c(r,u===`pointer`?`uint64`:u);v=Buffer.from(e)}if(i!==void 0){let{patternBytes:e}=c(i,u===`pointer`?`uint64`:u);y=Buffer.from(e)}let b=[],x=new Map,S=this.provider.openProcess(l,!1);try{for(let e of f){let n;try{n=this.provider.readMemory(S,e,_).data}catch{continue}let r=g.get(e)??null;h(n,r,v,y,t,u)&&(b.push(e),x.set(e,Buffer.from(n)))}}finally{this.provider.closeProcess(S)}m.updateSession(e,b,x);let C=`${(performance.now()-a).toFixed(1)}ms`,w=b.slice(0,n).map(d);return{sessionId:e,matchCount:b.length,scanNumber:s.scanCount,addresses:w,totalMatches:b.length,truncated:b.length>n,elapsed:C}}async unknownInitialScan(e,t){let i=performance.now(),a=t.valueType,s=p(a),c=t.alignment??f(a),l=t.maxResults??r;if(s===0)throw new o(`VALIDATION`,`Unknown initial scan is not supported for variable-length types`);let u=m.createSession(e,t),h=[],g=new Map,_=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(_,t),n=e.length,r=0;for(let i of e){if(t.onProgress&&t.onProgress(r,n),r++,h.length>=l)break;let e=i.baseAddress,a=i.size,o=16*1024*1024;for(let t=0;t<a&&h.length<l;t+=o){let n=Math.min(o,a-t),r=e+BigInt(t),i;try{i=this.provider.readMemory(_,r,n).data}catch{break}let u=this.getAlignStep(c),d=this.getAlignedChunkStart(r,u);for(let e=d;e<=i.length-s;e+=u){let t=r+BigInt(e);if(h.push(t),g.set(t,Buffer.from(i.subarray(e,e+s))),h.length>=l)break}}}}finally{this.provider.closeProcess(_)}m.updateSession(u,h,g);let v=`${(performance.now()-i).toFixed(1)}ms`;return{sessionId:u,matchCount:h.length,scanNumber:1,addresses:h.slice(0,n).map(d),totalMatches:h.length,truncated:h.length>n,elapsed:v}}async pointerScan(e,t,r={}){let i=performance.now(),o=r.maxResults??a,s=u(t),c={valueType:`pointer`,alignment:8,regionFilter:{moduleOnly:r.moduleOnly}},l=m.createSession(e,c),f=[],p=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(p,c);for(let t of e){if(f.length>=o)break;let e=t.baseAddress,n=t.size,r=16*1024*1024;for(let t=0;t<n&&f.length<o;t+=r){let i=Math.min(r,n-t),a=e+BigInt(t),c;try{c=this.provider.readMemory(p,a,i).data}catch{break}for(let e=0;e<=c.length-8;e+=8){let t=c.readBigUInt64LE(e);if(Number(t>s?t-s:s-t)<=4096){let n=a+BigInt(e),r=t>=s?Number(t-s):-Number(s-t);if(f.push({address:d(n),value:d(t),offsetFromTarget:r}),f.length>=o)break}}}}}finally{this.provider.closeProcess(p)}let h=f.map(e=>u(e.address));m.updateSession(l,h,new Map);let g=`${(performance.now()-i).toFixed(1)}ms`;return{sessionId:l,pointers:f.slice(0,n),totalFound:f.length,elapsed:g}}async groupScan(r,i,a){let s=performance.now();if(i.length===0)throw new o(`VALIDATION`,`Group scan requires at least one value pattern`);let l=Math.max(...i.map(e=>e.offset+p(e.type)));if(l>e)throw new o(`VALIDATION`,`Group pattern too large: ${l} bytes (max ${e})`);let u=Array.from({length:l},()=>0),f=Array.from({length:l},()=>0);for(let e of i){let t=e.type===`pointer`?`uint64`:e.type,{patternBytes:n,mask:r}=c(e.value,t);for(let t=0;t<n.length;t++)u[e.offset+t]=n[t],f[e.offset+t]=r[t]}let h=a?.alignment??4,g=a?.maxResults??t,_={valueType:`int32`,alignment:h},v=m.createSession(r,_),y=[],b=this.provider.openProcess(r,!1);try{let e=this.getFilteredRegions(b,_);for(let t of e){if(y.length>=g)break;let e=t.baseAddress,n=t.size,r=16*1024*1024,i=l-1;for(let t=0;t<n&&y.length<g;t+=r){let a=Math.min(r+i,n-t),o=e+BigInt(t),s;try{s=this.provider.readMemory(b,o,a).data}catch{break}let c=this.getAlignStep(h),d=this.getAlignedChunkStart(o,c);for(let e=d;e<=s.length-l;e+=c){let t=!0;for(let n=0;n<l;n++)if(f[n]===1&&s[e+n]!==u[n]){t=!1;break}if(t){let t=o+BigInt(e);if(y.push(t),y.length>=g)break}}}}}finally{this.provider.closeProcess(b)}m.updateSession(v,y,new Map);let x=`${(performance.now()-s).toFixed(1)}ms`;return{sessionId:v,matchCount:y.length,scanNumber:1,addresses:y.slice(0,n).map(d),totalMatches:y.length,truncated:y.length>n,elapsed:x}}async aobScan(e,t,n={}){let r=performance.now(),i=n.maxResults??1e4,a=[],o=t.trim().split(/\s+/);for(let e of o)if(e===`??`||e===`?`||e===`???`)a.push(null);else{let t=e.startsWith(`0x`)||e.startsWith(`0X`)?e.slice(2):e;if(t.length!==2||!/^[0-9a-fA-F]{2}$/.test(t))throw Error(`Invalid AOB pattern byte: "${e}" (expected 2 hex chars or "??")`);a.push(parseInt(t,16))}if(a.length===0)throw Error(`AOB pattern must contain at least one byte or wildcard`);let s=Buffer.from(a.map(e=>e??0)),c=a.map(e=>e!==null),l=[],u=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(u,{valueType:`byte`});if(n.moduleName){let t=n.moduleName.toLowerCase(),i=this.provider.enumerateModules(u).filter(e=>e.name.toLowerCase().includes(t)).map(e=>({baseAddress:e.baseAddress,size:e.size}));if(i.length===0)return{matches:[],totalMatches:0,elapsed:`${(performance.now()-r).toFixed(1)}ms`};e=e.filter(e=>i.some(t=>e.baseAddress>=t.baseAddress&&e.baseAddress<t.baseAddress+BigInt(t.size)))}let t=a.length;for(let n of e){if(l.length>=i)break;let e=16*1024*1024;for(let r=0;r<n.size&&l.length<i;r+=e){let a=Math.min(e,n.size-r),o=n.baseAddress+BigInt(r),d;try{d=this.provider.readMemory(u,o,a).data}catch{break}for(let e=0;e<=d.length-t&&l.length<i;e++){let n=!0;for(let r=0;r<t;r++)if(c[r]&&d[e+r]!==s[r]){n=!1;break}n&&l.push(o+BigInt(e))}}}}finally{this.provider.closeProcess(u)}let f=`${(performance.now()-r).toFixed(1)}ms`;return{matches:l.map(d),totalMatches:l.length,elapsed:f}}getAlignStep(e){return e>0?e:1}getAlignedChunkStart(e,t){let n=BigInt(t),r=e%n;return r===0n?0:Number(n-r)}isAlignedAddress(e,t){return e%BigInt(t)===0n}async patternFirstScan(e,r,i,a){let s=performance.now(),c=i===`hex`?`hex`:`string`,l=await this.nmm.scanMemory(e,r,c);if(!l.success)throw new o(`RUNTIME`,l.error??`Scan failed`);let f=m.createSession(e,a),p=a.maxResults??t,h=l.addresses.slice(0,p).map(u);m.updateSession(f,h,new Map);let g=`${(performance.now()-s).toFixed(1)}ms`;return{sessionId:f,matchCount:h.length,scanNumber:1,addresses:h.slice(0,n).map(d),totalMatches:l.addresses.length,truncated:h.length>n,elapsed:g}}getFilteredRegions(e,t){let n=[],r=0n,a=i,o=t.regionFilter;for(;r<a;){let t=this.provider.queryRegion(e,r);if(!t)break;let i=t.size;if(t.isReadable&&i>0&&i<=2**53-1){let e=!0;o?.writable&&!t.isWritable&&(e=!1),o?.executable&&!t.isExecutable&&(e=!1),o?.moduleOnly&&t.type!==`image`&&(e=!1),e&&n.push({baseAddress:t.baseAddress,size:i})}r=t.baseAddress+BigInt(t.size)}return n}};const _=new g(l);export{g as MemoryScanner,_ as memoryScanner};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{ei as t}from"./constants-nvsLpSri.mjs";import{n}from"./concurrency-Dehnw4JC.mjs";import{C as r,S as i}from"./Win32API-G7QPyckq.mjs";import{t as a}from"./factory-BeND77hf.mjs";import{i as o,t as s}from"./NativeMemoryManager.utils-CMoul2an.mjs";import{promisify as c}from"node:util";import{exec as l}from"node:child_process";async function u(e){if(process.platform===`darwin`)return d(e);if(process.platform===`linux`)return{available:!0};if(!r())return{available:!1,reason:`Native memory operations require Windows, macOS, or Linux. Current platform: ${process.platform}`};if(!i())return{available:!1,reason:`koffi library not available. Install with: pnpm add koffi`};try{let{stdout:t}=await e(`powershell.exe -NoProfile -Command "([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)"`,{timeout:5e3});if(t.trim().toLowerCase()!==`true`)return{available:!1,reason:`Native memory operations require Administrator privileges. Run as Administrator.`}}catch{return{available:!1,reason:`Failed to check Administrator privileges.`}}return{available:!0}}async function d(e){try{(await import(`koffi`)).default.load(`/usr/lib/libSystem.B.dylib`).unload()}catch{return{available:!1,reason:`koffi library cannot load libSystem.B.dylib. Install koffi with: pnpm add koffi`}}let t=``;try{let{stdout:n}=await e(`csrutil status 2>&1 || true`,{timeout:5e3});t=n.trim()}catch{}return process.getuid&&process.getuid()!==0?{available:!1,reason:`macOS memory operations require root privileges for task_for_pid. Run with: sudo node <your-script>.${t?` SIP status: ${t}`:``}`}:{available:!0}}const f=c(l);function p(e,t,n,r,i=16777216){if(t.length===0||e.regionSize<t.length||i<=0)return[];let a=Math.max(t.length-1,0),o=Buffer.alloc(0),c=[];for(let l=0;l<e.regionSize;l+=i){let u=Math.min(i,e.regionSize-l),d=r(e.baseAddress+BigInt(l),u),f=o.length>0?Buffer.concat([o,d]):d,p=s(f,t,n);for(let t of p){let n=l+t-o.length;c.push(e.baseAddress+BigInt(n))}if(a===0||l+u>=e.regionSize){o=Buffer.alloc(0);continue}let m=Math.min(a,f.length);o=f.subarray(f.length-m)}return c}var m=class{providerCache=null;get provider(){return this.providerCache||=a(),this.providerCache}set provider(e){this.providerCache=e}async checkAvailability(){return u(f)}async readMemory(t,n,r){try{let e=BigInt(n.startsWith(`0x`)?n:`0x${n}`),i=this.provider.openProcess(t,!1);try{let{data:t}=this.provider.readMemory(i,e,r);return{success:!0,data:t.toString(`hex`).toUpperCase().match(/.{2}/g)?.join(` `)||``}}finally{this.provider.closeProcess(i)}}catch(i){return e.error(`Native memory read failed`,{pid:t,address:n,size:r,error:i instanceof Error?i.message:String(i)}),{success:!1,error:i instanceof Error?i.message:String(i)}}}async writeMemory(t,n,r,i=`hex`){try{let e=BigInt(n.startsWith(`0x`)?n:`0x${n}`),a;a=i===`base64`?Buffer.from(r,`base64`):Buffer.from(r.replace(/\s/g,``),`hex`);let o=this.provider.openProcess(t,!0);try{let{bytesWritten:t}=this.provider.writeMemory(o,e,a);return{success:!0,bytesWritten:t}}finally{this.provider.closeProcess(o)}}catch(a){return e.error(`Native memory write failed`,{pid:t,address:n,encoding:i,dataLength:r.length,error:a instanceof Error?a.message:String(a)}),{success:!1,error:a instanceof Error?a.message:String(a)}}}async enumerateRegions(n){try{let e=this.provider.openProcess(n,!1),r=[];try{let n=0n,i=t;for(;n<i;){let t=this.provider.queryRegion(e,n);if(!t)break;r.push(h(t)),n=t.baseAddress+BigInt(t.size)}return{success:!0,regions:r}}finally{this.provider.closeProcess(e)}}catch(t){return e.error(`Native region enumeration failed`,{pid:n,error:t instanceof Error?t.message:String(t)}),{success:!1,error:t instanceof Error?t.message:String(t)}}}async checkMemoryProtection(t,n){try{let e=BigInt(n.startsWith(`0x`)?n:`0x${n}`),r=this.provider.openProcess(t,!1);try{let t=this.provider.queryRegion(r,e);return t?{success:!0,protection:g(t.protection),isWritable:t.isWritable,isReadable:t.isReadable,isExecutable:t.isExecutable,regionStart:`0x${t.baseAddress.toString(16).toUpperCase()}`,regionSize:t.size}:{success:!1,error:`Failed to query memory region`}}finally{this.provider.closeProcess(r)}}catch(r){return e.error(`Native protection check failed`,{pid:t,address:n,error:r instanceof Error?r.message:String(r)}),{success:!1,error:r instanceof Error?r.message:String(r)}}}async scanMemory(r,i,a=`hex`){try{let{patternBytes:e,mask:s}=o(i,a);if(e.length===0)return{success:!1,addresses:[],error:`Invalid pattern`};let c=1e4,l=[],u=this.provider.openProcess(r,!1),d=[];try{let r=0n,i=t;for(;r<i;){let e=this.provider.queryRegion(u,r);if(!e)break;e.isReadable&&e.size>0&&e.size<=2**53-1&&l.push({baseAddress:e.baseAddress,regionSize:e.size}),r=e.baseAddress+BigInt(e.size)}let a=this.provider;d=await Promise.all(l.map(t=>n(async()=>{try{return p(t,e,s,(e,t)=>a.readMemory(u,e,t).data)}catch{return[]}})))}finally{this.provider.closeProcess(u)}let f=[];for(let e of d){for(let t of e)if(f.push(`0x${t.toString(16).toUpperCase()}`),f.length>=c)break;if(f.length>=c)break}return{success:!0,addresses:f,stats:{patternLength:e.length,resultsFound:f.length}}}catch(t){return e.error(`Native memory scan failed`,{pid:r,patternType:a,patternLength:i.length,error:t instanceof Error?t.message:String(t)}),{success:!1,addresses:[],error:t instanceof Error?t.message:String(t)}}}async enumerateModules(t){try{let e=this.provider.openProcess(t,!1);try{return{success:!0,modules:this.provider.enumerateModules(e).map(e=>({name:e.name,baseAddress:`0x${e.baseAddress.toString(16).toUpperCase()}`,size:e.size}))}}finally{this.provider.closeProcess(e)}}catch(n){return e.error(`Native module enumeration failed`,{pid:t,error:n instanceof Error?n.message:String(n)}),{success:!1,error:n instanceof Error?n.message:String(n)}}}async injectDll(t,n){if(process.platform!==`win32`)return{success:!1,error:`DLL injection is only supported on Windows`};try{let{openProcessForMemory:e,CloseHandle:r,WriteProcessMemory:i,VirtualAllocEx:a,CreateRemoteThread:o,GetModuleHandle:s,GetProcAddress:c,PAGE:l,MEM:u}=await import(`./Win32API-G7QPyckq.mjs`).then(e=>e.v),d=e(t,!0);try{let e=c(s(`kernel32.dll`),`LoadLibraryA`);if(!e)return{success:!1,error:`Failed to get LoadLibraryA address`};let t=Buffer.from(n+`\0`,`ascii`),f=a(d,0n,t.length,u.COMMIT|u.RESERVE,l.READWRITE);if(!f)return{success:!1,error:`Failed to allocate remote memory`};i(d,f,t);let{handle:p,threadId:m}=o(d,e,f);return p?(r(p),{success:!0,remoteThreadId:m}):{success:!1,error:`Failed to create remote thread`}}finally{r(d)}}catch(r){return e.error(`Native DLL injection failed`,{pid:t,dllPath:n,error:r instanceof Error?r.message:String(r)}),{success:!1,error:r instanceof Error?r.message:String(r)}}}async injectShellcode(t,n,r=`hex`){if(process.platform!==`win32`)return{success:!1,error:`Shellcode injection is only supported on Windows`};try{let e;e=r===`base64`?Buffer.from(n,`base64`):Buffer.from(n.replace(/\s/g,``),`hex`);let{openProcessForMemory:i,CloseHandle:a,WriteProcessMemory:o,VirtualAllocEx:s,VirtualProtectEx:c,CreateRemoteThread:l,PAGE:u,MEM:d}=await import(`./Win32API-G7QPyckq.mjs`).then(e=>e.v),f=i(t,!0);try{let t=s(f,0n,e.length,d.COMMIT|d.RESERVE,u.READWRITE);if(!t)return{success:!1,error:`Failed to allocate remote memory`};o(f,t,e);let{success:n}=c(f,t,e.length,u.EXECUTE_READWRITE);if(!n)return{success:!1,error:`Failed to change memory protection`};let{handle:r,threadId:i}=l(f,t,0n);return r?(a(r),{success:!0,remoteThreadId:i}):{success:!1,error:`Failed to create remote thread`}}finally{a(f)}}catch(i){return e.error(`Native shellcode injection failed`,{pid:t,encoding:r,shellcodeLength:n.length,error:i instanceof Error?i.message:String(i)}),{success:!1,error:i instanceof Error?i.message:String(i)}}}async checkDebugPort(t){if(process.platform!==`win32`)return{success:!1,error:`Debug port check is only supported on Windows`};try{let{openProcessForMemory:e,CloseHandle:n,NtQueryInformationProcess:r}=await import(`./Win32API-G7QPyckq.mjs`).then(e=>e.v),i=e(t,!1);try{let{status:e,debugPort:t}=r(i,7);return e===0?{success:!0,isDebugged:t!==0}:{success:!1,error:`NtQueryInformationProcess failed with status 0x${e.toString(16)}`}}finally{n(i)}}catch(n){return e.error(`Native debug port check failed`,{pid:t,error:n instanceof Error?n.message:String(n)}),{success:!1,error:n instanceof Error?n.message:String(n)}}}};function h(e){return{baseAddress:`0x${e.baseAddress.toString(16).toUpperCase()}`,size:e.size,state:e.state.toUpperCase(),protection:g(e.protection),isReadable:e.isReadable,isWritable:e.isWritable,isExecutable:e.isExecutable,type:e.type.toUpperCase()}}function g(e){if(e===0)return`NOACCESS`;let t=[],n=(e&1)!=0,r=(e&2)!=0,i=(e&4)!=0,a=(e&8)!=0;return n&&r&&i?t.push(`RWX`):n&&i?t.push(`RX`):n&&r?t.push(`RW`):n?t.push(`R`):i&&t.push(`X`),a&&t.push(`GUARD`),t.join(` `)||`UNKNOWN`}const _=new m;export{_ as t};
@@ -1 +1 @@
1
- import{u as e,v as t}from"./Win32API-eUCF57l_.mjs";function n(){return t()}function r(e,t){let n=[],r=[];switch(t){case`hex`:{let t=e.trim().split(/\s+/);for(let e of t)if(e===`??`||e===`**`||e===`?`)n.push(0),r.push(0);else{let t=parseInt(e,16);isNaN(t)||(n.push(t),r.push(1))}break}case`int32`:{let t=parseInt(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeInt32LE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`int64`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}case`float`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeFloatLE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`double`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(8);e.writeDoubleLE(t,0),n.push(...e),r.push(1,1,1,1,1,1,1,1)}break}case`string`:{let t=Buffer.from(e,`utf8`);n.push(...t),r.push(...t.map(()=>1));break}case`byte`:{let t=parseInt(e)&255;n.push(t),r.push(1);break}case`int8`:{let t=parseInt(e),i=Buffer.allocUnsafe(1);i.writeInt8(t,0),n.push(...i),r.push(1);break}case`int16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeUInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint32`:{let t=parseInt(e)>>>0,i=Buffer.allocUnsafe(4);i.writeUInt32LE(t,0),n.push(...i),r.push(1,1,1,1);break}case`uint64`:case`pointer`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigUInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}}return{patternBytes:n,mask:r}}function i(e,t){let n=[],r=t.length;if(r===0||e.length<r)return n;let i=r-1,a=new Uint32Array(256);a.fill(r);for(let e=0;e<i;e++){let n=t[e];n!==void 0&&(a[n]=i-e)}let o=0;for(;o<=e.length-r;){let s=i;for(;s>=0&&e[o+s]===t[s];)s--;if(s<0){n.push(o),o+=1;continue}let c=e[o+i];if(c===void 0)break;o+=a[c]??r}return n}function a(e,t,n){if(t.length===0)return[];if(n.every(e=>e===1))return i(e,t);let r=[];for(let i=0;i<=e.length-t.length;i++){let a=!0;for(let r=0;r<t.length;r++)if(n[r]===1&&e[i+r]!==t[r]){a=!1;break}a&&r.push(i)}return r}function o(t){return(t&e.EXECUTE)!==0||(t&e.EXECUTE_READ)!==0||(t&e.EXECUTE_READWRITE)!==0}export{r as i,o as n,n as r,a as t};
1
+ import{S as e,d as t}from"./Win32API-G7QPyckq.mjs";function n(){return e()}function r(e,t){let n=[],r=[];switch(t){case`hex`:{let t=e.trim().split(/\s+/);for(let e of t)if(e===`??`||e===`**`||e===`?`)n.push(0),r.push(0);else{let t=parseInt(e,16);isNaN(t)||(n.push(t),r.push(1))}break}case`int32`:{let t=parseInt(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeInt32LE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`int64`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}case`float`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeFloatLE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`double`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(8);e.writeDoubleLE(t,0),n.push(...e),r.push(1,1,1,1,1,1,1,1)}break}case`string`:{let t=Buffer.from(e,`utf8`);n.push(...t),r.push(...t.map(()=>1));break}case`byte`:{let t=parseInt(e)&255;n.push(t),r.push(1);break}case`int8`:{let t=parseInt(e),i=Buffer.allocUnsafe(1);i.writeInt8(t,0),n.push(...i),r.push(1);break}case`int16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeUInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint32`:{let t=parseInt(e)>>>0,i=Buffer.allocUnsafe(4);i.writeUInt32LE(t,0),n.push(...i),r.push(1,1,1,1);break}case`uint64`:case`pointer`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigUInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}}return{patternBytes:n,mask:r}}function i(e,t){let n=[],r=t.length;if(r===0||e.length<r)return n;let i=r-1,a=new Uint32Array(256);a.fill(r);for(let e=0;e<i;e++){let n=t[e];n!==void 0&&(a[n]=i-e)}let o=0;for(;o<=e.length-r;){let s=i;for(;s>=0&&e[o+s]===t[s];)s--;if(s<0){n.push(o),o+=1;continue}let c=e[o+i];if(c===void 0)break;o+=a[c]??r}return n}function a(e,t,n){if(t.length===0)return[];if(n.every(e=>e===1))return i(e,t);let r=[];for(let i=0;i<=e.length-t.length;i++){let a=!0;for(let r=0;r<t.length;r++)if(n[r]===1&&e[i+r]!==t[r]){a=!1;break}a&&r.push(i)}return r}function o(e){return(e&t.EXECUTE)!==0||(e&t.EXECUTE_READ)!==0||(e&t.EXECUTE_READWRITE)!==0}export{r as i,o as n,n as r,a as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{t}from"./logger-BGCcd-jJ.mjs";import{a as n,i as r,n as i,p as a,s as o,t as s,w as c}from"./Win32API-G7QPyckq.mjs";import{n as l,t as u}from"./HookPatternScanner-yx4vJ9sd.mjs";import{promises as d}from"node:fs";const f={CNT_CODE:32,CNT_INITIALIZED_DATA:64,CNT_UNINITIALIZED_DATA:128,MEM_EXECUTE:536870912,MEM_READ:1073741824,MEM_WRITE:2147483648},p={EXPORT:0,IMPORT:1,RESOURCE:2,EXCEPTION:3,IAT:12,DELAY_IMPORT:13};var m=e({PEAnalyzer:()=>_,peAnalyzer:()=>v});const h=23117,g=17744;var _=class{async parseHeaders(e,t){let n=BigInt(t),r=c(e);try{let e=a(r,n,64),t=e.readUInt16LE(0);if(t!==h)throw Error(`Invalid DOS header: expected 0x5A4D, got 0x${t.toString(16)}`);let i=e.readUInt32LE(60),o=a(r,n+BigInt(i),264),s=o.readUInt32LE(0);if(s!==g)throw Error(`Invalid PE signature: expected 0x4550, got 0x${s.toString(16)}`);let c=o.readUInt16LE(4),l=o.readUInt16LE(6),u=o.readUInt32LE(8),d=o.readUInt16LE(22),f=o.readUInt16LE(24),p=f===523,m,_,v,y;return p?(_=o.readUInt32LE(40),m=o.readBigUInt64LE(48),v=o.readUInt32LE(80),y=o.readUInt32LE(132)):(_=o.readUInt32LE(40),m=BigInt(o.readUInt32LE(52)),v=o.readUInt32LE(80),y=o.readUInt32LE(116)),{dosHeader:{e_magic:t,e_lfanew:i},ntSignature:s,fileHeader:{machine:c,numberOfSections:l,timeDateStamp:u,characteristics:d},optionalHeader:{magic:f,imageBase:`0x${m.toString(16)}`,entryPoint:`0x${_.toString(16)}`,sizeOfImage:v,numberOfRvaAndSizes:y}}}finally{s(r)}}async listSections(e,t){let n=BigInt(t),r=c(e);try{let e=await this.readCoreHeaders(r,n),t=[];for(let i=0;i<e.numSections;i++){let o=e.firstSectionOffset+i*40,s=a(r,n+BigInt(o),40),c=s.indexOf(0),l=s.subarray(0,c>0&&c<=8?c:8).toString(`ascii`),u=s.readUInt32LE(8),d=s.readUInt32LE(12),p=s.readUInt32LE(16),m=s.readUInt32LE(36);t.push({name:l,virtualAddress:`0x${d.toString(16)}`,virtualSize:u,rawSize:p,characteristics:m,isExecutable:(m&f.MEM_EXECUTE)!==0,isWritable:(m&f.MEM_WRITE)!==0,isReadable:(m&f.MEM_READ)!==0})}return t}finally{s(r)}}async parseImports(e,t){let n=BigInt(t),r=c(e);try{let e=await this.readCoreHeaders(r,n),t=e.dataDirectories[p.IMPORT];if(!t||t.rva===0)return[];let i=[],o=t.rva;for(let t=0;t<500;t++){let t=a(r,n+BigInt(o),20),s=t.readUInt32LE(12);if(s===0)break;let c=a(r,n+BigInt(s),256),l=c.indexOf(0),u=c.subarray(0,l>0?l:256).toString(`ascii`),d=t.readUInt32LE(0)||t.readUInt32LE(16),f=this.readThunkArray(r,n,d,e.isPE32Plus);i.push({dllName:u,functions:f}),o+=20}return i}finally{s(r)}}async parseExports(e,t){let n=BigInt(t),r=c(e);try{let e=(await this.readCoreHeaders(r,n)).dataDirectories[p.EXPORT];if(!e||e.rva===0)return[];let t=a(r,n+BigInt(e.rva),40),i=t.readUInt32LE(24),o=t.readUInt32LE(28),s=t.readUInt32LE(32),c=t.readUInt32LE(36),l=t.readUInt32LE(16),u=[],d=a(r,n+BigInt(s),i*4),f=a(r,n+BigInt(c),i*2);for(let t=0;t<Math.min(i,2e3);t++){let i=d.readUInt32LE(t*4),s=f.readUInt16LE(t*2),c=a(r,n+BigInt(i),256),p=c.indexOf(0),m=c.subarray(0,p>0?p:256).toString(`ascii`),h=a(r,n+BigInt(o+s*4),4).readUInt32LE(0),g=null;if(h>=e.rva&&h<e.rva+e.size){let e=a(r,n+BigInt(h),256),t=e.indexOf(0);g=e.subarray(0,t>0?t:256).toString(`ascii`)}u.push({name:m,ordinal:l+s,rva:`0x${h.toString(16)}`,forwardedTo:g})}return u}finally{s(r)}}async detectInlineHooks(e,n){let r=c(e),i=[];try{let o=this.enumerateModulesInternal(r),s=n?o.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())):o;for(let n of s)try{let t=await d.readFile(n.path),o=await this.parseExports(e,n.base);for(let e of o){let o=parseInt(e.rva,16);if(o===0||e.forwardedTo)continue;let s=a(r,BigInt(n.base)+BigInt(o),16),c=this.rvaToFileOffset(t,o);if(c<0||c+16>t.length)continue;let l=t.subarray(c,c+16);if(!s.equals(l)){let t=this.classifyHook(s),r=this.decodeJumpTarget(s,BigInt(n.base)+BigInt(o));i.push({address:`0x${(BigInt(n.base)+BigInt(o)).toString(16)}`,moduleName:n.name,functionName:e.name,originalBytes:Array.from(l),currentBytes:Array.from(s),hookType:t,jumpTarget:r})}}}catch(e){t.debug(`Hook check skipped for ${n.name}: ${e}`)}}finally{s(r)}return i}async detectIATHooks(e,n){let r=c(e),i=[];try{let e=this.enumerateModulesInternal(r),o=n?e.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())):e;for(let n of o)try{let t=BigInt(n.base),o=await this.readCoreHeaders(r,t),s=o.dataDirectories[p.IMPORT];if(!s||s.rva===0)continue;let c=o.isPE32Plus?8:4,l=o.isPE32Plus?9223372036854775808n:2147483648n,u=s.rva;for(let s=0;s<500;s++){let s=a(r,t+BigInt(u),20),d=s.readUInt32LE(12);if(d===0)break;let f=s.readUInt32LE(16),p=s.readUInt32LE(0),m=a(r,t+BigInt(d),256),h=m.indexOf(0),g=m.subarray(0,h>0?h:256).toString(`ascii`),_=g.toLowerCase().replace(/\.dll$/i,``),v=e.find(e=>e.name.toLowerCase()===g.toLowerCase())??e.find(e=>e.name.toLowerCase().replace(/\.dll$/i,``)===_),y=v?BigInt(v.base):0n,b=v?y+BigInt(v.size):0n;for(let s=0;s<2e3;s++){let u=t+BigInt(f+s*c),d=a(r,u,c),m=o.isPE32Plus?d.readBigUInt64LE(0):BigInt(d.readUInt32LE(0));if(m===0n)break;let h=`Ordinal#0`,_=p||f;if(_){let e=a(r,t+BigInt(_+s*c),c),n=o.isPE32Plus?e.readBigUInt64LE(0):BigInt(e.readUInt32LE(0));if((n&l)!==0n)h=`Ordinal#${Number(n&65535n)}`;else if(n!==0n){let e=a(r,t+BigInt(Number(n)),258),i=e.indexOf(0,2);h=e.subarray(2,i>2?i:258).toString(`ascii`)}}if(v&&(m<y||m>=b)){let t=null;for(let n of e){let e=BigInt(n.base);if(m>=e&&m<e+BigInt(n.size)){t=n.name;break}}i.push({moduleName:n.name,importDll:g,functionName:h,iatAddress:`0x${u.toString(16)}`,expectedModule:v.name,actualTarget:`0x${m.toString(16)}`,actualModule:t})}}u+=20}}catch(e){t.debug(`IAT hook check skipped for ${n.name}: ${e}`)}}finally{s(r)}return i}async analyzeSections(e,t){let n=await this.listSections(e,t),r=[];for(let e of n)e.isReadable&&e.isWritable&&e.isExecutable?r.push({sectionName:e.name,anomalyType:`rwx`,severity:`high`,details:`Section ${e.name} has Read+Write+Execute permissions — unusual and potentially malicious`}):e.isWritable&&e.isExecutable?r.push({sectionName:e.name,anomalyType:`writable_code`,severity:`high`,details:`Section ${e.name} is writable and executable — code may be self-modifying or packed`}):e.isExecutable&&!e.name.startsWith(`.text`)&&!e.name.startsWith(`.code`)&&(e.characteristics&f.CNT_INITIALIZED_DATA)!==0&&r.push({sectionName:e.name,anomalyType:`executable_data`,severity:`medium`,details:`Data section ${e.name} has execute permission`});return r}async readCoreHeaders(e,t){let n=a(e,t,64).readUInt32LE(60),r=a(e,t+BigInt(n),264),i=r.readUInt16LE(6),o=r.readUInt16LE(20),s=r.readUInt16LE(24)===523,c=s?r.readUInt32LE(132):r.readUInt32LE(116),l=s?136:120,u=[];for(let e=0;e<Math.min(c,16);e++){let t=l+e*8;t+8<=r.length&&u.push({rva:r.readUInt32LE(t),size:r.readUInt32LE(t+4)})}return{numSections:i,isPE32Plus:s,firstSectionOffset:n+4+20+o,dataDirectories:u}}readThunkArray(e,t,n,r){let i=r?8:4,o=[],s=r?9223372036854775808n:2147483648n;for(let c=0;c<2e3;c++){let l=a(e,t+BigInt(n+c*i),i),u=r?l.readBigUInt64LE(0):BigInt(l.readUInt32LE(0));if(u===0n)break;if((u&s)!==0n)o.push({name:`Ordinal#${Number(u&65535n)}`,ordinal:Number(u&65535n),hint:0,thunkRva:`0x${(n+c*i).toString(16)}`});else{let r=Number(u),s=a(e,t+BigInt(r),258),l=s.readUInt16LE(0),d=s.indexOf(0,2),f=s.subarray(2,d>2?d:258).toString(`ascii`);o.push({name:f,ordinal:0,hint:l,thunkRva:`0x${(n+c*i).toString(16)}`})}}return o}enumerateModulesInternal(e){let a=[];try{let{modules:t,count:s}=i(e);for(let i=0;i<s;i++){let s=t[i],c=r(e,s),l=o(e,s),u=n(e,s)??c;l.success&&a.push({name:c,base:`0x${l.info.lpBaseOfDll.toString(16)}`,path:u,size:l.info.SizeOfImage})}}catch(e){t.debug(`Module enumeration failed: ${e}`)}return a}rvaToFileOffset(e,t){let n=e.readUInt32LE(60),r=e.readUInt16LE(n+6),i=e.readUInt16LE(n+20),a=n+24+i;for(let n=0;n<r;n++){let r=a+n*40;if(r+40>e.length)break;let i=e.readUInt32LE(r+12),o=e.readUInt32LE(r+8),s=e.readUInt32LE(r+20);if(t>=i&&t<i+o)return s+(t-i)}return-1}classifyHook(e){return u(e)}decodeJumpTarget(e,t){return l(e,t)}parsePEFromBuffer(e){let t=e.readUInt16LE(0);if(t!==h)throw Error(`Invalid DOS header in buffer: expected 0x5A4D, got 0x${t.toString(16)}`);let n=e.readUInt32LE(60),r=e.readUInt32LE(n);if(r!==g)throw Error(`Invalid PE signature in buffer: expected 0x4550, got 0x${r.toString(16)}`);let i=n+4,a=e.readUInt16LE(i),o=e.readUInt16LE(i+2),s=e.readUInt32LE(i+4),c=e.readUInt16LE(i+16),l=n+24+c,u=[];for(let t=0;t<o;t++){let n=l+t*40,r=e.subarray(n,n+8).toString(`utf8`).split(`\0`)[0],i=e.readUInt32LE(n+8),a=e.readUInt32LE(n+12),o=e.readUInt32LE(n+16),s=e.readUInt32LE(n+20);u.push({name:r,virtualAddress:a,virtualSize:i,pointerToRawData:s,sizeOfRawData:o})}return{fileHeader:{machine:a,numberOfSections:o,timeDateStamp:s},sections:u}}async compareMemoryWithDisk(e,n,r){let i=BigInt(n.startsWith(`0x`)?n:`0x${n}`),o=c(e);try{let e=a(o,i,64).readUInt32LE(60),n=a(o,i+BigInt(e),264),s=n.readUInt16LE(6),c=n.readUInt16LE(20),l=e+24+c,u=[];for(let e=0;e<s;e++){let t=l+e*40,n=a(o,i+BigInt(t),40),r=n.subarray(0,8).toString(`utf8`).split(`\0`)[0],s=n.readUInt32LE(8),c=n.readUInt32LE(12);u.push({name:r,virtualAddress:c,virtualSize:s})}let f=await d.readFile(r),p=this.parsePEFromBuffer(f),m=[`.text`,`.data`,`.rdata`],h=[],g=0,_=0;for(let e of u){if(!m.includes(e.name))continue;let n=p.sections.find(t=>t.name===e.name);if(!n){t.warn(`Section ${e.name} not found in disk PE`);continue}let r=a(o,i+BigInt(e.virtualAddress),Math.min(e.virtualSize,n.sizeOfRawData)),s=f.subarray(n.pointerToRawData,n.pointerToRawData+Math.min(n.sizeOfRawData,r.length)),c=Math.min(r.length,s.length),l=r.subarray(0,c),u=s.subarray(0,c);g+=c;let{createHash:d}=await import(`node:crypto`),v=d(`sha256`).update(l).digest(`hex`),y=d(`sha256`).update(u).digest(`hex`);v===y?_+=c:h.push({sectionName:e.name,offsetStart:e.virtualAddress,offsetEnd:e.virtualAddress+c,memoryHash:v,diskHash:y,bytesCompared:c})}let v=g>0?Math.round(_/g*100):0;return{isMatch:h.length===0,confidence:v,differences:h}}finally{s(o)}}};const v=new _;export{m as n,_ as t};
@@ -0,0 +1,7 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{t}from"./logger-BGCcd-jJ.mjs";import{vt as n}from"./constants-nvsLpSri.mjs";import{t as r}from"./ExecutionSandbox-QbWQmzuC.mjs";var i=e({AAEncodeDeobfuscator:()=>o,PackerDeobfuscator:()=>a,URLEncodeDeobfuscator:()=>s,UniversalUnpacker:()=>c}),a=class e{sandbox=new r;static detect(e){return/eval\s*\(\s*function\s*\(\s*p\s*,\s*a\s*,\s*c\s*,\s*k\s*,\s*e\s*,\s*[dr]\s*\)/.test(e)}async deobfuscate(n){let{code:r,maxIterations:i=5}=n;t.info(` Packer...`);let a=[],o=r,s=0;try{for(;e.detect(o)&&s<i;){let e=await this.unpack(o);if(!e||e===o){a.push(`Packer unpack produced no change, stopping early`);break}o=e,s++,t.info(` ${s} `)}return t.info(`Packer deobfuscation complete in ${s} iterations`),{code:o,success:!0,iterations:s,warnings:a}}catch(e){return t.error(`Packer`,e),{code:o,success:!1,iterations:s,warnings:[...a,String(e)]}}}async unpack(e){let n=e.match(/eval\s*\(\s*function\s*\(\s*p\s*,\s*a\s*,\s*c\s*,\s*k\s*,\s*e\s*,\s*[dr]\s*\)\s*{([\s\S]*?)}\s*\((.*?)\)\s*\)/);if(!n?.[2])return e;let r=n[2],i=await this.parsePackerParams(r);if(!i)return e;try{return this.executeUnpacker(i)||e}catch(n){return t.warn(``,n),e}}async parsePackerParams(e){try{let t=await this.sandbox.execute({code:`return [${e}];`,timeoutMs:n});if(!t.ok)return null;let r=t.output;return!Array.isArray(r)||r.length<4?null:{p:r[0]||``,a:r[1]||0,c:r[2]||0,k:(typeof r[3]==`string`?r[3]:``).split(`|`),e:r[4]||function(e){return e},d:r[5]||function(){return``}}}catch{return null}}executeUnpacker(e){let{p:t,a:n,k:r}=e,{c:i}=e,a=t;for(;i--;){let e=r[i];if(e){let t=RegExp(`\\b`+this.base(i,n)+`\\b`,`g`);a=a.replace(t,e)}}return a}base(e,t){if(e===0)return`0`;let n=``;for(;e>0;)n=`0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`[e%t]+n,e=Math.floor(e/t);return n||`0`}beautify(e){let t=e;return t=t.replace(/;/g,`;
2
+ `),t=t.replace(/{/g,`{
3
+ `),t=t.replace(/}/g,`
4
+ }
5
+ `),t=t.replace(/\n\n+/g,`
6
+
7
+ `),t.trim()}},o=class{sandbox=new r;static detect(e){return e.includes(`゜-゜`)||e.includes(`ω゜`)||e.includes(`o゜)`)}async deobfuscate(e){t.info(` AAEncode...`);try{let n=await this.sandbox.execute({code:`return (${e})`,timeoutMs:5e3}),r=n.ok?n.output:void 0;return typeof r==`string`?(t.info(` AAEncode`),r):e}catch(n){return t.error(`AAEncode`,n),e}}},s=class{static detect(e){return(e.match(/%[0-9A-Fa-f]{2}/g)||[]).length>10}async deobfuscate(e){t.info(` URLEncode...`);try{let n=decodeURIComponent(e);return t.info(` URLEncode`),n}catch(n){return t.error(`URLEncode`,n),e}}},c=class{packerDeobfuscator=new a;aaencodeDeobfuscator=new o;urlencodeDeobfuscator=new s;async deobfuscate(e){if(t.info(` ...`),a.detect(e)){t.info(`: Packer`);let n=await this.packerDeobfuscator.deobfuscate({code:e});return{code:n.code,type:`Packer`,success:n.success}}if(o.detect(e)){t.info(`: AAEncode`);let n=await this.aaencodeDeobfuscator.deobfuscate(e);return{code:n,type:`AAEncode`,success:n!==e}}if(s.detect(e)){t.info(`: URLEncode`);let n=await this.urlencodeDeobfuscator.deobfuscate(e);return{code:n,type:`URLEncode`,success:n!==e}}return t.info(``),{code:e,type:`Unknown`,success:!1}}};export{i as t};
@@ -0,0 +1 @@
1
+ import{Br as e,Hr as t,Ur as n,Vr as r,ei as i}from"./constants-nvsLpSri.mjs";import{t as a}from"./factory-BeND77hf.mjs";import{t as o}from"./NativeMemoryManager.impl-BIJzXMqH.mjs";import{n as s,t as c}from"./formatAddress-DAcw4Ckg.mjs";import{randomUUID as l}from"node:crypto";var u=class{providerCache=null;get provider(){return this.providerCache||=a(),this.providerCache}set provider(e){this.providerCache=e}async scan(n,i,a){let o=performance.now(),l=Math.min(a?.maxDepth??4,e),u=a?.maxOffset??r,d=a?.maxResults??t,f=a?.alignment??8,p=a?.staticOnly??!1,m=s(i),h=this.provider.openProcess(n,!1);try{let e=await this.getModuleMap(n),t=[],r=new Set([m]);for(let e=0;e<l&&r.size!==0;e++){let e=this.scanLevel(h,r,u,f,a?.modules?{modules:a.modules}:void 0);if(e.length===0)break;t.push(e),r=new Set;for(let t of e)if(r.add(t.pointerAddress),r.size>5e4)break}let i=this.buildChains(t,m,e,d,p),s=`${(performance.now()-o).toFixed(1)}ms`;return{pid:n,targetAddress:c(m),chains:i,totalFound:i.length,maxDepth:l,elapsed:s}}finally{this.provider.closeProcess(h)}}async validateChain(e,t){let n=this.provider.openProcess(e,!1);try{let e=s(t.baseAddress);for(let r=0;r<t.links.length;r++){let i=t.links[r],a;try{a=this.provider.readMemory(n,e,8).data.readBigUInt64LE(0)}catch{return{chainId:t.id,isValid:!1,resolvedAddress:null,expectedAddress:t.targetAddress,brokenAt:r}}e=a+BigInt(i.offset)}let r=c(e),i=s(t.targetAddress),a=e===i;return{chainId:t.id,isValid:a,resolvedAddress:r,expectedAddress:t.targetAddress,brokenAt:a?void 0:t.links.length-1}}finally{this.provider.closeProcess(n)}}async validateChains(e,t){let n=[];for(let r of t)n.push(await this.validateChain(e,r));return n}async resolveChain(e,t){let n=this.provider.openProcess(e,!1);try{let e=s(t.baseAddress);for(let r of t.links){let t;try{t=this.provider.readMemory(n,e,8).data.readBigUInt64LE(0)}catch{return null}e=t+BigInt(r.offset)}return c(e)}finally{this.provider.closeProcess(n)}}exportChains(e){return JSON.stringify(e,null,2)}importChains(e){let t=JSON.parse(e);if(!Array.isArray(t))throw Error(`Invalid chain data: expected array`);return t}async getModuleMap(e){let t=new Map;try{let n=await o.enumerateModules(e);if(n.success&&n.modules)for(let e of n.modules){let n=s(e.baseAddress);t.set(e.name.toLowerCase(),{name:e.name,base:n,size:e.size})}}catch{}return t}resolveToModule(e,t){for(let n of t.values())if(e>=n.base&&e<n.base+BigInt(n.size))return{module:n.name,offset:Number(e-n.base)};return null}scanLevel(e,t,r,a,o){let s=[],c=n,l=Array.from(t).toSorted((e,t)=>e<t?-1:+(e>t));if(l.length===0)return s;let u=BigInt(r),d=l[0]-u,f=l[l.length-1]+u,p=0n,m=i;for(;p<m;){let t=this.provider.queryRegion(e,p);if(!t)break;let n=t.size;if(t.isReadable&&n>0&&n<=2**53-1){let i=t.baseAddress;for(let t=0;t<n&&s.length<1e5;t+=c){let o=Math.min(c,n-t),p=i+BigInt(t),m;try{m=this.provider.readMemory(e,p,o).data}catch{break}for(let e=0;e<=m.length-8;e+=a){let t=m.readBigUInt64LE(e);if(t<d||t>f)continue;let n=t-u,i=t+u,a=0,o=l.length;for(;a<o;){let e=a+o>>>1;l[e]<n?a=e+1:o=e}for(let n=a;n<l.length&&l[n]<=i;n++){let i=l[n];if(Number(t>i?t-i:i-t)<=r){let n=p+BigInt(e),r=Number(i-t);s.push({pointerAddress:n,pointsTo:t,offset:r});break}}}}}p=t.baseAddress+BigInt(t.size)}return s}buildChains(e,t,n,i,a){if(e.length===0)return[];let o=[],s=c(t);for(let t=0;t<e.length&&o.length<i;t++){let u=e[t];if(t===0)for(let e of u){if(o.length>=i)break;let t=c(e.pointerAddress),r=this.resolveToModule(e.pointerAddress,n),u=r!==null;if(a&&!u)continue;let d={address:t,module:r?.module,moduleOffset:r?.offset,offset:e.offset};o.push({id:l(),links:[d],targetAddress:s,baseAddress:t,isStatic:u,depth:1,lastValidated:Date.now(),isValid:!0})}else{let d=e[t-1],f=new Map;for(let e of d)f.set(e.pointerAddress,e);let p=BigInt(r);for(let e of u){if(o.length>=i)break;let t;if(t=f.get(e.pointsTo),!t){for(let n of d)if((e.pointsTo>n.pointerAddress?e.pointsTo-n.pointerAddress:n.pointerAddress-e.pointsTo)<=p){t=n;break}}if(!t)continue;let r=c(e.pointerAddress),u=this.resolveToModule(e.pointerAddress,n),m=u!==null;if(a&&!m)continue;let h=[{address:r,module:u?.module,moduleOffset:u?.offset,offset:Number(t.pointerAddress-e.pointsTo)},{address:c(t.pointerAddress),offset:t.offset}];o.push({id:l(),links:h,targetAddress:s,baseAddress:r,isStatic:m,depth:h.length,lastValidated:Date.now(),isValid:!0})}}}return o.sort((e,t)=>e.isStatic===t.isStatic?e.depth-t.depth:e.isStatic?-1:1),o.slice(0,i)}};const d=new u;export{u as PointerChainEngine,d as pointerChainEngine};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{X as t}from"./constants-nvsLpSri.mjs";const n=new class{processes=new Set;register(e){e&&(this.processes.add(e),`kill`in e?e.once(`close`,()=>this.unregister(e)):`terminate`in e&&(typeof e.once==`function`?e.once(`exit`,()=>this.unregister(e)):typeof e.on==`function`&&e.on(`exit`,()=>this.unregister(e))))}unregister(e){e&&this.processes.delete(e)}async terminateAll(){if(this.processes.size===0)return;e.debug(`[ProcessRegistry] Attempting to terminate ${this.processes.size} active processes/workers...`);let n=[];for(let r of this.processes)`terminate`in r?n.push(r.terminate().then(()=>{this.processes.delete(r)}).catch(t=>{e.warn(`[ProcessRegistry] Error terminating worker: ${t.message}`)})):`kill`in r&&n.push(new Promise(n=>{if(r.killed||r.exitCode!==null||r.signalCode!==null)return this.processes.delete(r),n();r.kill(`SIGTERM`);let i=!1,a=()=>{i||(i=!0,this.processes.delete(r),n())};r.once(`exit`,a),r.once(`close`,a),setTimeout(()=>{if(!i&&!r.killed&&r.exitCode===null){e.debug(`[ProcessRegistry] Force killing child process PID ${r.pid}`);try{r.kill(`SIGKILL`)}catch{}a()}},t).unref()}));await Promise.race([Promise.all(n),new Promise(e=>setTimeout(e,t+1e3).unref())]),this.processes.clear(),e.debug(`[ProcessRegistry] Termination sweep complete.`)}};export{n as t};
@@ -1,4 +1,4 @@
1
- import{Hn as e,Un as t,Wn as n}from"./constants-BYj8Xek8.mjs";import{randomUUID as r}from"node:crypto";const i=e,a=n*1024*1024;let o=null;function s(){return o||=import(`quickjs-emscripten`).then(e=>e.getQuickJS()),o}function c(e,t){if(t==null)return e.undefined;switch(typeof t){case`string`:return e.newString(t);case`number`:return e.newNumber(t);case`boolean`:return t?e.true:e.false;case`object`:{if(Array.isArray(t)){let n=e.newArray();for(let r=0;r<t.length;r++){let i=c(e,t[r]);e.setProp(n,r,i),i.dispose()}return n}let n=e.newObject();for(let[r,i]of Object.entries(t)){let t=c(e,i);e.setProp(n,r,t),t.dispose()}return n}default:return e.newString(String(t))}}function l(e,t){switch(e.typeof(t)){case`undefined`:return;case`number`:return e.getNumber(t);case`string`:return e.getString(t);case`boolean`:return e.dump(t);case`object`:return e.dump(t);default:return e.dump(t)}}var u=class{bridge=null;setBridge(e){this.bridge=e}async execute(e,t={}){let n=t.timeoutMs??i,r=t.memoryLimitBytes??a,o=(await s()).newRuntime();o.setMemoryLimit(r);let c=Date.now(),u=!1;o.setInterruptHandler(()=>Date.now()-c>n?(u=!0,!0):!1);let d=o.newContext(),f=[];try{this.injectConsole(d,f),this.injectHelpers(d),this.bridge&&this.injectBridge(d,this.bridge,f),t.globals&&this.injectGlobals(d,t.globals);let n=d.evalCode(e,`sandbox-eval.js`);if(n.error){let e=d.dump(n.error);return n.error.dispose(),u?{ok:!1,error:`Execution timed out`,timedOut:!0,durationMs:Date.now()-c,logs:f}:{ok:!1,error:typeof e==`object`?JSON.stringify(e):String(e),timedOut:!1,durationMs:Date.now()-c,logs:f}}let r=l(d,n.value);return n.value.dispose(),{ok:!0,output:r,timedOut:!1,durationMs:Date.now()-c,logs:f}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e),timedOut:u,durationMs:Date.now()-c,logs:f}}finally{d.dispose(),o.dispose()}}async executeWithOrchestration(e,t,n={}){let r=n.maxBridgeCalls??10,i=Date.now(),a=[],o=[];n.bridgeAllowlist&&t.setAllowlist(n.bridgeAllowlist);let s={},c,l=0;for(;l<=r;){let r={...n.globals,__bridgeRound:l};l>0&&(r.__bridgeResults=s);let u=await this.executeOneRound(e,t,{...n,globals:r});if(a.push(...u.logs),!u.ok||u.timedOut)return{...u,logs:a,durationMs:Date.now()-i,bridgeCallCount:o.length,bridgeCalls:o};if(c=u.output,!t.hasPending())break;let d=t.drainPending(),f={};for(let e of d)try{let n=await t.call(e.toolName,e.args);f[e.id]=n,o.push({toolName:e.toolName,args:e.args,result:n})}catch(t){let n=t instanceof Error?t.message:String(t);f[e.id]={__error:!0,message:n},o.push({toolName:e.toolName,args:e.args,result:{__error:!0,message:n}})}s={...s,...f},l++}return{ok:!0,output:c,timedOut:!1,durationMs:Date.now()-i,logs:a,bridgeCallCount:o.length,bridgeCalls:o}}async executeOneRound(e,t,n={}){let r=n.timeoutMs??i,o=n.memoryLimitBytes??a,c=(await s()).newRuntime();c.setMemoryLimit(o);let u=Date.now(),d=!1;c.setInterruptHandler(()=>Date.now()-u>r?(d=!0,!0):!1);let f=c.newContext(),p=[];try{this.injectConsole(f,p),this.injectHelpers(f),this.injectBridgeForOrchestration(f,t,p),n.globals&&this.injectGlobals(f,n.globals);let r=f.evalCode(e,`sandbox-eval.js`);if(r.error){let e=f.dump(r.error);return r.error.dispose(),d?{ok:!1,error:`Execution timed out`,timedOut:!0,durationMs:Date.now()-u,logs:p}:{ok:!1,error:typeof e==`object`?JSON.stringify(e):String(e),timedOut:!1,durationMs:Date.now()-u,logs:p}}let i=l(f,r.value);return r.value.dispose(),{ok:!0,output:i,timedOut:!1,durationMs:Date.now()-u,logs:p}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e),timedOut:d,durationMs:Date.now()-u,logs:p}}finally{f.dispose(),c.dispose()}}injectConsole(e,t){let n=e.newObject(),r=e.newFunction(`log`,(...n)=>{let r=n.map(t=>{let n=l(e,t);return typeof n==`string`?n:JSON.stringify(n)});t.push(r.join(` `))});e.setProp(n,`log`,r),e.setProp(n,`warn`,r),e.setProp(n,`error`,r),e.setProp(e.global,`console`,n),r.dispose(),n.dispose()}injectGlobals(e,t){for(let[n,r]of Object.entries(t)){let t=c(e,r);e.setProp(e.global,n,t),t.dispose()}}injectHelpers(e){let t=e.evalCode(`
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{St as t,yt as n}from"./constants-nvsLpSri.mjs";var r=e({QuickJSSandbox:()=>u});const i=n,a=t*1024*1024;let o=null;function s(){return o||=import(`quickjs-emscripten`).then(e=>e.getQuickJS()),o}function c(e,t){if(t==null)return e.undefined;switch(typeof t){case`string`:return e.newString(t);case`number`:return e.newNumber(t);case`boolean`:return t?e.true:e.false;case`object`:{if(Array.isArray(t)){let n=e.newArray();for(let r=0;r<t.length;r++){let i=c(e,t[r]);e.setProp(n,r,i),i.dispose()}return n}let n=e.newObject();for(let[r,i]of Object.entries(t)){let t=c(e,i);e.setProp(n,r,t),t.dispose()}return n}default:return e.newString(String(t))}}function l(e,t){switch(e.typeof(t)){case`undefined`:return;case`number`:return e.getNumber(t);case`string`:return e.getString(t);case`boolean`:return e.dump(t);case`object`:return e.dump(t);default:return e.dump(t)}}var u=class{bridge=null;setBridge(e){this.bridge=e}async execute(e,t={}){let n=t.timeoutMs??i,r=t.memoryLimitBytes??a,o=(await s()).newRuntime();o.setMemoryLimit(r);let c=Date.now(),u=!1;o.setInterruptHandler(()=>Date.now()-c>n?(u=!0,!0):!1);let d=o.newContext(),f=[];try{this.injectConsole(d,f),this.injectHelpers(d),this.bridge&&this.injectBridge(d,this.bridge,f),t.globals&&this.injectGlobals(d,t.globals);let n=d.evalCode(e,`sandbox-eval.js`);if(n.error){let e=d.dump(n.error);return n.error.dispose(),u?{ok:!1,error:`Execution timed out`,timedOut:!0,durationMs:Date.now()-c,logs:f}:{ok:!1,error:typeof e==`object`?JSON.stringify(e):String(e),timedOut:!1,durationMs:Date.now()-c,logs:f}}let r=l(d,n.value);return n.value.dispose(),{ok:!0,output:r,timedOut:!1,durationMs:Date.now()-c,logs:f}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e),timedOut:u,durationMs:Date.now()-c,logs:f}}finally{d.dispose(),o.dispose()}}async executeWithOrchestration(e,t,n={}){let r=n.maxBridgeCalls??10,i=Date.now(),a=[],o=[];n.bridgeAllowlist&&t.setAllowlist(n.bridgeAllowlist);let s={},c,l=0;for(;l<=r;){let r={...n.globals,__bridgeRound:l};l>0&&(r.__bridgeResults=s);let u=await this.executeOneRound(e,t,{...n,globals:r});if(a.push(...u.logs),!u.ok||u.timedOut)return{...u,logs:a,durationMs:Date.now()-i,bridgeCallCount:o.length,bridgeCalls:o};if(c=u.output,!t.hasPending())break;let d=t.drainPending(),f={};for(let e of d)try{let n=await t.call(e.toolName,e.args);f[e.id]=n,o.push({toolName:e.toolName,args:e.args,result:n})}catch(t){let n=t instanceof Error?t.message:String(t);f[e.id]={__error:!0,message:n},o.push({toolName:e.toolName,args:e.args,result:{__error:!0,message:n}})}s={...s,...f},l++}return{ok:!0,output:c,timedOut:!1,durationMs:Date.now()-i,logs:a,bridgeCallCount:o.length,bridgeCalls:o}}async executeOneRound(e,t,n={}){let r=n.timeoutMs??i,o=n.memoryLimitBytes??a,c=(await s()).newRuntime();c.setMemoryLimit(o);let u=Date.now(),d=!1;c.setInterruptHandler(()=>Date.now()-u>r?(d=!0,!0):!1);let f=c.newContext(),p=[];try{this.injectConsole(f,p),this.injectHelpers(f),this.injectBridgeForOrchestration(f,t,p),n.globals&&this.injectGlobals(f,n.globals);let r=f.evalCode(e,`sandbox-eval.js`);if(r.error){let e=f.dump(r.error);return r.error.dispose(),d?{ok:!1,error:`Execution timed out`,timedOut:!0,durationMs:Date.now()-u,logs:p}:{ok:!1,error:typeof e==`object`?JSON.stringify(e):String(e),timedOut:!1,durationMs:Date.now()-u,logs:p}}let i=l(f,r.value);return r.value.dispose(),{ok:!0,output:i,timedOut:!1,durationMs:Date.now()-u,logs:p}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e),timedOut:d,durationMs:Date.now()-u,logs:p}}finally{f.dispose(),c.dispose()}}injectConsole(e,t){let n=e.newObject(),r=e.newFunction(`log`,(...n)=>{let r=n.map(t=>{let n=l(e,t);return typeof n==`string`?n:JSON.stringify(n)});t.push(r.join(` `))});e.setProp(n,`log`,r),e.setProp(n,`warn`,r),e.setProp(n,`error`,r),e.setProp(e.global,`console`,n),r.dispose(),n.dispose()}injectGlobals(e,t){for(let[n,r]of Object.entries(t)){let t=c(e,r);e.setProp(e.global,n,t),t.dispose()}}injectHelpers(e){let t=e.evalCode(`
2
2
  (function() {
3
3
  var helpers = {};
4
4
 
@@ -296,7 +296,4 @@ import{Hn as e,Un as t,Wn as n}from"./constants-BYj8Xek8.mjs";import{randomUUID
296
296
  // Expose to global scope
297
297
  globalThis.helpers = helpers;
298
298
  })();
299
- `,`sandbox-helpers.js`);t.error?(e.dump(t.error),t.error.dispose()):t.value.dispose()}injectBridge(e,t,n){let r=e.newObject(),i=e.newFunction(`call`,(t,r)=>{let i=e.getString(t),a=e.dump(r)??{};return n.push(`[mcp.call] ${i}(${JSON.stringify(a)})`),c(e,{pending:!0,tool:i})}),a=e.newFunction(`listTools`,()=>c(e,t.listAvailableTools()));e.setProp(r,`call`,i),e.setProp(r,`listTools`,a),e.setProp(e.global,`mcp`,r),i.dispose(),a.dispose(),r.dispose()}injectBridgeForOrchestration(e,t,n){let r=e.newObject(),i=e.newFunction(`call`,(r,i)=>{let a=e.getString(r),o=e.dump(i)??{};try{let r=t.enqueue(a,o);return n.push(`[mcp.call] enqueued ${a}(${JSON.stringify(o)}) → ${r}`),c(e,{__bridgeCall:!0,callId:r})}catch(t){let r=t instanceof Error?t.message:String(t);return n.push(`[mcp.call] rejected ${a}: ${r}`),c(e,{__bridgeCall:!1,error:r})}}),a=e.newFunction(`listTools`,()=>c(e,t.listAvailableTools()));e.setProp(r,`call`,i),e.setProp(r,`listTools`,a),e.setProp(e.global,`mcp`,r),i.dispose(),a.dispose(),r.dispose()}},d=class{ctx;allowlist=null;pendingCalls=[];constructor(e){this.ctx=e}setAllowlist(e){this.allowlist=e?new Set(e):null}enqueue(e,t={}){if(!(this.ctx.selectedTools?.map(e=>e.name)??[]).includes(e))throw Error(`Tool "${e}" is not a registered MCP tool`);if(this.allowlist&&!this.allowlist.has(e))throw Error(`Tool "${e}" is not in the sandbox allowlist`);let n=r().slice(0,8);return this.pendingCalls.push({id:n,toolName:e,args:t}),n}drainPending(){let e=[...this.pendingCalls];return this.pendingCalls.length=0,e}hasPending(){return this.pendingCalls.length>0}async call(e,t={}){if(this.allowlist&&!this.allowlist.has(e))throw Error(`Tool "${e}" is not in the sandbox allowlist`);if(!this.listAvailableTools().includes(e))throw Error(`Tool "${e}" is not a registered MCP tool`);let n=await this.ctx.executeToolWithTracking(e,t);if(n.content&&Array.isArray(n.content)){let e=[];for(let t of n.content)t.type===`text`&&e.push(t.text);let t=e.join(`
300
- `);try{return JSON.parse(t)}catch{return t}}return n}listAvailableTools(){let e=this.ctx.selectedTools.map(e=>e.name);return this.allowlist?e.filter(e=>this.allowlist.has(e)):e}},f=class{store=new Map;set(e,t,n){let r=this.store.get(e);r||(r=new Map,this.store.set(e,r)),r.set(t,JSON.stringify(n))}get(e,t){let n=this.store.get(e);if(!n)return;let r=n.get(t);if(r!==void 0)try{return JSON.parse(r)}catch{return r}}getAll(e){let t=this.store.get(e);if(!t)return{};let n={};for(let[e,r]of t)try{n[e]=JSON.parse(r)}catch{n[e]=r}return n}keys(e){let t=this.store.get(e);return t?Array.from(t.keys()):[]}clear(e){this.store.delete(e)}clearAll(){this.store.clear()}};async function p(e,t,n={},r=2){let i=null,a=t;for(let o=0;o<=r;o++){if(i=await e.execute(a,n),i.ok||i.timedOut)return{...i,retryCount:o};o<r&&(a=`/* Previous error (attempt ${o+1}): ${i.error??`unknown error`} */\n${t}`)}return{...i,retryCount:r}}var m=class{ctx;scratchpad=new f;constructor(e){this.ctx=e}async handleExecuteSandboxScript(e){let n=e.code,r=e.sessionId??void 0,i=e.timeoutMs??void 0,a=e.autoCorrect??!1;if(!n||typeof n!=`string`)return{content:[{type:`text`,text:JSON.stringify({ok:!1,error:`code parameter is required`})}]};let o=new u,s=new d(this.ctx);o.setBridge(s);let c={};if(i!==void 0){let e=t;c.timeoutMs=Math.min(Math.max(1,Number.isFinite(i)?i:0),e)}if(r){c.sessionId=r;let e=this.scratchpad.getAll(r);c.globals={...c.globals,__scratchpad:e}}let l;if(l=a?await p(o,n,c):await o.execute(n,c),r&&l.ok&&l.output&&typeof l.output==`object`){let e=l.output;if(e.__scratchpad&&typeof e.__scratchpad==`object`)for(let[t,n]of Object.entries(e.__scratchpad))this.scratchpad.set(r,t,n)}return{content:[{type:`text`,text:[`**Status:** ${l.ok?`✓ Success`:`✗ Failed`}`,l.timedOut?`**Timed out:** yes`:``,`**Duration:** ${l.durationMs}ms`,l.logs.length>0?`**Console output:**\n\`\`\`\n${l.logs.join(`
301
- `)}\n\`\`\``:``,l.output===void 0?``:`**Result:** ${JSON.stringify(l.output)}`,l.error?`**Error:** ${l.error}`:``].filter(Boolean).join(`
302
- `)}]}}};export{m as SandboxToolHandlers};
299
+ `,`sandbox-helpers.js`);t.error?(e.dump(t.error),t.error.dispose()):t.value.dispose()}injectBridge(e,t,n){let r=e.newObject(),i=e.newFunction(`call`,(r,i)=>{let a=e.getString(r),o=e.dump(i)??{};try{t.assertCallable(a)}catch(t){let r=t instanceof Error?t.message:String(t);return n.push(`[mcp.call] rejected ${a}: ${r}`),c(e,{pending:!1,tool:a,error:r})}return n.push(`[mcp.call] ${a}(${JSON.stringify(o)})`),c(e,{pending:!0,tool:a})}),a=e.newFunction(`listTools`,()=>c(e,t.listAvailableTools()));e.setProp(r,`call`,i),e.setProp(r,`listTools`,a),e.setProp(e.global,`mcp`,r),i.dispose(),a.dispose(),r.dispose()}injectBridgeForOrchestration(e,t,n){let r=e.newObject(),i=e.newFunction(`call`,(r,i)=>{let a=e.getString(r),o=e.dump(i)??{};try{let r=t.enqueue(a,o);return n.push(`[mcp.call] enqueued ${a}(${JSON.stringify(o)}) → ${r}`),c(e,{__bridgeCall:!0,callId:r})}catch(t){let r=t instanceof Error?t.message:String(t);return n.push(`[mcp.call] rejected ${a}: ${r}`),c(e,{__bridgeCall:!1,error:r})}}),a=e.newFunction(`listTools`,()=>c(e,t.listAvailableTools()));e.setProp(r,`call`,i),e.setProp(r,`listTools`,a),e.setProp(e.global,`mcp`,r),i.dispose(),a.dispose(),r.dispose()}};export{r as n,u as t};
@@ -1 +1 @@
1
- var e=class{payload={};hasMcpError=!1;additionalContent=[];useStructuredContent=!1;ok(){return this.payload.success=!0,this}fail(e){this.payload.success=!1;let t=e instanceof Error?e.message:String(e);return this.payload.error=t,this.payload.message=t,this}set(e,t){return this.payload[e]=t,this}merge(e){return Object.assign(this.payload,e),this}mcpError(){return this.hasMcpError=!0,this}image(e,t){return this.additionalContent.push({type:`image`,data:e,mimeType:t}),this}embeddedResource(e,t,n=`text/plain`){return this.additionalContent.push({type:`resource`,resource:{uri:e,text:t,mimeType:n}}),this}structured(){return this.useStructuredContent=!0,this}json(e){return e&&this.merge(e),{content:[{type:`text`,text:JSON.stringify(this.payload,null,2)},...this.additionalContent],...this.hasMcpError?{isError:!0}:{},...this.useStructuredContent?{structuredContent:this.payload}:{}}}build(e){return this.json(e)}static raw(e){return{content:[{type:`text`,text:JSON.stringify(e,null,2)}]}}static text(e,t=!1){return{content:[{type:`text`,text:e}],...t?{isError:!0}:{}}}static parse(e){if(!e.content||e.content.length===0)throw Error(`ToolResponse has no content`);let t=e.content.find(e=>e.type===`text`);if(!t||!(`text`in t))throw Error(`ToolResponse has no text content block`);try{return JSON.parse(t.text)}catch(e){throw Error(`Failed to parse tool result as JSON: ${String(e)}\nRaw text: ${t.text.substring(0,500)}`,{cause:e})}}};function t(t){return t().then(t=>new e().ok().merge(t).json()).catch(t=>new e().fail(t).json())}const n={ok:()=>new e().ok(),fail:t=>new e().fail(t),raw:t=>e.raw(t),text:(t,n=!1)=>e.text(t,n),parse:t=>e.parse(t)};export{t as n,n as t};
1
+ var e=class{payload={};hasMcpError=!1;additionalContent=[];useStructuredContent=!1;ok(){return this.payload.success=!0,this}fail(e){this.payload.success=!1;let t=e instanceof Error?e.message:String(e);return this.payload.error=t,this.payload.message=t,this}set(e,t){return this.payload[e]=t,this}merge(e){return Object.assign(this.payload,e),this}mcpError(){return this.hasMcpError=!0,this}image(e,t){return this.additionalContent.push({type:`image`,data:e,mimeType:t}),this}embeddedResource(e,t,n=`text/plain`){return this.additionalContent.push({type:`resource`,resource:{uri:e,text:t,mimeType:n}}),this}structured(){return this.useStructuredContent=!0,this}json(e){return e&&this.merge(e),{content:[{type:`text`,text:JSON.stringify(this.payload,null,2)},...this.additionalContent],...this.hasMcpError?{isError:!0}:{},...this.useStructuredContent?{structuredContent:this.payload}:{}}}build(e){return this.json(e)}static raw(e){return{content:[{type:`text`,text:JSON.stringify(e,null,2)}]}}static text(e,t=!1){return{content:[{type:`text`,text:e}],...t?{isError:!0}:{}}}static parse(e){if(!e.content||e.content.length===0)throw Error(`ToolResponse has no content`);let t=e.content.find(e=>e.type===`text`);if(!t||!(`text`in t))throw Error(`ToolResponse has no text content block`);try{return JSON.parse(t.text)}catch(e){throw Error(`Failed to parse tool result as JSON: ${String(e)}\nRaw text: ${t.text.substring(0,500)}`,{cause:e})}}};function t(e){return typeof e==`object`&&!!e}function n(e){if(!t(e)||!Array.isArray(e.content))return!1;let[n]=e.content;return t(n)&&typeof n.type==`string`}function r(t){return t().then(t=>n(t)?t:new e().ok().merge(t).json()).catch(t=>new e().fail(t).json())}const i={ok:()=>new e().ok(),fail:t=>new e().fail(t),raw:t=>e.raw(t),text:(t,n=!1)=>e.text(t,n),parse:t=>e.parse(t)};export{e as n,r,i as t};
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";var t=e({ReverseEvidenceGraph:()=>i});let n=1;function r(e){return`${e}-${n++}`}var i=class{nodes=new Map;edges=new Map;eventBus;isDirty=!1;mutationSeq=0;lastPersistedSeq=0;persistNotifier;setEventBus(e){this.eventBus=e}setPersistNotifier(e){this.persistNotifier=e}markDirty(){this.isDirty=!0,this.mutationSeq++,this.persistNotifier?.()}commit(){this.isDirty&&this.eventBus&&(this.isDirty=!1,this.eventBus.emit(`evidence:updated`,{timestamp:new Date().toISOString(),reason:`Tool execution committed changes`}))}addNode(e,t,n={}){let i={id:r(e),type:e,label:t,metadata:n,createdAt:Date.now()};return this.nodes.set(i.id,i),this.markDirty(),i}addEdge(e,t,n,i){if(!this.nodes.has(e))throw Error(`Source node "${e}" not found`);if(!this.nodes.has(t))throw Error(`Target node "${t}" not found`);let a={id:r(`edge`),source:e,target:t,type:n,metadata:i};return this.edges.set(a.id,a),this.markDirty(),a}getNode(e){return this.nodes.get(e)}removeNode(e){if(!this.nodes.has(e))return!1;this.nodes.delete(e);for(let[t,n]of this.edges)(n.source===e||n.target===e)&&this.edges.delete(t);return this.markDirty(),!0}getEdgesFrom(e){return[...this.edges.values()].filter(t=>t.source===e)}getEdgesTo(e){return[...this.edges.values()].filter(t=>t.target===e)}get nodeCount(){return this.nodes.size}get edgeCount(){return this.edges.size}getEvidenceChain(e,t=`forward`){if(!this.nodes.get(e))return[];let n=new Set,r=[e],i=[];for(;r.length>0;){let e=r.shift();if(n.has(e))continue;n.add(e);let a=this.nodes.get(e);a&&i.push(a);let o=t===`forward`?this.getEdgesFrom(e):this.getEdgesTo(e);for(let e of o){let i=t===`forward`?e.target:e.source;n.has(i)||r.push(i)}}return i}queryByUrl(e){let t=[...this.nodes.values()].filter(t=>t.type===`request`&&typeof t.metadata.url==`string`||typeof t.metadata.url==`string`?t.metadata.url.includes(e):!1),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}queryByFunction(e){let t=[...this.nodes.values()].filter(t=>t.type===`function`&&typeof t.metadata.functionName==`string`?t.metadata.functionName.includes(e):!!(t.label.includes(e)&&(t.type===`function`||t.type===`breakpoint-hook`))),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}queryByScriptId(e){let t=[...this.nodes.values()].filter(t=>t.type===`script`&&t.metadata.scriptId===e),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}exportJson(){return{version:1,nodes:[...this.nodes.values()],edges:[...this.edges.values()],exportedAt:new Date().toISOString()}}exportMarkdown(){let e=[];e.push(`# Reverse Evidence Graph Report`),e.push(``),e.push(`**Exported:** ${new Date().toISOString()}`),e.push(`**Nodes:** ${this.nodes.size} | **Edges:** ${this.edges.size}`),e.push(``);let t=new Map;for(let e of this.nodes.values()){let n=t.get(e.type)??[];n.push(e),t.set(e.type,n)}for(let n of[`request`,`initiator-stack`,`script`,`function`,`breakpoint-hook`,`captured-data`,`replay-artifact`,`v8-heap-object`,`v8-hidden-class`,`network-request`,`network-response`,`canvas-scene-node`,`canvas-render-node`,`skia-draw-call`,`syscall-event`,`mojo-message`,`mojo-interface`,`binary-symbol`,`binary-function`,`binary-module`,`proto-message`,`proto-state`]){let r=t.get(n);if(!(!r||r.length===0)){e.push(`## ${n} (${r.length})`),e.push(``);for(let t of r){e.push(`### ${t.label}`),e.push(`- **ID:** \`${t.id}\``),e.push(`- **Created:** ${new Date(t.createdAt).toISOString()}`);let n=Object.keys(t.metadata);if(n.length>0)for(let r of n){let n=t.metadata[r],i=typeof n==`string`?n:JSON.stringify(n);e.push(`- **${r}:** ${i}`)}let r=this.getEdgesFrom(t.id),i=this.getEdgesTo(t.id);r.length>0&&e.push(`- **→ Out:** ${r.map(e=>`${e.type} → \`${e.target}\``).join(`, `)}`),i.length>0&&e.push(`- **← In:** ${i.map(e=>`\`${e.source}\` ${e.type} →`).join(`, `)}`),e.push(``)}}}return e.join(`
2
+ `)}getSnapshotSeq(){return this.mutationSeq}getLastPersistedSeq(){return this.lastPersistedSeq}markPersisted(){this.lastPersistedSeq=this.mutationSeq}isPersistDirty(){return this.mutationSeq!==this.lastPersistedSeq}exportSnapshot(){return{schemaVersion:1,savedAt:new Date().toISOString(),graph:this.exportJson()}}restoreSnapshot(e){if(!e||typeof e!=`object`)return;let t=e;if(t.schemaVersion!==1||!t.graph)return;let{nodes:n,edges:r}=t.graph;this.nodes.clear(),this.edges.clear();for(let e of n)this.nodes.set(e.id,e);for(let e of r)this.edges.set(e.id,e);this.mutationSeq=n.length+r.length,this.lastPersistedSeq=this.mutationSeq,this.isDirty=!1}};export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{d as t}from"./registry-7h8jJ9y9.mjs";const n={endpoint:null,selectedIndex:null,selectedUrl:null,selectedTitle:null,selectedTargetId:null,browserPid:null,rendererPid:null,attachedAt:null};var r=class{dirty=!1;persistedRevision=0;revision=0;pendingActivatedDomains=new Set;pendingDomainTtls=new Map;browserAttach={...n};toolCoverage=new Map;markPersisted(){this.persistedRevision=this.revision,this.dirty=!1}isPersistDirty(){return this.dirty||this.revision!==this.persistedRevision}exportSnapshot(){return{schemaVersion:1,savedAt:new Date().toISOString(),activatedDomains:[...this.pendingActivatedDomains].toSorted(),domainTtls:Object.fromEntries([...this.pendingDomainTtls.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{ttlMinutes:t.ttlMinutes,toolNames:[...t.toolNames]}])),browserAttach:{...this.browserAttach},toolCoverage:Object.fromEntries([...this.toolCoverage.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{...t,lastArgsKeys:[...t.lastArgsKeys]}]))}}restoreSnapshot(e){if(!e||typeof e!=`object`)return;let t=e;if(t.schemaVersion!==1)return;if(this.pendingActivatedDomains=new Set(Array.isArray(t.activatedDomains)?t.activatedDomains.filter(e=>typeof e==`string`):[]),this.pendingDomainTtls=new Map,t.domainTtls&&typeof t.domainTtls==`object`)for(let[e,n]of Object.entries(t.domainTtls)){if(!n||typeof n!=`object`)continue;let t=n,r=Number(t.ttlMinutes),i=Array.isArray(t.toolNames)?t.toolNames.filter(e=>typeof e==`string`):[];Number.isFinite(r)&&this.pendingDomainTtls.set(e,{ttlMinutes:r,toolNames:i})}let r=t.browserAttach;if(this.browserAttach=r&&typeof r==`object`?{endpoint:typeof r.endpoint==`string`?r.endpoint:null,selectedIndex:typeof r.selectedIndex==`number`&&Number.isInteger(r.selectedIndex)?r.selectedIndex:null,selectedUrl:typeof r.selectedUrl==`string`?r.selectedUrl:null,selectedTitle:typeof r.selectedTitle==`string`?r.selectedTitle:null,selectedTargetId:typeof r.selectedTargetId==`string`?r.selectedTargetId:null,browserPid:typeof r.browserPid==`number`&&Number.isInteger(r.browserPid)?r.browserPid:null,rendererPid:typeof r.rendererPid==`number`&&Number.isInteger(r.rendererPid)?r.rendererPid:null,attachedAt:typeof r.attachedAt==`string`?r.attachedAt:null}:{...n},this.toolCoverage.clear(),t.toolCoverage&&typeof t.toolCoverage==`object`)for(let[e,n]of Object.entries(t.toolCoverage)){if(!n||typeof n!=`object`)continue;let t=n;this.toolCoverage.set(e,{count:typeof t.count==`number`&&Number.isFinite(t.count)&&t.count>=0?Math.trunc(t.count):0,lastCalledAt:typeof t.lastCalledAt==`string`?t.lastCalledAt:null,lastArgsKeys:Array.isArray(t.lastArgsKeys)?t.lastArgsKeys.filter(e=>typeof e==`string`):[]})}this.revision+=1,this.persistedRevision=this.revision,this.dirty=!1}noteDirty(){this.revision+=1,this.dirty=!0}setPendingDomainActivation(e,t,n){this.pendingActivatedDomains.add(e),this.pendingDomainTtls.set(e,{ttlMinutes:t,toolNames:[...n]}),this.noteDirty()}clearPendingDomainActivation(e){let t=this.pendingActivatedDomains.delete(e),n=this.pendingDomainTtls.delete(e);(t||n)&&this.noteDirty()}getPendingActivatedDomains(){return[...this.pendingActivatedDomains]}getPendingDomainTtl(e){return this.pendingDomainTtls.get(e)??null}setBrowserAttach(e){this.browserAttach={...this.browserAttach,...e},this.noteDirty()}clearBrowserAttach(){this.browserAttach={...n},this.noteDirty()}getBrowserAttach(){return{...this.browserAttach}}recordToolCall(e,t){let n={count:(this.toolCoverage.get(e)?.count??0)+1,lastCalledAt:new Date().toISOString(),lastArgsKeys:Object.keys(t).filter(e=>e!==`_meta`).toSorted()};this.toolCoverage.set(e,n),this.noteDirty()}getCoverageSummary(e){let n=Object.fromEntries([...this.toolCoverage.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{...t,lastArgsKeys:[...t.lastArgsKeys]}])),r=new Set([...t.map(e=>e.name),...e.selectedTools.map(e=>e.name),...e.activatedToolNames,...e.extensionToolsByName.keys(),...e.metaToolsByName.keys()]),i=[...this.toolCoverage.keys()].filter(e=>!r.has(e)).toSorted((e,t)=>e.localeCompare(t)),a=[...r].filter(e=>!this.toolCoverage.has(e)).toSorted((e,t)=>e.localeCompare(t));return{called:n,calledCount:this.toolCoverage.size,uncataloguedCalls:i,uncataloguedCallCount:i.length,totalKnownTools:r.size,uncalled:a,uncalledCount:a.length}}};function i(e){return!e||typeof e.getDomainInstance!=`function`?null:e.getDomainInstance(`serverRuntimeState`)??null}async function a(t){let n=i(t);if(!n)return;let r=n.getPendingActivatedDomains();if(r.length!==0){for(let i of r)if(!(t.enabledDomains.has(i)&&t.domainTtlEntries.has(i)))try{let{handleActivateDomain:e}=await import(`./index.mjs`).then(e=>e.n),r=n.getPendingDomainTtl(i);await e(t,{domain:i,...r?{ttlMinutes:r.ttlMinutes}:{}})}catch(t){e.warn(`Failed to restore activated domain "${i}":`,t)}}}export{i as n,a as r,r as t};
@@ -0,0 +1 @@
1
+ import{c as e,d as t,g as n,h as r,l as i,m as a,o,p as s,t as c,w as l,y as u}from"./Win32API-G7QPyckq.mjs";import{FlushInstructionCache as d}from"./Win32Debug-6yzmtv5b.mjs";const f=3072,p=[{kind:`gtc64`,apiName:`GetTickCount64`,scaleOff:256,trampOff:384,baseOff:8},{kind:`qpc`,apiName:`QueryPerformanceCounter`,scaleOff:448,trampOff:576,baseOff:16},{kind:`gtc32`,apiName:`GetTickCount`,scaleOff:640,trampOff:768,baseOff:24}];var m=class{states=new Map;async apply(n,r){this.states.has(n)&&await this.remove(n);let s=l(n,!0),d=[],f=[];try{let c=o(`kernel32.dll`);if(c===0n)throw Error(`Cannot find kernel32.dll`);let l=a(s,0n,4096,i.COMMIT|i.RESERVE,t.EXECUTE_READWRITE);if(l===0n)throw Error(`VirtualAllocEx failed for speedhack shared memory`);let m=Buffer.alloc(8);m.writeDoubleLE(r,0),u(s,l+BigInt(0),m),u(s,l+BigInt(8),Buffer.alloc(8,0)),u(s,l+BigInt(16),Buffer.alloc(8,0)),u(s,l+BigInt(24),Buffer.alloc(8,0));let h=0;for(let t of p){let n=e(c,t.apiName);if(n!==0n)try{this.installHook(s,n,l,t,h)&&(d.push(t.apiName),f.push(t.kind),h+=1)}catch{}}return this.states.set(n,{pid:n,speed:r,hookedApis:d,isActive:!0,allocatedMemory:`0x${l.toString(16).toUpperCase()}`,patchIds:f}),{success:d.length>0,hookedApis:d}}catch(e){throw c(s),e}finally{c(s)}}async setSpeed(e,t){let n=this.states.get(e);if(!n||!n.isActive||!n.allocatedMemory)return!1;let r=BigInt(n.allocatedMemory),i=l(e,!0);try{let e=Buffer.alloc(8);return e.writeDoubleLE(t,0),u(i,r+BigInt(0),e),n.speed=t,!0}finally{c(i)}}getSpeed(e){let t=this.states.get(e);return t?.isActive?t.speed:null}async restore(e){return await this.remove(e)}async remove(e){let a=this.states.get(e);if(!a)return!1;let o=l(e,!0);try{if(a.allocatedMemory){let e=BigInt(a.allocatedMemory);for(let r=0;r<a.patchIds.length;r++)try{let i=s(o,e+BigInt(f+r*32),32),a=i.readBigUInt64LE(0),c=i.readUInt32LE(8);if(a!==0n&&c>0&&c<=14){let e=i.subarray(12,12+c),{oldProtect:r}=n(o,a,c,t.EXECUTE_READWRITE);u(o,a,e),d(o,a,c),n(o,a,c,r)}}catch{}r(o,e,0,i.RELEASE)}}finally{c(o)}return a.isActive=!1,this.states.delete(e),!0}isActive(e){return this.states.get(e)?.isActive??!1}listActive(){return Array.from(this.states.values()).filter(e=>e.isActive)}installHook(e,r,i,a,o){let c=s(e,r,14),l=i+BigInt(a.trampOff);u(e,l,c);let p=this.buildAbsoluteJump(r+BigInt(14));u(e,l+BigInt(14),Buffer.from(p));let m=this.buildScaleHandler(a.kind,i,a.scaleOff,a.trampOff);u(e,i+BigInt(a.scaleOff),m);let h=i+BigInt(a.scaleOff),g=this.buildAbsoluteJump(h),{oldProtect:_}=n(e,r,14,t.EXECUTE_READWRITE);u(e,r,Buffer.from(g)),d(e,r,14),n(e,r,14,_);let v=Buffer.alloc(32,0);return v.writeBigUInt64LE(r,0),v.writeUInt32LE(14,8),c.copy(v,12),u(e,i+BigInt(f+o*32),v),d(e,h,m.length),!0}buildScaleHandler(e,t,n,r){let i=e===`qpc`,a=e===`gtc64`?8:e===`qpc`?16:24,o=[];o.push(83),i&&o.push(86),o.push(72,131,236,i?40:32),i&&o.push(72,137,203);let s=o.length;o.push(232,0,0,0,0),i?(o.push(72,137,198),o.push(72,139,3)):o.push(72,137,195),o.push(73,184);for(let e=0;e<8;e+=1)o.push(Number(t>>BigInt(e*8)&255n));o.push(242,72,15,42,i?192:195),o.push(242,65,15,16,72,a),o.push(242,65,15,16,16),o.push(102,15,239,219),o.push(102,15,46,203);let c=o.length;o.push(117,0),o.push(242,65,15,17,64,a),i?o.push(72,137,3):o.push(72,137,216);let l=o.length;o.push(235,0);let u=o.length;o.push(242,15,92,193),o.push(242,15,89,194),o.push(242,15,88,193),o.push(242,72,15,44,192),i&&o.push(72,137,3);let d=o.length;i&&o.push(72,137,240),o.push(72,131,196,i?40:32),i&&o.push(94),o.push(91),o.push(195);let f=r-(n+s+5);return o[s+1]=f&255,o[s+2]=f>>8&255,o[s+3]=f>>16&255,o[s+4]=f>>24&255,o[c+1]=u-(c+2),o[l+1]=d-(l+2),Buffer.from(o)}buildAbsoluteJump(e){let t=Buffer.alloc(14);return t[0]=255,t[1]=37,t.writeUInt32LE(0,2),t.writeBigUInt64LE(e,6),Array.from(t)}};const h=new m;export{m as Speedhack,h as speedhack};
@@ -0,0 +1,2 @@
1
+ import{$r as e,Qr as t,Zr as n}from"./constants-nvsLpSri.mjs";import{t as r}from"./factory-BeND77hf.mjs";import{t as i}from"./NativeMemoryManager.impl-BIJzXMqH.mjs";var a=class{provider;readCString;isValidReadablePointer;constructor(e,t,n){this.provider=e,this.readCString=t,this.isValidReadablePointer=n}async parseRtti(e,t){try{let n=this.provider.readMemory(t,e-8n,8).data.readBigUInt64LE(0);if(!this.isValidReadablePointer(t,n))return null;let r=this.readCompleteObjectLocator(t,n);if(!r)return null;let i=n-BigInt(r.objectLocRVA),a=i+BigInt(r.typeDescRVA),o=this.readTypeDescriptor(t,a);return o?{className:o,baseClasses:await this.readClassDescriptor(t,i,r.classDescRVA)}:null}catch{return null}}readCompleteObjectLocator(e,t){try{let n=this.provider.readMemory(e,t,24).data,r=n.readUInt32LE(0);return r===1?{signature:r,typeDescRVA:n.readUInt32LE(12),classDescRVA:n.readUInt32LE(16),objectLocRVA:n.readUInt32LE(20)}:null}catch{return null}}readTypeDescriptor(e,n){let r=this.readCString(e,n+16n,t);return r?this.demangleMsvcName(r):null}async readClassDescriptor(e,n,r){let i=[];try{let a=n+BigInt(r),o=this.provider.readMemory(e,a,16).data,s=o.readUInt32LE(8),c=o.readUInt32LE(12);if(s>0&&s<20){let r=n+BigInt(c),a=this.provider.readMemory(e,r,s*4).data;for(let r=1;r<s;r++){let o=a.readUInt32LE(r*4),s=n+BigInt(o);try{let r=this.provider.readMemory(e,s,8).data.readUInt32LE(0),a=n+BigInt(r),o=this.readCString(e,a+16n,t);o&&i.push(this.demangleMsvcName(o))}catch{break}}}}catch{}return i}demangleMsvcName(e){let t=e.match(/\.?\?A[VU](.+?)@@/);if(t)return t[1];let n=e.match(/\.?\?AW4(.+?)@@/);return n?n[1]:e.replace(/^\./,``).replace(/@@$/,``)}},o=class{provider;readCString;isValidReadablePointer;isValidExecutablePointer;constructor(e,t,n,r){this.provider=e,this.readCString=t,this.isValidReadablePointer=n,this.isValidExecutablePointer=r}classifyValue(e,t,n,r){if(r>=8){let r=e.readBigUInt64LE(n),i=this.checkVtablePointer(t,n,r);if(i)return i;let a=this.checkPointer(t,r);if(a)return a}if(r>=4){let t=e.readUInt32LE(n),i=e.readInt32LE(n),a=e.readFloatLE(n);return this.checkPadding(e,n,r,t)||(t===0?{type:`int32`,size:4,value:`0`,confidence:.4,notes:`zero value — could be int, bool, or padding`}:this.checkBool(t)||this.checkFloat(a,t)||this.checkInt32(t,i))}return r>=2?{type:`uint16`,size:2,value:e.readUInt16LE(n).toString(),confidence:.4}:{type:`uint8`,size:1,value:e.readUInt8(n).toString(),confidence:.3}}checkVtablePointer(e,t,n){if(t!==0||n===0n||!this.isValidExecutablePointer(e,n))return null;try{let t=this.provider.readMemory(e,n,16).data.readBigUInt64LE(0);if(this.isValidExecutablePointer(e,t))return{type:`vtable_ptr`,size:8,value:`0x${n.toString(16).toUpperCase()}`,confidence:.9,notes:`likely vtable pointer (points to array of executable pointers)`}}catch{}return null}checkPointer(e,t){return t===0n||t<=65536n||t>=140737488355327n||!this.isValidReadablePointer(e,t)?null:this.checkStringPointer(e,t)||{type:`pointer`,size:8,value:`0x${t.toString(16).toUpperCase()}`,confidence:.7,notes:`valid pointer to readable memory`}}checkStringPointer(e,t){let n=this.readCString(e,t,64);return!n||n.length<2?null:{type:`string_ptr`,size:8,value:`0x${t.toString(16).toUpperCase()} → "${n.slice(0,32)}${n.length>32?`...`:``}"`,confidence:.75,notes:`string pointer: "${n.slice(0,64)}"`}}checkPadding(e,t,n,r){if(r!==0||n<8||e.readUInt32LE(t+4)!==0)return null;let i=0;for(let n=t;n<e.length&&e[n]===0;n++)i++;let a=Math.min(i,n)&-8;return{type:`padding`,size:a,value:`0x${`00`.repeat(Math.min(a,8))}`,confidence:.6}}checkBool(e){return e===1?{type:`bool`,size:4,value:`true`,confidence:.5,notes:`value is 1 — could be boolean`}:null}checkFloat(e,t){if(!isFinite(e)||isNaN(e)||Math.abs(e)<=1e-10||Math.abs(e)>=1e8)return null;let n=t>0&&t<1e5,r=Math.abs(e-Math.round(e))>.001;return r||!n&&Math.abs(e)<1e4?{type:`float`,size:4,value:e.toFixed(6),confidence:r?.8:.5,notes:r?`IEEE 754 float with fractional part`:`could be float or int`}:null}checkInt32(e,t){return e<2147483648?{type:`int32`,size:4,value:t.toString(),confidence:.6}:{type:`uint32`,size:4,value:e.toString(),confidence:.5}}},s=class{provider;constructor(e){this.provider=e}readCString(e,t,n){try{let r=this.provider.readMemory(e,t,n).data,i=r.indexOf(0);if(i<0)return null;let a=r.subarray(0,i).toString(`ascii`);return/^[\x20-\x7E]+$/.test(a)&&a.length>=1?a:null}catch{return null}}fieldTypeToCType(e,t){switch(e){case`int8`:return`int8_t`;case`uint8`:return`uint8_t`;case`int16`:return`int16_t`;case`uint16`:return`uint16_t`;case`int32`:return`int32_t`;case`uint32`:return`uint32_t`;case`int64`:return`int64_t`;case`uint64`:return`uint64_t`;case`float`:return`float`;case`double`:return`double`;case`pointer`:return`void*`;case`vtable_ptr`:return`void**`;case`string_ptr`:return`char*`;case`bool`:return`bool`;case`padding`:return`uint8_t[${t}]`;case`unknown`:return`uint8_t[${t}]`;default:return`uint8_t[${t}]`}}async getModuleEntries(e){let t=new Map;try{let n=await i.enumerateModules(e);if(n.success&&n.modules)for(let e of n.modules){let n=BigInt(e.baseAddress.startsWith(`0x`)?e.baseAddress:`0x${e.baseAddress}`);t.set(e.name.toLowerCase(),{name:e.name,base:n,size:e.size})}}catch{}return t}resolveToModule(e,t){for(let n of t.values())if(e>=n.base&&e<n.base+BigInt(n.size))return{module:n.name,offset:Number(e-n.base)};return null}isValidReadablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable:!1}catch{return!1}}isValidExecutablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable&&n.isExecutable:!1}catch{return!1}}},c=class{providerCache=null;utils=null;classifier=null;rttiParser=null;get provider(){return this.providerCache||(this.providerCache=r(),this.initializeComponents()),this.providerCache}set provider(e){this.providerCache=e,e&&this.initializeComponents()}ensureComponents(){this.utils||this.provider}initializeComponents(){this.providerCache&&(this.utils=new s(this.providerCache),this.classifier=new o(this.providerCache,this.utils.readCString.bind(this.utils),this.utils.isValidReadablePointer.bind(this.utils),this.utils.isValidExecutablePointer.bind(this.utils)),this.rttiParser=new a(this.providerCache,this.utils.readCString.bind(this.utils),this.utils.isValidReadablePointer.bind(this.utils)))}async analyzeStructure(e,t,r){let i=r?.size??n,a=BigInt(t.startsWith(`0x`)?t:`0x${t}`),o=this.provider.openProcess(e,!1);try{let e=this.provider.readMemory(o,a,i).data,t=[],n=0;for(;n<i;){let r=i-n;if(r<1)break;let a=this.classifier.classifyValue(e,o,n,r);t.push({offset:n,size:a.size,type:a.type,name:`field_0x${n.toString(16).padStart(2,`0`).toUpperCase()}`,value:a.value,confidence:a.confidence,notes:a.notes}),n+=a.size}let s,c,l;if(t.length>0&&t[0].type===`vtable_ptr`&&(s=t[0].value,r?.parseRtti!==!1&&s))try{let e=BigInt(s.startsWith(`0x`)?s:`0x${s}`),t=await this.rttiParser.parseRtti(e,o);t&&(c=t.className,l=t.baseClasses)}catch{}return{baseAddress:`0x${a.toString(16).toUpperCase()}`,totalSize:i,fields:t,vtableAddress:s,className:c,baseClasses:l,timestamp:Date.now()}}finally{this.provider.closeProcess(o)}}async parseVtable(t,n){let r=BigInt(n.startsWith(`0x`)?n:`0x${n}`),i=this.provider.openProcess(t,!1);try{let n=[],a=await this.utils.getModuleEntries(t);for(let t=0;t<e;t++){let e=r+BigInt(t*8),o;try{o=this.provider.readMemory(i,e,8).data.readBigUInt64LE(0)}catch{break}if(!this.utils.isValidExecutablePointer(i,o))break;let s=this.utils.resolveToModule(o,a);n.push({index:t,address:`0x${o.toString(16).toUpperCase()}`,module:s?.module,moduleOffset:s?.offset})}let o,s;try{let e=await this.rttiParser.parseRtti(r,i);e&&(o=e.className,s=e.baseClasses)}catch{}return{address:`0x${r.toString(16).toUpperCase()}`,functionCount:n.length,functions:n,rttiName:o,baseClasses:s}}finally{this.provider.closeProcess(i)}}exportToCStruct(e,t){this.ensureComponents();let n=t??e.className??`UnknownStruct`,r=[];r.push(`struct ${n} { // size: 0x${e.totalSize.toString(16).toUpperCase()} (${e.totalSize} bytes)`);for(let t of e.fields){let e=this.utils.fieldTypeToCType(t.type,t.size),n=`0x${t.offset.toString(16).padStart(2,`0`).toUpperCase()}`,i=t.notes?`// +${n} ${t.notes}`:`// +${n} = ${t.value}`;t.type===`padding`?r.push(` uint8_t _pad_${t.offset.toString(16)}[${t.size}]; ${i}`):r.push(` ${e} ${t.name}; ${i}`)}return r.push(`};`),{name:n,definition:r.join(`
2
+ `),size:e.totalSize,fieldCount:e.fields.filter(e=>e.type!==`padding`).length}}async compareInstances(e,t,r,i){let a=i??n,[o,s]=await Promise.all([this.analyzeStructure(e,t,{size:a,parseRtti:!1}),this.analyzeStructure(e,r,{size:a,parseRtti:!1})]),c=[],l=[],u=new Map(s.fields.map(e=>[e.offset,e]));for(let e of o.fields){let t=u.get(e.offset);t&&(e.value===t.value&&e.type===t.type?c.push(e):l.push({offset:e.offset,value1:e.value,value2:t.value,type:e.type}))}return{matching:c,differing:l}}async parseRtti(e,t,n){let r=BigInt(t.startsWith(`0x`)?t:`0x${t}`),i=!n,a=n??this.provider.openProcess(e,!1);try{return await this.rttiParser.parseRtti(r,a)}finally{i&&this.provider.closeProcess(a)}}demangleMsvcName(e){let t=e.match(/\.?\?A[VU](.+?)@@/);if(t)return t[1];let n=e.match(/\.?\?AW4(.+?)@@/);return n?n[1]:e.replace(/^\./,``).replace(/@@$/,``)}isValidReadablePointer(e,t){return this.ensureComponents(),this.utils.isValidReadablePointer(e,t)}isValidExecutablePointer(e,t){return this.ensureComponents(),this.utils.isValidExecutablePointer(e,t)}fieldTypeToCType(e,t){return this.ensureComponents(),this.utils.fieldTypeToCType(e,t)}classifyValue(e,t,n,r,i){return this.ensureComponents(),i===void 0?this.classifier.classifyValue(e,t,n,r):this.classifier.classifyValue(e,t,r,i)}};const l=new c;export{c as StructureAnalyzer,l as structureAnalyzer};
@@ -0,0 +1 @@
1
+ import{t as e}from"./registry-7h8jJ9y9.mjs";function t(t,n){return e(t,n)}export{t};
@@ -1 +1 @@
1
- import"./logger-sBC6IdRT.mjs";import{dt as e}from"./constants-BYj8Xek8.mjs";import{execFile as t}from"node:child_process";import{promisify as n}from"node:util";const r=n(t);async function i(t,n=[`--version`],i=e){try{let{stdout:e}=await r(process.platform===`win32`?`where`:`which`,[t],{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0],o;try{let{stdout:e}=await r(t,n,{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0];o=a?a.substring(0,100):void 0}catch{}return{available:!0,path:a,version:o}}catch(e){let n=typeof e==`object`&&e&&`code`in e?e.code:void 0,r=e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message??``):String(e??``);return{available:!1,reason:n===`ENOENT`?`Command '${t}' not found in PATH`:`Probe failed: ${r.substring(0,200)}`}}}export{i as t};
1
+ import"./logger-BGCcd-jJ.mjs";import{et as e}from"./constants-nvsLpSri.mjs";import{promisify as t}from"node:util";import{execFile as n}from"node:child_process";const r=t(n);async function i(t,n=[`--version`],i=e){try{let{stdout:e}=await r(process.platform===`win32`?`where`:`which`,[t],{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0],o;try{let{stdout:e}=await r(t,n,{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0];o=a?a.substring(0,100):void 0}catch{}return{available:!0,path:a,version:o}}catch(e){let n=typeof e==`object`&&e&&`code`in e?e.code:void 0,r=e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message??``):String(e??``);return{available:!1,reason:n===`ENOENT`?`Command '${t}' not found in PATH`:`Probe failed: ${r.substring(0,200)}`}}}export{i as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{$ as t}from"./constants-nvsLpSri.mjs";import{t as n}from"./ToolProbe-B02GC3ZY.mjs";const r=[{name:`wabt.wasm2wat`,command:`wasm2wat`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm-objdump`,command:`wasm-objdump`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm-decompile`,command:`wasm-decompile`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm2c`,command:`wasm2c`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wat2wasm`,command:`wat2wasm`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`binaryen.wasm-opt`,command:`wasm-opt`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`runtime.wasmtime`,command:`wasmtime`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`runtime.wasmer`,command:`wasmer`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`miniapp.unpacker`,command:`unveilr`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`platform.jadx`,command:`jadx`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.ast-grep`,command:`ast-grep`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.wakaru`,command:`wakaru`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.restringer`,command:`restringer`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.z3`,command:`z3`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`syscall.strace`,command:`strace`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`syscall.bpftrace`,command:`bpftrace`,versionArgs:[`--version`],required:!1,envAllowlist:[]}];var i=class{specs=new Map;probeCache=new Map;probeCacheExpiry=0;PROBE_CACHE_TTL=t;constructor(e){for(let e of r)this.specs.set(e.name,e);if(e)for(let t of e)this.specs.set(t.name,t)}getSpec(e){let t=this.specs.get(e);if(!t)throw Error(`Tool '${e}' is not registered in the allowlist`);return t}isRegistered(e){return this.specs.has(e)}getRegisteredTools(){return Array.from(this.specs.keys())}async probeAll(t=!1){let r=Date.now();if(!t&&this.probeCache.size>0&&r<this.probeCacheExpiry)return Object.fromEntries(this.probeCache);let i={},a=[];for(let[e,t]of this.specs)a.push(n(t.command,t.versionArgs).then(t=>{i[e]=t,this.probeCache.set(e,t)}));await Promise.all(a),this.probeCacheExpiry=r+this.PROBE_CACHE_TTL;let o=Object.values(i).filter(e=>e.available).length;return e.info(`[ToolRegistry] Probed ${this.specs.size} tools: ${o} available`),i}getCachedProbe(e){return this.probeCache.get(e)}register(t){this.specs.set(t.name,t),this.probeCache.delete(t.name),e.debug(`[ToolRegistry] Registered tool: ${t.name} -> ${t.command}`)}};export{i as t};
@@ -0,0 +1,4 @@
1
+ import{ci as e,di as t,fi as n,li as r,mi as i,oi as a,pi as o,si as s,ui as c}from"./constants-nvsLpSri.mjs";import{d as l,o as u,p as d}from"./registry-7h8jJ9y9.mjs";import{t as f}from"./MCPServer.search.validation-DnifPCCv.mjs";const p=/(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i,m=/(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i,h=/(stateless|deterministic|pure compute|offline|decode|encode|hex|base64|protobuf|msgpack|checksum|hash|payload|frame|packet|bytes?|bytecode|pcap|protocol|state machine|field inference|ast transform|crypto harness|无状态|确定性|纯算|离线|解码|编码|十六进制|校验和|载荷|字节|协议|报文|帧|字段推断|状态机|构包)/i;let g=null;const _=new Map;function v(){if(g)return g;let e=[];for(let t of u())t.workflowRule&&e.push({patterns:[...t.workflowRule.patterns],domain:t.domain,priority:t.workflowRule.priority,tools:[...t.workflowRule.tools],hint:t.workflowRule.hint});return g=[...e].toSorted((e,t)=>t.priority-e.priority),_.clear(),g}function y(e){let t=_.get(e);if(t!==void 0)return t;let n=[];for(let t of v())for(let r of t.patterns)if(r.test(e)){n.push(t);break}let r=n.length===0?null:n.toSorted((e,t)=>t.priority-e.priority)[0];if(_.size>=64){let e=_.keys().next().value;e!==void 0&&_.delete(e)}return _.set(e,r),r}function b(e,t){let n=null;for(let[r,i]of t.extensionWorkflowRuntimeById.entries()){let a=i.route??i.workflow.route;if(!a)continue;let o=t.extensionWorkflowsById.get(r),s=o?.displayName??i.workflow.displayName,c=o?.description??i.workflow.description??`Workflow route`;for(let t of a.triggerPatterns){if(!t.test(e))continue;let i=a.priority/100;(!n||i>n.confidence)&&(n={workflow:{id:r,name:s,description:c,route:a},confidence:i,matchedPattern:t.source});break}}return n}function x(e,t){return t?.domain!==`browser`&&t?.domain!==`network`&&C(e)?!1:t?.domain===`browser`||t?.domain===`network`||p.test(e)}function S(e){return m.test(e)}function C(e){return h.test(e)}function w(e,t){if(e.length<2)return null;let n=u();if(n.length===0)return null;let r=new Map,i=new Map;for(let e of n)if(e.toolDependencies)for(let a of e.toolDependencies){let e=new Set(E(a,n)),o=T(a.from,n),s=T(a.to,n);if(o&&s&&o!==s){let e=r.get(o)??new Set;e.add(s),r.set(o,e);let n=i.get(o)??new Set;n.add(a.from),t.has(a.to)&&n.add(a.to),i.set(o,n)}for(let t of e)if(t!==o&&o){let e=r.get(o)??new Set;e.add(t),r.set(o,e)}}let a=new Set;for(let t of e)t.domain&&a.add(t.domain);if(a.size<2)return null;let o=[...a];for(let e=0;e<o.length;e++)for(let i=e+1;i<o.length;i++){let a=o[e],s=o[i];if(!(r.get(a)?.has(s)||r.get(s)?.has(a)))continue;let c=new Set;for(let e of n)if(e.toolDependencies)for(let r of e.toolDependencies){let e=T(r.from,n),i=T(r.to,n);(e===a&&i===s||e===s&&i===a)&&(t.has(r.from)&&c.add(r.from),t.has(r.to)&&c.add(r.to))}let l=[...c];if(!(l.length<2))return{id:`dynamic-${a}-${s}`,hint:`${a} ↔ ${s} (declared dependency)`,domains:[a,s],tools:l.slice(0,5),priority:75}}return null}function T(e,t){for(let n of t)for(let t of n.registrations)if(t.tool.name===e)return t.domain??n.domain;return null}function E(e,t){return[T(e.from,t),T(e.to,t)].filter(e=>e!==null)}let D=null;function O(){return D||=new Map(l.map(e=>[e.name,e])),D}function k(e,t){let n=f(e),r=O().get(n);if(r)return r.inputSchema;let i=t.extensionToolsByName.get(n);if(i)return i.tool.inputSchema;let a=t.metaToolsByName.get(n);if(a)return a.inputSchema}function A(e,t){let n=f(e),r=O().get(n);if(r?.description)return r.description.split(`
2
+ `)[0]||`No description available`;let i=t.extensionToolsByName.get(n);if(i?.tool?.description)return i.tool.description.split(`
3
+ `)[0]||`No description available`;let a=t.metaToolsByName.get(n);return a?.description&&a.description.split(`
4
+ `)[0]||`No description available`}function j(e,t){let n=f(e);return new Set([...t.selectedTools.map(e=>e.name),...t.activatedToolNames]).has(n)}function M(e){return new Set([...l.map(e=>e.name),...e.extensionToolsByName.keys()])}function N(e,t){return d(e)??t.extensionToolsByName.get(e)?.domain??null}async function P(e){if(!e.pageController||typeof e.pageController.getPage!=`function`)return!1;try{return!!await e.pageController.getPage()}catch{return!1}}function F(e){if(!e.consoleMonitor)return!1;try{if(typeof e.consoleMonitor.getNetworkStatus==`function`)return!!e.consoleMonitor.getNetworkStatus().enabled;if(typeof e.consoleMonitor.isNetworkEnabled==`function`)return!!e.consoleMonitor.isNetworkEnabled()}catch{}return!1}function I(e){if(!e.consoleMonitor||typeof e.consoleMonitor.getNetworkRequests!=`function`)return 0;try{let t=e.consoleMonitor.getNetworkRequests({limit:1});return Array.isArray(t)?t.length:0}catch{try{let t=e.consoleMonitor.getNetworkRequests();return Array.isArray(t)?t.length:0}catch{return 0}}}async function L(e){return{hasActivePage:await P(e),networkEnabled:F(e),capturedRequestCount:I(e)}}function R(e,t){if(!C(e))return[];let n=[],r=(e,r)=>{t.has(e)&&!n.some(t=>t.name===e)&&n.push({name:e,description:r})};return r(`binary_detect_format`,`Detect the payload encoding or container before decoding`),r(`binary_decode`,`Decode the payload into deterministic offline bytes or structured output`),r(`proto_auto_detect`,`Infer a likely protocol layout from repeated payload samples`),r(`proto_infer_fields`,`Derive stable field boundaries and candidate semantics`),r(`proto_infer_state_machine`,`Infer request/response state transitions from repeated samples`),r(`crypto_test_harness`,`Validate extracted signing or crypto logic with deterministic test vectors`),r(`crypto_compare`,`Compare competing crypto implementations against the same vectors`),r(`network_get_requests`,`Collect request or response samples only if payload bytes still need to be extracted`),n}function z(e){return e.includes(`Browser must be launched`)?e=>e.hasActivePage:e.includes(`Network monitoring must be enabled`)?e=>e.networkEnabled:e.includes(`Debugger must be enabled`)||e.includes(`Debugger must be attached`)||e.includes(`Page must be navigated`)||e.includes(`WebSocket monitoring`)?e=>e.hasActivePage:()=>!1}let B=null;function V(){if(B)return B;let e={};for(let t of u())if(t.prerequisites)for(let[n,r]of Object.entries(t.prerequisites))e[n]=r.map(e=>({condition:e.condition,check:z(e.condition),fix:e.fix}));return B=e,B}function H(e,t,n){let r=[],i=e=>{n.has(e)&&!r.includes(e)&&r.push(e)};(e.domain===`browser`||e.domain===`network`)&&!t.hasActivePage&&(i(`browser_launch`),i(`browser_attach`)),e.domain===`network`&&(t.hasActivePage&&!t.networkEnabled&&i(`network_monitor`),t.hasActivePage&&t.networkEnabled&&t.capturedRequestCount>0&&i(`network_get_requests`));for(let t of e.tools)i(t);return e.domain===`network`&&t.hasActivePage&&t.networkEnabled&&i(`network_get_requests`),r}function U(e,t,n){let r=[],i=new Set,a=e.workflow.route.requiredDomains.includes(`browser`)||e.workflow.route.requiredDomains.includes(`network`),o=(e,t)=>{!n.has(e)||i.has(e)||(i.add(e),r.push({name:e,description:t}))};!t.hasActivePage&&a&&(o(`browser_launch`,`Launch a browser session before executing the preset`),o(`browser_attach`,`Attach preset tooling to the active browser session before capture begins`));for(let t of e.workflow.route.steps)o(t.toolName,t.description);return r}function W(e,t,n,r){return U(e,t,r).map((t,r)=>({name:t.name,domain:N(t.name,n),shortDescription:t.description,score:e.workflow.route.priority+e.confidence-r*.01,isActive:j(t.name,n)}))}function G(e,t,n){return R(e,n).map((e,n)=>({name:e.name,domain:N(e.name,t),shortDescription:e.description,score:90-n*.01,isActive:j(e.name,t)}))}function K(e,t){return{name:`run_extension_workflow`,domain:N(`run_extension_workflow`,t),shortDescription:`Execute routed workflow ${e.workflow.name} (${e.workflow.id}) via run_extension_workflow`,score:e.workflow.route.priority+e.confidence,isActive:j(`run_extension_workflow`,t)}}function q(e,t){return{kind:e.workflow.route.kind,id:e.workflow.id,name:e.workflow.name,description:e.workflow.description,confidence:e.confidence,matchedPattern:e.matchedPattern,requiredDomains:[...e.workflow.route.requiredDomains],steps:e.workflow.route.steps.map(e=>({id:e.id,toolName:e.toolName,domain:d(e.toolName)??t.extensionToolsByName.get(e.toolName)?.domain??null,description:e.description,prerequisites:[...e.prerequisites],parallel:e.parallel,isActive:j(e.toolName,t)}))}}function J(l,u,d,f){let p=x(u,d),m=S(u),h=C(u),g=l.map(l=>{let u=l.score;return p&&!m&&l.domain===`maintenance`&&(u*=e),h&&((l.domain===`browser`||l.domain===`network`||l.domain===`debugger`||l.domain===`instrumentation`||l.domain===`maintenance`)&&(u*=o),(l.domain===`core`||l.domain===`streaming`||l.domain===`workflow`)&&(u*=n),(l.domain===`encoding`||l.domain===`transform`||l.domain===`protocol-analysis`||l.domain===`sourcemap`||l.domain===`core`)&&(u*=t),(l.name===`binary_detect_format`||l.name===`binary_decode`||l.name===`crypto_test_harness`||l.name===`ast_transform_apply`||l.name===`proto_auto_detect`||l.name===`proto_infer_fields`||l.name===`proto_infer_state_machine`||l.name===`proto_fingerprint`)&&(u*=i)),p&&(!f.hasActivePage&&l.name===`browser_launch`&&(u*=s),!f.hasActivePage&&l.name===`browser_attach`&&(u*=a),f.hasActivePage&&!f.networkEnabled&&l.name===`network_monitor`&&(u*=c),f.hasActivePage&&f.networkEnabled&&f.capturedRequestCount>0&&l.name===`network_get_requests`&&(u*=r)),{...l,score:u}});return g.sort((e,t)=>t.score-e.score),g}export{S as _,H as a,M as c,N as d,k as f,x as g,y as h,K as i,L as l,w as m,q as n,V as o,j as p,G as r,J as s,W as t,A as u,C as v,b as y};