@jshookmcp/jshook 0.3.0 → 0.3.2

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 (346) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +32 -49
  3. package/README.zh.md +32 -47
  4. package/dist/AntiCheatDetector-B6d4Qe9D.mjs +1 -0
  5. package/dist/BrowserSessionCoordinator-BJ-HOxo0.mjs +1 -0
  6. package/dist/CacheAdapters-CsNtQIR8.mjs +1 -0
  7. package/dist/CodeInjector-Cll_7bLJ.mjs +1 -0
  8. package/dist/ConsoleMonitor-CxDJV15E.mjs +306 -0
  9. package/dist/DOMInspector-C19J4zeq.mjs +95 -0
  10. package/dist/DarwinAPI-ZfQdpLNI.mjs +1 -0
  11. package/dist/DetailedDataManager-DmQ1LT-W.mjs +1 -0
  12. package/dist/EventBus-DL8iLA09.mjs +1 -0
  13. package/dist/EvidenceGraphBridge-BtbwXsLC.mjs +1 -0
  14. package/dist/ExtensionManager-BD724zkO.mjs +1 -0
  15. package/dist/ExtensionManager.tools-oVMJgPcN.mjs +1 -0
  16. package/dist/FingerprintManager-DT0EAUEo.mjs +1 -0
  17. package/dist/HardwareBreakpoint-BUfPdp0f.mjs +1 -0
  18. package/dist/HeapAnalyzer-B_aqY8oj.mjs +1 -0
  19. package/dist/{HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs → HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs} +66 -101
  20. package/dist/InstrumentationSession-D_G1ZPyd.mjs +1 -0
  21. package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +1 -0
  22. package/dist/MemoryController-X1XNSn1n.mjs +2 -0
  23. package/dist/MemoryScanSession-DG_F-PjE.mjs +1 -0
  24. package/dist/MemoryScanner-g1_L1ub5.mjs +1 -0
  25. package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +1 -0
  26. package/dist/NativeMemoryManager.utils-BHy1P_jM.mjs +1 -0
  27. package/dist/NetworkMonitor-B_-au6aV.mjs +185 -0
  28. package/dist/PEAnalyzer-yWQaGrcx.mjs +1 -0
  29. package/dist/PageController-Dfsm1_o7.mjs +1 -0
  30. package/dist/PointerChainEngine-BhCUkmxY.mjs +1 -0
  31. package/dist/PrerequisiteError-BjCQA-gK.mjs +1 -0
  32. package/dist/ProcessRegistry-C-bN48oR.mjs +1 -0
  33. package/dist/ResponseBuilder-BfWP-uaT.mjs +1 -0
  34. package/dist/ReverseEvidenceGraph-BhSYYdiI.mjs +2 -0
  35. package/dist/RingBuffer-Dm54ELKT.mjs +1 -0
  36. package/dist/ScriptManager-LWGPTdvD.mjs +7 -0
  37. package/dist/ServerRuntimeState-D2bWHqEE.mjs +1 -0
  38. package/dist/Speedhack-yseDPSZ9.mjs +1 -0
  39. package/dist/StealthVerifier-BmcxfwSF.mjs +1 -0
  40. package/dist/StructureAnalyzer-C5lpuZkg.mjs +2 -0
  41. package/dist/ToolCatalog-CYdD9F5f.mjs +1 -0
  42. package/dist/ToolError-DWU_z7gp.mjs +1 -0
  43. package/dist/ToolProbe-C7ZU2x7M.mjs +1 -0
  44. package/dist/ToolRegistry-C5oB8KP8.mjs +1 -0
  45. package/dist/ToolRouter.policy-CfhJczkt.mjs +4 -0
  46. package/dist/TraceRecorder-BiJWBXHX.mjs +272 -0
  47. package/dist/VersionDetector-CHT36Az0.mjs +9 -0
  48. package/dist/Win32API-eUCF57l_.mjs +1 -0
  49. package/dist/Win32Debug-CYrIQBvr.mjs +1 -0
  50. package/dist/WorkflowEngine-D876meOO.mjs +1 -0
  51. package/dist/analysis-D4swdMvq.mjs +6 -0
  52. package/dist/{antidebug-BRKeyt27.mjs → antidebug-7L3ygj_9.mjs} +8 -259
  53. package/dist/apk-packer-BqXcInnX.mjs +1 -0
  54. package/dist/artifactRetention-BCPQASm7.mjs +1 -0
  55. package/dist/artifacts-CkodUM4j.mjs +1 -0
  56. package/dist/authorization-schema-BOFwSXUN.mjs +1 -0
  57. package/dist/betterSqlite3-Brtq-SIQ.mjs +1 -0
  58. package/dist/binary-instrument-DU7V6TUM.mjs +7 -0
  59. package/dist/binary-secrets-PdMVoyt0.mjs +1 -0
  60. package/dist/bind-helpers-m2U8glkF.mjs +1 -0
  61. package/dist/boringssl-inspector-BBaJwwkU.mjs +2 -0
  62. package/dist/browser-Qqco2rOT.mjs +11 -0
  63. package/dist/capabilities-CyXuKUl1.mjs +1 -0
  64. package/dist/chunk-C_pMuVsO.mjs +1 -0
  65. package/dist/collector-Bpl6qy2L.mjs +1 -0
  66. package/dist/concurrency-DCr8WQ2M.mjs +1 -0
  67. package/dist/constants-BYj8Xek8.mjs +1 -0
  68. package/dist/coordination-CWXW1o8K.mjs +1 -0
  69. package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
  70. package/dist/debugger-DyALjYMk.mjs +1 -0
  71. package/dist/definitions-BWxBke3r.mjs +1 -0
  72. package/dist/definitions-BYwATKc-.mjs +1 -0
  73. package/dist/definitions-B_83XfNQ.mjs +1 -0
  74. package/dist/definitions-Bf3H1EwV.mjs +1 -0
  75. package/dist/definitions-BftdXgXI.mjs +1 -0
  76. package/dist/definitions-Bio5XJYy.mjs +1 -0
  77. package/dist/definitions-C3qNgSn1.mjs +1 -0
  78. package/dist/definitions-CB6vmOer.mjs +1 -0
  79. package/dist/definitions-CMZRSy3k.mjs +1 -0
  80. package/dist/definitions-CQd7yCQH.mjs +1 -0
  81. package/dist/definitions-CT8ln6GQ.mjs +1 -0
  82. package/dist/definitions-Cenu6mxo.mjs +1 -0
  83. package/dist/definitions-D4g-MS10.mjs +1 -0
  84. package/dist/definitions-D5wl_8HN.mjs +1 -0
  85. package/dist/definitions-DAQm1Xar.mjs +1 -0
  86. package/dist/definitions-DP1vgxEY.mjs +1 -0
  87. package/dist/definitions-DxFNRQNK2.mjs +1 -0
  88. package/dist/definitions-Ibci7e_L.mjs +1 -0
  89. package/dist/definitions-OeLvmlQy.mjs +1 -0
  90. package/dist/definitions-RZYGD_Ey.mjs +1 -0
  91. package/dist/definitions-Tls8c0A0.mjs +1 -0
  92. package/dist/definitions-bybDvnG0.mjs +26 -0
  93. package/dist/definitions-l7TjdE6V.mjs +1 -0
  94. package/dist/encoding-ycOaz8Vr.mjs +2 -0
  95. package/dist/ensure-browser-core-DxWC-NTp.mjs +1 -0
  96. package/dist/evidence-graph-bridge-CV_UdYqj.mjs +1 -0
  97. package/dist/factory-CKr4fAE1.mjs +1 -0
  98. package/dist/flat-target-session-DvcQX7J5.mjs +1 -0
  99. package/dist/formatAddress-vLA_hOJt.mjs +1 -0
  100. package/dist/graphql-B2TiPEow.mjs +62 -0
  101. package/dist/handlers-0yKLRIfo.mjs +2 -0
  102. package/dist/handlers-8zN_vBIz.mjs +1 -0
  103. package/dist/handlers-B62K4FTc.mjs +1 -0
  104. package/dist/handlers-BpDlVVVU.mjs +1 -0
  105. package/dist/handlers-CMJK7m1c.mjs +31 -0
  106. package/dist/handlers-D2ZOul9p.mjs +54 -0
  107. package/dist/handlers-D5E40ssn.mjs +5 -0
  108. package/dist/handlers-DGbdQAgD.mjs +4 -0
  109. package/dist/handlers-DHO3rjsW.mjs +1 -0
  110. package/dist/handlers-FJ80VzUI.mjs +2 -0
  111. package/dist/handlers-VHWrxbM_.mjs +1 -0
  112. package/dist/handlers-l8QIKqBj.mjs +2 -0
  113. package/dist/handlers-mPFiNPe8.mjs +302 -0
  114. package/dist/{handlers-Dz9PYsCa.mjs → handlers-yo_xYzT8.mjs} +118 -904
  115. package/dist/handlers.impl-D9Hh8Bgl.mjs +1 -0
  116. package/dist/hooks-D4XLfgtV.mjs +600 -0
  117. package/dist/index.mjs +13 -5240
  118. package/dist/jadx-search-B_Yse0Zh.mjs +5 -0
  119. package/dist/logger-sBC6IdRT.mjs +1 -0
  120. package/dist/maintenance-BUpIukhg.mjs +1 -0
  121. package/dist/manifest-0Jpt_AQa.mjs +1 -0
  122. package/dist/manifest-B3fZbSWR.mjs +1 -0
  123. package/dist/manifest-B7NB2rh2.mjs +1 -0
  124. package/dist/manifest-BDi4nbH1.mjs +1 -0
  125. package/dist/manifest-BLDfkE7n.mjs +1 -0
  126. package/dist/manifest-BcXbB4gf.mjs +1 -0
  127. package/dist/manifest-Bdnc_vrc.mjs +1 -0
  128. package/dist/manifest-BuYKgCnp.mjs +1 -0
  129. package/dist/manifest-CBfNnGPV.mjs +1 -0
  130. package/dist/manifest-CPS1Xv69.mjs +1 -0
  131. package/dist/manifest-CQH9FhwI.mjs +1 -0
  132. package/dist/manifest-CRryuZF4.mjs +1 -0
  133. package/dist/manifest-CctIumog.mjs +1 -0
  134. package/dist/manifest-CvTe5ZGV2.mjs +1 -0
  135. package/dist/manifest-D-5GH0DV.mjs +1 -0
  136. package/dist/manifest-D3Ssf3IC.mjs +1 -0
  137. package/dist/manifest-D5ck3NvC.mjs +1 -0
  138. package/dist/manifest-D9jUUJAu.mjs +1 -0
  139. package/dist/manifest-DCx6w2XV.mjs +1 -0
  140. package/dist/manifest-DG19q-Ld.mjs +1 -0
  141. package/dist/manifest-DLMlD0Zc.mjs +1 -0
  142. package/dist/manifest-DYpn8w_h.mjs +1 -0
  143. package/dist/manifest-DYzWI8Xs.mjs +1 -0
  144. package/dist/manifest-D_obs5F4.mjs +1 -0
  145. package/dist/manifest-DujQqEQR.mjs +2 -0
  146. package/dist/manifest-DwL2ik8P.mjs +1 -0
  147. package/dist/manifest-ItF5P8A12.mjs +1 -0
  148. package/dist/manifest-KZphqIyX.mjs +1 -0
  149. package/dist/manifest-LG42zPLY2.mjs +1 -0
  150. package/dist/manifest-LLdI5m4T.mjs +1 -0
  151. package/dist/manifest-QYbQXJn0.mjs +1 -0
  152. package/dist/manifest-RcpX_MyZ.mjs +123 -0
  153. package/dist/manifest-YgVd8Sgz.mjs +1 -0
  154. package/dist/manifest-Zy7Odg5J.mjs +1 -0
  155. package/dist/manifest-ff1H7Pdp.mjs +1 -0
  156. package/dist/manifest-iuhF6pTL2.mjs +1 -0
  157. package/dist/manifest-nXHmtMSp2.mjs +1 -0
  158. package/dist/manifest-xWfu6iLo.mjs +1 -0
  159. package/dist/manifest-yC16OhL2.mjs +1 -0
  160. package/dist/manifest-ztWJoXy4.mjs +1 -0
  161. package/dist/matchesWildcardPattern-BAG6LvX5.mjs +1 -0
  162. package/dist/modules-BPBcSaM-.mjs +333 -0
  163. package/dist/mojo-ipc-BhwsdVUW.mjs +9 -0
  164. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  165. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  166. package/dist/native-j8l473zn.mjs +961 -0
  167. package/dist/network-T0VRwNPd.mjs +7 -0
  168. package/dist/outputPaths-B4Ic4RZh.mjs +2 -0
  169. package/dist/parse-args-Bw413PlW.mjs +1 -0
  170. package/dist/platform-CzaQtISh.mjs +93 -0
  171. package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +1 -0
  172. package/dist/process-CWhsCWrf.mjs +2 -0
  173. package/dist/proxy-DZFlDsG3.mjs +2 -0
  174. package/dist/registry-DH4sc1dt.mjs +1 -0
  175. package/dist/renderer-pid-9tJnZ_9N.mjs +1 -0
  176. package/dist/response-C7rKQst4.mjs +1 -0
  177. package/dist/search-defaults-lYBVn_3L.mjs +1 -0
  178. package/dist/server/plugin-api.d.mts +19 -36
  179. package/dist/server/plugin-api.mjs +1 -293
  180. package/dist/shared-state-board-BSjXLUV1.mjs +1 -0
  181. package/dist/sourcemap-Dh3Ai_ur.mjs +1 -0
  182. package/dist/ssrf-policy-CsIJGkpd.mjs +1 -0
  183. package/dist/streaming-BcJ0B6ao.mjs +1 -0
  184. package/dist/tool-builder-qif8M9-K.mjs +1 -0
  185. package/dist/transform-DOxzeWPB.mjs +103 -0
  186. package/dist/types-D9EiE5o9.mjs +1 -0
  187. package/dist/types-Fz69RzbZ.mjs +1 -0
  188. package/dist/wasm-CZ_HTfKR.mjs +174 -0
  189. package/dist/webcrack-C1iYG_EX.mjs +46 -0
  190. package/dist/workflow-BdwQmARn.mjs +101 -0
  191. package/package.json +55 -82
  192. package/src/native/scripts/linux/enum-windows.sh +12 -12
  193. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  194. package/dist/AntiCheatDetector-CqGDXmfc.mjs +0 -350
  195. package/dist/CacheAdapters-jJFy20G-.mjs +0 -80
  196. package/dist/CodeInjector-BdjRfNx7.mjs +0 -150
  197. package/dist/ConsoleMonitor-DykL3IAw.mjs +0 -2269
  198. package/dist/DarwinAPI-ETyy0xyo.mjs +0 -363
  199. package/dist/DetailedDataManager-HT49OrvF.mjs +0 -217
  200. package/dist/EventBus-DFKvADm3.mjs +0 -141
  201. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +0 -153
  202. package/dist/ExtensionManager-BDMsY2Dz.mjs +0 -721
  203. package/dist/FingerprintManager-BN4UQWnX.mjs +0 -96
  204. package/dist/HardwareBreakpoint-Cc2AFq1Y.mjs +0 -239
  205. package/dist/HeapAnalyzer-DruMgsgj.mjs +0 -284
  206. package/dist/InstrumentationSession-DLH0vd-z.mjs +0 -244
  207. package/dist/MemoryController-CMtviNW_.mjs +0 -167
  208. package/dist/MemoryScanSession-ITgb_NMi.mjs +0 -278
  209. package/dist/MemoryScanner-CiL7Z3ey.mjs +0 -428
  210. package/dist/NativeMemoryManager.impl-D9Lkovvn.mjs +0 -485
  211. package/dist/NativeMemoryManager.utils-BBlAixF5.mjs +0 -165
  212. package/dist/PEAnalyzer-DMQ44gen.mjs +0 -385
  213. package/dist/PageController-BPJNqqBN.mjs +0 -431
  214. package/dist/PointerChainEngine-K7wN8Z-w.mjs +0 -325
  215. package/dist/PrerequisiteError-TuyZIs6n.mjs +0 -20
  216. package/dist/ProcessRegistry-zGg12QbE.mjs +0 -74
  217. package/dist/ResponseBuilder-CJXWmWNw.mjs +0 -143
  218. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +0 -269
  219. package/dist/ScriptManager-ZuWD-0Jg.mjs +0 -3003
  220. package/dist/Speedhack-D-z0umeT.mjs +0 -156
  221. package/dist/StealthVerifier-BWmPgQsv.mjs +0 -135
  222. package/dist/StructureAnalyzer-Cav5AVSL.mjs +0 -429
  223. package/dist/ToolCatalog-5OJdMiF0.mjs +0 -582
  224. package/dist/ToolError-jh9whhMd.mjs +0 -15
  225. package/dist/ToolProbe-DbCFGyrg.mjs +0 -45
  226. package/dist/ToolRegistry-B9krbTtI.mjs +0 -180
  227. package/dist/ToolRouter.policy-BGDAGyeH.mjs +0 -344
  228. package/dist/TraceRecorder-B41Z5XBj.mjs +0 -1286
  229. package/dist/VersionDetector-K3V4vGsw.mjs +0 -104
  230. package/dist/Win32API-C2kjj0ze.mjs +0 -346
  231. package/dist/Win32Debug-CKrGOTpo.mjs +0 -274
  232. package/dist/WorkflowEngine-DJ6M4opp.mjs +0 -569
  233. package/dist/analysis-BHeJW2Nb.mjs +0 -1234
  234. package/dist/artifactRetention-CPXkUJXp.mjs +0 -598
  235. package/dist/artifacts-DkfosXH3.mjs +0 -59
  236. package/dist/authorization-schema-DRqyJMSk.mjs +0 -31
  237. package/dist/betterSqlite3-DLSBZodi.mjs +0 -74
  238. package/dist/binary-instrument--V3MAhJ4.mjs +0 -971
  239. package/dist/bind-helpers-ClV34xdn.mjs +0 -42
  240. package/dist/boringssl-inspector-Bo_LOLaS.mjs +0 -180
  241. package/dist/browser-Dx3_S2cG.mjs +0 -4369
  242. package/dist/capabilities-CcHlvWgK.mjs +0 -33
  243. package/dist/chunk-CjcI7cDX.mjs +0 -15
  244. package/dist/concurrency-Drev_Vz9.mjs +0 -41
  245. package/dist/constants-CDZLOoVv.mjs +0 -534
  246. package/dist/coordination-DgItD9DL.mjs +0 -259
  247. package/dist/debugger-RS3RSAqs.mjs +0 -1288
  248. package/dist/definitions-BEoYofW5.mjs +0 -47
  249. package/dist/definitions-BRaefg3u.mjs +0 -365
  250. package/dist/definitions-BbkvZkiv.mjs +0 -96
  251. package/dist/definitions-BtWSHJ3o.mjs +0 -17
  252. package/dist/definitions-C1gCHO0i.mjs +0 -43
  253. package/dist/definitions-CDOg_b-l.mjs +0 -138
  254. package/dist/definitions-CVPD9hzZ.mjs +0 -54
  255. package/dist/definitions-Cea8Lgl7.mjs +0 -94
  256. package/dist/definitions-DAgIyjxM.mjs +0 -10
  257. package/dist/definitions-DJA27nsL.mjs +0 -66
  258. package/dist/definitions-DKPFU3LW.mjs +0 -25
  259. package/dist/definitions-DPRpZQ96.mjs +0 -47
  260. package/dist/definitions-DUE5gmdn.mjs +0 -18
  261. package/dist/definitions-DYVjOtxa.mjs +0 -26
  262. package/dist/definitions-DcYLVLCo.mjs +0 -37
  263. package/dist/definitions-Pp5LI2H4.mjs +0 -27
  264. package/dist/definitions-j9KdHVNR.mjs +0 -14
  265. package/dist/definitions-uzkjBwa7.mjs +0 -258
  266. package/dist/definitions-va-AnLuQ.mjs +0 -28
  267. package/dist/encoding-DJeqHmpd.mjs +0 -1079
  268. package/dist/evidence-graph-bridge-DcYizFk2.mjs +0 -136
  269. package/dist/factory-C90tBff6.mjs +0 -575
  270. package/dist/flat-target-session-Dgax2Cy3.mjs +0 -29
  271. package/dist/formatAddress-nnMvEohD.mjs +0 -17
  272. package/dist/graphql-CoHrhweh.mjs +0 -1197
  273. package/dist/handlers-4jmR0nMs.mjs +0 -898
  274. package/dist/handlers-BAHPxcch.mjs +0 -789
  275. package/dist/handlers-BOs9b907.mjs +0 -2600
  276. package/dist/handlers-BWXEy6ef.mjs +0 -917
  277. package/dist/handlers-Bndn6QvE.mjs +0 -111
  278. package/dist/handlers-BqC4bD4s.mjs +0 -681
  279. package/dist/handlers-BtYq60bM2.mjs +0 -276
  280. package/dist/handlers-BzgcB4iv.mjs +0 -799
  281. package/dist/handlers-CRyRWj2b.mjs +0 -859
  282. package/dist/handlers-CVv2H1uq.mjs +0 -592
  283. package/dist/handlers-Dl5a7JS4.mjs +0 -572
  284. package/dist/handlers-Dx2d7jt7.mjs +0 -2537
  285. package/dist/handlers-HujRKC3b.mjs +0 -661
  286. package/dist/handlers.impl-XWXkQfyi.mjs +0 -807
  287. package/dist/hooks-B1B8NRHL.mjs +0 -898
  288. package/dist/logger-Dh_xb7_2.mjs +0 -93
  289. package/dist/maintenance-PRMkLVRW.mjs +0 -835
  290. package/dist/manifest-67Bok-Si.mjs +0 -58
  291. package/dist/manifest-6lNTMZAB2.mjs +0 -87
  292. package/dist/manifest-B2duEHiH.mjs +0 -90
  293. package/dist/manifest-B6EY9Vm8.mjs +0 -57
  294. package/dist/manifest-B6nKSbyY.mjs +0 -95
  295. package/dist/manifest-BL8AQNPF.mjs +0 -106
  296. package/dist/manifest-BSZvJJmV.mjs +0 -47
  297. package/dist/manifest-BU7qzUyX.mjs +0 -418
  298. package/dist/manifest-Bl62e8WK.mjs +0 -49
  299. package/dist/manifest-Bo5cXjdt.mjs +0 -82
  300. package/dist/manifest-BpS4gtUK.mjs +0 -1347
  301. package/dist/manifest-Bv65_e2W.mjs +0 -101
  302. package/dist/manifest-BytNIF4Z.mjs +0 -117
  303. package/dist/manifest-C-xtsjS3.mjs +0 -81
  304. package/dist/manifest-CDYl7OhA.mjs +0 -66
  305. package/dist/manifest-CRZ3xmkD.mjs +0 -61
  306. package/dist/manifest-CoW6u4Tp.mjs +0 -132
  307. package/dist/manifest-Cq5zN_8A.mjs +0 -50
  308. package/dist/manifest-D7YZM_2e.mjs +0 -194
  309. package/dist/manifest-DE_VrAeQ.mjs +0 -314
  310. package/dist/manifest-DGsXSCpT.mjs +0 -39
  311. package/dist/manifest-DJ2vfEuW.mjs +0 -156
  312. package/dist/manifest-DPXDYhEu.mjs +0 -80
  313. package/dist/manifest-Dd4fQb0a.mjs +0 -322
  314. package/dist/manifest-Deq6opGg.mjs +0 -223
  315. package/dist/manifest-DfJTafJK.mjs +0 -37
  316. package/dist/manifest-DgOdgN_j.mjs +0 -50
  317. package/dist/manifest-DlbMW4v4.mjs +0 -47
  318. package/dist/manifest-DmVfbH0w.mjs +0 -374
  319. package/dist/manifest-Dog6Ddjr.mjs +0 -109
  320. package/dist/manifest-DvgU5FWb.mjs +0 -58
  321. package/dist/manifest-HsfDBs7j.mjs +0 -50
  322. package/dist/manifest-I8oQHvCG.mjs +0 -186
  323. package/dist/manifest-NvH_a-av.mjs +0 -786
  324. package/dist/manifest-cEJU1v0Z.mjs +0 -129
  325. package/dist/manifest-wOl5XLB12.mjs +0 -112
  326. package/dist/modules-tZozf0LQ.mjs +0 -10635
  327. package/dist/mojo-ipc-DXNEXEqb.mjs +0 -640
  328. package/dist/network-CPVvwvFg.mjs +0 -3852
  329. package/dist/outputPaths-um7lCRY3.mjs +0 -1141
  330. package/dist/parse-args-B4cY5Vx5.mjs +0 -39
  331. package/dist/platform-CYeFoTWp.mjs +0 -2161
  332. package/dist/process-BTbgcVc6.mjs +0 -1306
  333. package/dist/proxy-r8YN6nP1.mjs +0 -192
  334. package/dist/registry-Bl8ZQW61.mjs +0 -34
  335. package/dist/response-CWhh2aLo.mjs +0 -34
  336. package/dist/shared-state-board-BoZnSoj-.mjs +0 -586
  337. package/dist/sourcemap-BIDHUVXy.mjs +0 -934
  338. package/dist/ssrf-policy-Dsqd-DTX.mjs +0 -166
  339. package/dist/streaming-Dal6utPp.mjs +0 -725
  340. package/dist/tool-builder-BHJp32mV.mjs +0 -186
  341. package/dist/transform-DRVgGG90.mjs +0 -1011
  342. package/dist/types-Bx92KJfT.mjs +0 -4
  343. package/dist/types-DDBWs9UP.mjs +0 -37
  344. package/dist/wasm-BYx5UOeG.mjs +0 -1044
  345. package/dist/webcrack-Be0_FccV.mjs +0 -747
  346. package/dist/workflow-BpuKEtvn.mjs +0 -725
@@ -1,640 +0,0 @@
1
- import { n as __require } from "./chunk-CjcI7cDX.mjs";
2
- import { Ut as MOJO_MONITOR_TIMEOUT_MS } from "./constants-CDZLOoVv.mjs";
3
- import { a as argString, r as argNumber } from "./parse-args-B4cY5Vx5.mjs";
4
- import { n as capabilityReport, t as capabilityFailure } from "./capabilities-CcHlvWgK.mjs";
5
- import "./manifest-6lNTMZAB2.mjs";
6
- import { execFile, spawn } from "node:child_process";
7
- //#region src/modules/mojo-ipc/MojoMonitor.ts
8
- function getDefaultInterfaces() {
9
- return [
10
- {
11
- name: "blink.mojom.WidgetHost",
12
- version: 1,
13
- pendingMessages: 0
14
- },
15
- {
16
- name: "content.mojom.FrameHost",
17
- version: 2,
18
- pendingMessages: 0
19
- },
20
- {
21
- name: "network.mojom.URLLoaderFactory",
22
- version: 3,
23
- pendingMessages: 0
24
- }
25
- ];
26
- }
27
- function detectFridaNpmPackage() {
28
- try {
29
- __require.resolve("frida");
30
- return true;
31
- } catch {
32
- return false;
33
- }
34
- }
35
- async function probeFridaCli() {
36
- return new Promise((resolve) => {
37
- const child = spawn("frida", ["--version"], {
38
- timeout: MOJO_MONITOR_TIMEOUT_MS,
39
- windowsHide: true
40
- });
41
- let stdout = "";
42
- child.stdout?.on("data", (chunk) => {
43
- stdout += chunk.toString();
44
- });
45
- child.on("close", (code) => {
46
- if (code === 0 && stdout.trim().length > 0) {
47
- resolve("frida");
48
- return;
49
- }
50
- resolve(null);
51
- });
52
- child.on("error", () => {
53
- resolve(null);
54
- });
55
- });
56
- }
57
- async function detectAvailability() {
58
- const flag = process.env["JSHOOK_ENABLE_MOJO_IPC"];
59
- const fridaNpm = detectFridaNpmPackage();
60
- const fridaCli = await probeFridaCli();
61
- const fridaAvailable = fridaNpm || fridaCli !== null;
62
- if (flag === "0" || flag === "false") return {
63
- available: false,
64
- fridaAvailable,
65
- fridaCliAvailable: fridaCli !== null,
66
- reason: "Mojo IPC disabled by JSHOOK_ENABLE_MOJO_IPC=0."
67
- };
68
- return {
69
- available: fridaAvailable,
70
- fridaAvailable,
71
- fridaCliAvailable: fridaCli !== null,
72
- reason: fridaAvailable ? void 0 : "Mojo IPC backend is not connected. Install Frida for real IPC monitoring: https://frida.re/docs/installation/"
73
- };
74
- }
75
- function matchesFilter(message, filter) {
76
- if (filter.interfaceName && message.interfaceName !== filter.interfaceName) return false;
77
- if (filter.messageType && message.messageType !== filter.messageType) return false;
78
- if (typeof filter.pid === "number" && message.sourcePid !== filter.pid && message.targetPid !== filter.pid) return false;
79
- return true;
80
- }
81
- function buildFridaScript() {
82
- return `
83
- const messages = [];
84
- recv('message', () => {});
85
- rpc.exports = {
86
- flush() {
87
- return messages;
88
- },
89
- };
90
- `;
91
- }
92
- var MojoMonitor = class {
93
- active = false;
94
- simulationMode = false;
95
- fridaProbeSucceeded = false;
96
- deviceId;
97
- messages = [];
98
- interfaces = /* @__PURE__ */ new Map();
99
- observedInterfaceNames = /* @__PURE__ */ new Set();
100
- availability = {
101
- available: false,
102
- fridaAvailable: false,
103
- fridaCliAvailable: false,
104
- reason: "Not yet initialized. Call start() to probe availability."
105
- };
106
- constructor() {
107
- this.resetInterfaces();
108
- }
109
- isAvailable() {
110
- return this.availability.available;
111
- }
112
- getUnavailableReason() {
113
- return this.availability.reason;
114
- }
115
- getAvailabilitySnapshot() {
116
- return { ...this.availability };
117
- }
118
- async probeAvailability() {
119
- this.availability = await detectAvailability();
120
- return this.getAvailabilitySnapshot();
121
- }
122
- isSimulationMode() {
123
- return this.simulationMode;
124
- }
125
- didFridaProbeSucceed() {
126
- return this.fridaProbeSucceeded;
127
- }
128
- setSimulationMode(enabled) {
129
- this.simulationMode = enabled;
130
- }
131
- isActive() {
132
- return this.active;
133
- }
134
- getDeviceId() {
135
- return this.deviceId;
136
- }
137
- async start(deviceId) {
138
- this.deviceId = deviceId;
139
- this.availability = await detectAvailability();
140
- this.resetInterfaces();
141
- this.simulationMode = false;
142
- this.fridaProbeSucceeded = false;
143
- if (!this.availability.available) {
144
- this.active = false;
145
- return;
146
- }
147
- this.active = true;
148
- if (this.availability.fridaCliAvailable) await this.captureWithFrida(deviceId);
149
- else this.simulationMode = true;
150
- }
151
- async stop() {
152
- this.active = false;
153
- this.deviceId = void 0;
154
- this.fridaProbeSucceeded = false;
155
- this.resetInterfaces();
156
- }
157
- async captureMessages(filter = {}) {
158
- if (!this.active) return [];
159
- const captured = [];
160
- const remaining = [];
161
- for (const message of this.messages) if (matchesFilter(message, filter)) captured.push({ ...message });
162
- else remaining.push(message);
163
- this.messages.length = 0;
164
- this.messages.push(...remaining);
165
- this.recomputePendingCounts();
166
- return captured;
167
- }
168
- async listInterfaces() {
169
- return [...this.interfaces.values()].map((item) => ({
170
- name: item.name,
171
- version: item.version,
172
- pendingMessages: item.pendingMessages
173
- })).toSorted((left, right) => left.name.localeCompare(right.name));
174
- }
175
- hasObservedInterfaces() {
176
- return this.observedInterfaceNames.size > 0;
177
- }
178
- getObservedInterfaceCount() {
179
- return this.observedInterfaceNames.size;
180
- }
181
- getInterfaceCatalogSource() {
182
- if (this.observedInterfaceNames.size === 0) return "seeded-defaults";
183
- if (this.observedInterfaceNames.size >= this.interfaces.size) return "observed";
184
- return "mixed";
185
- }
186
- async getMessages(options) {
187
- if (!this.active) return {
188
- messages: [],
189
- totalAvailable: 0,
190
- filtered: false,
191
- simulation: this.simulationMode
192
- };
193
- const filter = {};
194
- if (options?.interfaceName) filter.interfaceName = options.interfaceName;
195
- const allMessages = await this.captureMessages(filter);
196
- const limit = options?.limit ?? 100;
197
- return {
198
- messages: allMessages.slice(0, limit),
199
- totalAvailable: allMessages.length,
200
- filtered: !!options?.interfaceName,
201
- simulation: this.simulationMode
202
- };
203
- }
204
- recordMessage(message, version = 1) {
205
- if (!this.active) return;
206
- this.messages.push({ ...message });
207
- this.observedInterfaceNames.add(message.interfaceName);
208
- const existing = this.interfaces.get(message.interfaceName);
209
- if (existing) {
210
- existing.pendingMessages += 1;
211
- return;
212
- }
213
- this.interfaces.set(message.interfaceName, {
214
- name: message.interfaceName,
215
- version,
216
- pendingMessages: 1
217
- });
218
- }
219
- async captureWithFrida(deviceId) {
220
- const targetProcess = deviceId ?? "chrome";
221
- const script = buildFridaScript();
222
- await new Promise((resolve, reject) => {
223
- execFile("frida", [
224
- "-q",
225
- "-n",
226
- targetProcess,
227
- "-l",
228
- "-",
229
- "--runtime=v8"
230
- ], {
231
- timeout: MOJO_MONITOR_TIMEOUT_MS,
232
- windowsHide: true
233
- }, (error) => {
234
- if (error) {
235
- reject(error);
236
- return;
237
- }
238
- resolve();
239
- }).stdin?.end(script);
240
- }).then(() => {
241
- this.fridaProbeSucceeded = true;
242
- }).catch(() => {
243
- this.fridaProbeSucceeded = false;
244
- });
245
- this.simulationMode = true;
246
- }
247
- recomputePendingCounts() {
248
- this.resetPendingCounts();
249
- for (const message of this.messages) {
250
- this.observedInterfaceNames.add(message.interfaceName);
251
- const item = this.interfaces.get(message.interfaceName);
252
- if (item) item.pendingMessages += 1;
253
- else this.interfaces.set(message.interfaceName, {
254
- name: message.interfaceName,
255
- version: 1,
256
- pendingMessages: 1
257
- });
258
- }
259
- }
260
- resetPendingCounts() {
261
- for (const item of this.interfaces.values()) item.pendingMessages = 0;
262
- }
263
- resetInterfaces() {
264
- this.messages.length = 0;
265
- this.interfaces.clear();
266
- this.observedInterfaceNames.clear();
267
- for (const item of getDefaultInterfaces()) this.interfaces.set(item.name, { ...item });
268
- }
269
- };
270
- //#endregion
271
- //#region src/modules/mojo-ipc/MojoDecoder.ts
272
- function isRecord(value) {
273
- return typeof value === "object" && value !== null && !Array.isArray(value);
274
- }
275
- const FIELD_TYPE_BOOL = 1;
276
- const FIELD_TYPE_INT32 = 6;
277
- const FIELD_TYPE_UINT32 = 8;
278
- const FIELD_TYPE_STRING = 12;
279
- const FIELD_TYPE_HANDLE = 16;
280
- function isHandleField(value) {
281
- if (!isRecord(value)) return false;
282
- return typeof value["handle"] === "number";
283
- }
284
- function normalizeHexInput(hex) {
285
- const cleaned = hex.replace(/\s+/g, "");
286
- if (cleaned.length % 2 === 0) return cleaned.toLowerCase();
287
- return `0${cleaned.toLowerCase()}`;
288
- }
289
- var MojoDecoder = class {
290
- decodePayload(hex, context) {
291
- const raw = this.cleanHex(hex);
292
- const bytes = Buffer.from(raw, "hex");
293
- const version = this.readUInt8(bytes, 0);
294
- const flags = this.readUInt8(bytes, 1);
295
- const messageType = this.readUInt8(bytes, 2);
296
- const numFields = this.readUInt8(bytes, 3);
297
- const declaredHandles = this.readUInt16LE(bytes, 4);
298
- const fields = {};
299
- const summaryParts = [];
300
- let cursor = 6;
301
- let actualHandles = 0;
302
- for (let index = 0; index < numFields; index += 1) {
303
- if (cursor >= bytes.length) {
304
- summaryParts.push("payload ended before all fields were decoded");
305
- break;
306
- }
307
- const typeCode = this.readUInt8(bytes, cursor);
308
- cursor += 1;
309
- const fieldName = `field${index}`;
310
- if (typeCode === FIELD_TYPE_BOOL) {
311
- if (!this.hasBytes(bytes, cursor, 1)) {
312
- summaryParts.push(`${fieldName} truncated`);
313
- break;
314
- }
315
- fields[fieldName] = this.readUInt8(bytes, cursor) !== 0;
316
- cursor += 1;
317
- continue;
318
- }
319
- if (typeCode === FIELD_TYPE_INT32) {
320
- if (!this.hasBytes(bytes, cursor, 4)) {
321
- summaryParts.push(`${fieldName} truncated`);
322
- break;
323
- }
324
- fields[fieldName] = bytes.readInt32LE(cursor);
325
- cursor += 4;
326
- continue;
327
- }
328
- if (typeCode === FIELD_TYPE_UINT32) {
329
- if (!this.hasBytes(bytes, cursor, 4)) {
330
- summaryParts.push(`${fieldName} truncated`);
331
- break;
332
- }
333
- fields[fieldName] = bytes.readUInt32LE(cursor);
334
- cursor += 4;
335
- continue;
336
- }
337
- if (typeCode === FIELD_TYPE_STRING) {
338
- if (!this.hasBytes(bytes, cursor, 2)) {
339
- summaryParts.push(`${fieldName} length prefix truncated`);
340
- break;
341
- }
342
- const length = this.readUInt16LE(bytes, cursor);
343
- cursor += 2;
344
- if (!this.hasBytes(bytes, cursor, length)) {
345
- summaryParts.push(`${fieldName} string data truncated`);
346
- break;
347
- }
348
- fields[fieldName] = bytes.subarray(cursor, cursor + length).toString("utf8");
349
- cursor += length;
350
- continue;
351
- }
352
- if (typeCode === FIELD_TYPE_HANDLE) {
353
- if (!this.hasBytes(bytes, cursor, 4)) {
354
- summaryParts.push(`${fieldName} handle truncated`);
355
- break;
356
- }
357
- fields[fieldName] = { handle: bytes.readUInt32LE(cursor) };
358
- actualHandles += 1;
359
- cursor += 4;
360
- continue;
361
- }
362
- summaryParts.push(`unknown field type 0x${typeCode.toString(16).padStart(2, "0")}`);
363
- break;
364
- }
365
- const summary = summaryParts.length > 0 ? summaryParts.join("; ") : this.buildSummary(context, Object.keys(fields).length, numFields, actualHandles);
366
- return {
367
- header: {
368
- version,
369
- flags,
370
- messageType,
371
- numFields,
372
- handles: declaredHandles
373
- },
374
- fields,
375
- handles: actualHandles,
376
- raw,
377
- _raw_summary: summary
378
- };
379
- }
380
- encodeMessage(interfaceName, messageType, fields) {
381
- const encodedParts = [];
382
- let handles = 0;
383
- for (const field of fields) {
384
- if (typeof field === "boolean") {
385
- encodedParts.push(Buffer.from([FIELD_TYPE_BOOL, field ? 1 : 0]));
386
- continue;
387
- }
388
- if (typeof field === "number" && Number.isInteger(field) && field >= 0) {
389
- const chunk = Buffer.alloc(5);
390
- chunk.writeUInt8(FIELD_TYPE_UINT32, 0);
391
- chunk.writeUInt32LE(field, 1);
392
- encodedParts.push(chunk);
393
- continue;
394
- }
395
- if (typeof field === "number" && Number.isInteger(field)) {
396
- const chunk = Buffer.alloc(5);
397
- chunk.writeUInt8(FIELD_TYPE_INT32, 0);
398
- chunk.writeInt32LE(field, 1);
399
- encodedParts.push(chunk);
400
- continue;
401
- }
402
- if (isHandleField(field)) {
403
- const chunk = Buffer.alloc(5);
404
- chunk.writeUInt8(FIELD_TYPE_HANDLE, 0);
405
- chunk.writeUInt32LE(field.handle, 1);
406
- encodedParts.push(chunk);
407
- handles += 1;
408
- continue;
409
- }
410
- const text = typeof field === "string" ? field : JSON.stringify(field);
411
- const textBuffer = Buffer.from(text, "utf8");
412
- const header = Buffer.alloc(3);
413
- header.writeUInt8(FIELD_TYPE_STRING, 0);
414
- header.writeUInt16LE(textBuffer.length, 1);
415
- encodedParts.push(header, textBuffer);
416
- }
417
- const messageTypeCode = this.resolveMessageType(interfaceName, messageType);
418
- const fieldCount = Math.min(fields.length, 255);
419
- const header = Buffer.alloc(6);
420
- header.writeUInt8(1, 0);
421
- header.writeUInt8(0, 1);
422
- header.writeUInt8(messageTypeCode, 2);
423
- header.writeUInt8(fieldCount, 3);
424
- header.writeUInt16LE(handles, 4);
425
- return Buffer.concat([header, ...encodedParts]).toString("hex");
426
- }
427
- cleanHex(hex) {
428
- return normalizeHexInput(hex);
429
- }
430
- resolveMessageType(interfaceName, messageType) {
431
- if (/^[0-9]+$/.test(messageType)) return Number.parseInt(messageType, 10) & 255;
432
- if (/^0x[0-9a-f]+$/i.test(messageType)) return Number.parseInt(messageType.slice(2), 16) & 255;
433
- let hash = 0;
434
- const seed = `${interfaceName}:${messageType}`;
435
- for (const char of seed) hash = hash * 31 + char.charCodeAt(0) & 255;
436
- return hash;
437
- }
438
- buildSummary(context, decodedFields, declaredFields, handles) {
439
- return `${context ? `${context}: ` : ""}decoded ${decodedFields}/${declaredFields} fields, ${handles} handle(s)`;
440
- }
441
- readUInt8(bytes, offset) {
442
- if (!this.hasBytes(bytes, offset, 1)) return 0;
443
- return bytes.readUInt8(offset);
444
- }
445
- readUInt16LE(bytes, offset) {
446
- if (!this.hasBytes(bytes, offset, 2)) return 0;
447
- return bytes.readUInt16LE(offset);
448
- }
449
- hasBytes(bytes, offset, length) {
450
- return offset >= 0 && length >= 0 && offset + length <= bytes.length;
451
- }
452
- };
453
- //#endregion
454
- //#region src/server/domains/mojo-ipc/handlers.impl.ts
455
- function getMojoFix(reason) {
456
- return reason.includes("JSHOOK_ENABLE_MOJO_IPC") ? "Unset JSHOOK_ENABLE_MOJO_IPC or set it to 1, then retry." : "Install Frida and ensure the Chromium target is running.";
457
- }
458
- function unavailablePayload(reason, tool) {
459
- return {
460
- ...capabilityFailure(tool, "mojo_ipc_monitoring", reason, getMojoFix(reason)),
461
- error: reason
462
- };
463
- }
464
- const LIVE_CAPTURE_REASON = "Current Mojo IPC backend only exposes a seeded interface catalog and simulated capture. Live Chromium Mojo hooks are not implemented in this build.";
465
- const LIVE_CAPTURE_FIX = "No user-side fix is available in this build. Treat mojo_monitor/mojo_list_interfaces/mojo_messages_get as simulation-only until real Frida hooks are implemented.";
466
- function getFridaProbeSucceeded(monitor) {
467
- const maybeMonitor = monitor;
468
- return typeof maybeMonitor.didFridaProbeSucceed === "function" ? maybeMonitor.didFridaProbeSucceed() : false;
469
- }
470
- var MojoIPCHandlers = class {
471
- constructor(monitor, decoder, eventBus) {
472
- this.monitor = monitor;
473
- this.decoder = decoder;
474
- this.eventBus = eventBus;
475
- }
476
- async handleMojoMonitorDispatch(args) {
477
- return String(args["action"] ?? "") === "stop" ? this.handleMojoMonitorStop() : this.handleMojoMonitorStart(args);
478
- }
479
- async handleMojoIpcCapabilities() {
480
- const monitor = this.getMonitor();
481
- const fridaProbeSucceeded = getFridaProbeSucceeded(monitor);
482
- const availability = typeof monitor.probeAvailability === "function" ? await monitor.probeAvailability() : {
483
- available: monitor.isAvailable(),
484
- reason: monitor.getUnavailableReason(),
485
- fridaAvailable: monitor.isAvailable(),
486
- fridaCliAvailable: false
487
- };
488
- return capabilityReport("mojo_ipc_capabilities", [
489
- {
490
- capability: "mojo_ipc_monitoring",
491
- status: availability.available ? "available" : "unavailable",
492
- reason: availability.reason,
493
- fix: availability.available ? void 0 : getMojoFix(availability.reason ?? ""),
494
- details: {
495
- tools: [
496
- "mojo_monitor",
497
- "mojo_list_interfaces",
498
- "mojo_messages_get"
499
- ],
500
- fridaAvailable: availability.fridaAvailable,
501
- fridaCliAvailable: availability.fridaCliAvailable,
502
- fridaProbeSucceeded,
503
- active: monitor.isActive(),
504
- simulationMode: monitor.isSimulationMode(),
505
- interfaceCatalogSource: monitor.getInterfaceCatalogSource(),
506
- observedInterfaceCount: monitor.getObservedInterfaceCount(),
507
- liveCaptureImplemented: false
508
- }
509
- },
510
- {
511
- capability: "mojo_live_capture",
512
- status: "unavailable",
513
- reason: LIVE_CAPTURE_REASON,
514
- fix: LIVE_CAPTURE_FIX,
515
- details: {
516
- tools: [
517
- "mojo_monitor",
518
- "mojo_list_interfaces",
519
- "mojo_messages_get"
520
- ],
521
- fridaAvailable: availability.fridaAvailable,
522
- fridaCliAvailable: availability.fridaCliAvailable,
523
- fridaProbeSucceeded,
524
- active: monitor.isActive(),
525
- simulationMode: monitor.isSimulationMode(),
526
- interfaceCatalogSource: monitor.getInterfaceCatalogSource(),
527
- observedInterfaceCount: monitor.getObservedInterfaceCount(),
528
- fallbackMode: availability.available ? "simulation" : "none",
529
- liveCaptureImplemented: false
530
- }
531
- },
532
- {
533
- capability: "mojo_payload_decode",
534
- status: "available",
535
- details: { tools: ["mojo_decode_message"] }
536
- }
537
- ]);
538
- }
539
- async handleMojoMonitorStart(args) {
540
- const monitor = this.getMonitor();
541
- const deviceId = argString(args, "deviceId");
542
- await monitor.start(deviceId);
543
- if (!monitor.isAvailable()) return unavailablePayload(monitor.getUnavailableReason() ?? "Mojo IPC monitoring is not available", "mojo_monitor");
544
- const response = {
545
- success: true,
546
- available: true,
547
- started: monitor.isActive(),
548
- deviceId: monitor.getDeviceId() ?? null,
549
- simulation: monitor.isSimulationMode(),
550
- interfaceCatalogSource: monitor.getInterfaceCatalogSource(),
551
- observedInterfaceCount: monitor.getObservedInterfaceCount()
552
- };
553
- if (monitor.isSimulationMode()) response.warningMessage = "Mojo IPC monitor is running in simulation mode. Real Frida-backed message capture is not active.";
554
- return response;
555
- }
556
- async handleMojoMonitorStop() {
557
- const monitor = this.getMonitor();
558
- if (!monitor.isAvailable()) return unavailablePayload(monitor.getUnavailableReason() ?? "Mojo IPC monitoring is not available", "mojo_monitor");
559
- await monitor.stop();
560
- return {
561
- success: true,
562
- available: true,
563
- started: false,
564
- simulation: monitor.isSimulationMode()
565
- };
566
- }
567
- async handleMojoDecodeMessage(args) {
568
- const hexPayload = argString(args, "hexPayload", "");
569
- if (hexPayload.length === 0) return {
570
- success: false,
571
- error: "hexPayload is required"
572
- };
573
- return {
574
- success: true,
575
- decoded: this.getDecoder().decodePayload(hexPayload)
576
- };
577
- }
578
- async handleMojoListInterfaces() {
579
- const monitor = this.getMonitor();
580
- if (!monitor.isAvailable()) return {
581
- ...unavailablePayload(monitor.getUnavailableReason() ?? "Mojo IPC monitoring is not available", "mojo_list_interfaces"),
582
- interfaces: []
583
- };
584
- const response = {
585
- success: true,
586
- available: true,
587
- active: monitor.isActive(),
588
- interfaces: await monitor.listInterfaces(),
589
- simulation: monitor.isSimulationMode(),
590
- interfaceCatalogSource: monitor.getInterfaceCatalogSource(),
591
- observedInterfaceCount: monitor.getObservedInterfaceCount()
592
- };
593
- if (monitor.getInterfaceCatalogSource() === "seeded-defaults") response.warningMessage = "Interface list currently comes from the seeded default catalog; no live observed Mojo interfaces have been captured yet.";
594
- else if (monitor.isSimulationMode()) response.warningMessage = "Mojo IPC monitor is running in simulation mode. Interface counts may not reflect live traffic.";
595
- return response;
596
- }
597
- async handleMojoMessagesGet(args) {
598
- const monitor = this.getMonitor();
599
- if (!monitor.isAvailable()) return {
600
- ...unavailablePayload(monitor.getUnavailableReason() ?? "Mojo IPC monitoring is not available", "mojo_messages_get"),
601
- messages: [],
602
- totalAvailable: 0,
603
- filtered: false,
604
- simulation: true
605
- };
606
- const limit = argNumber(args, "limit");
607
- const interfaceName = argString(args, "interface");
608
- const result = await monitor.getMessages({
609
- limit: limit !== void 0 ? Math.min(limit, 1e4) : 100,
610
- interfaceName
611
- });
612
- const response = {
613
- success: true,
614
- available: true,
615
- active: monitor.isActive(),
616
- messages: result.messages,
617
- totalAvailable: result.totalAvailable,
618
- filtered: result.filtered,
619
- simulation: result.simulation,
620
- interfaceCatalogSource: monitor.getInterfaceCatalogSource(),
621
- observedInterfaceCount: monitor.getObservedInterfaceCount()
622
- };
623
- if (result.messages && Array.isArray(result.messages) && result.messages.length > 0) this.eventBus?.emit("mojo:message_captured", {
624
- messageCount: result.messages.length,
625
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
626
- });
627
- if (monitor.isSimulationMode()) response.warningMessage = "Mojo IPC is operating in simulation mode. Messages are not captured from real Frida hooks. Install Frida for live IPC monitoring.";
628
- return response;
629
- }
630
- getMonitor() {
631
- if (!this.monitor) this.monitor = new MojoMonitor();
632
- return this.monitor;
633
- }
634
- getDecoder() {
635
- if (!this.decoder) this.decoder = new MojoDecoder();
636
- return this.decoder;
637
- }
638
- };
639
- //#endregion
640
- export { MojoIPCHandlers };