@jshookmcp/jshook 0.3.0 → 0.3.1

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 (321) hide show
  1. package/README.md +25 -50
  2. package/README.zh.md +25 -48
  3. package/dist/AntiCheatDetector-CGVGNfy5.mjs +1 -0
  4. package/dist/CacheAdapters-CdAxBmVW.mjs +1 -0
  5. package/dist/CodeInjector-BlgyqTOk.mjs +1 -0
  6. package/dist/ConsoleMonitor-Dkqc0HNi.mjs +490 -0
  7. package/dist/DOMInspector-BYY_EJ0C.mjs +95 -0
  8. package/dist/DarwinAPI-DC4HGGLl.mjs +1 -0
  9. package/dist/DetailedDataManager-BniBJlVv.mjs +1 -0
  10. package/dist/EventBus-DgciURGg.mjs +1 -0
  11. package/dist/EvidenceGraphBridge-BIfgB7HP.mjs +1 -0
  12. package/dist/ExtensionManager-erMpqcLk.mjs +1 -0
  13. package/dist/FingerprintManager-N7BZqjxP.mjs +1 -0
  14. package/dist/HardwareBreakpoint-OcJqNFVc.mjs +1 -0
  15. package/dist/HeapAnalyzer-CqAxZzeS.mjs +1 -0
  16. package/dist/{HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs → HookGeneratorBuilders.core.generators.storage-Bf1fbrNK.mjs} +66 -101
  17. package/dist/InstrumentationSession-DxXs0sCp.mjs +1 -0
  18. package/dist/MCPServer.search.handlers.domain-DVbWL1bT.mjs +1 -0
  19. package/dist/MemoryController-BaqstM5w.mjs +2 -0
  20. package/dist/MemoryScanSession-CaxAjZJf.mjs +1 -0
  21. package/dist/MemoryScanner-BLYnMJy6.mjs +1 -0
  22. package/dist/NativeMemoryManager.impl-CI554XbY.mjs +1 -0
  23. package/dist/NativeMemoryManager.utils-DM4NC3FE.mjs +1 -0
  24. package/dist/PEAnalyzer-DJyaJTQJ.mjs +1 -0
  25. package/dist/PageController-D9jVkH0i.mjs +1 -0
  26. package/dist/PointerChainEngine-5nF9eNlu.mjs +1 -0
  27. package/dist/PrerequisiteError-Bl3dK8XA.mjs +1 -0
  28. package/dist/ProcessRegistry-Hf12LlR9.mjs +1 -0
  29. package/dist/ResponseBuilder-B2lu4KEl.mjs +1 -0
  30. package/dist/ReverseEvidenceGraph-B931HeoW.mjs +2 -0
  31. package/dist/ScriptManager-fgqiALgj.mjs +7 -0
  32. package/dist/Speedhack-l6s8L2Qw.mjs +1 -0
  33. package/dist/StealthVerifier-Dhbj4B4P.mjs +1 -0
  34. package/dist/StructureAnalyzer-A-WamfYE.mjs +2 -0
  35. package/dist/ToolCatalog-D_IKl1Hu.mjs +1 -0
  36. package/dist/ToolError-DWU_z7gp.mjs +1 -0
  37. package/dist/ToolProbe-xsfALmN3.mjs +1 -0
  38. package/dist/ToolRegistry-B0Zs-phN.mjs +1 -0
  39. package/dist/ToolRouter.policy-CFHoN_Lw.mjs +4 -0
  40. package/dist/TraceRecorder-Dd8jLXpi.mjs +272 -0
  41. package/dist/VersionDetector-DMoUWyNm.mjs +9 -0
  42. package/dist/Win32API-Bhi5xFBe.mjs +1 -0
  43. package/dist/Win32Debug-CQteFL4F.mjs +1 -0
  44. package/dist/WorkflowEngine-CxEp2WXH.mjs +1 -0
  45. package/dist/analysis-BuR-NgX8.mjs +5 -0
  46. package/dist/{antidebug-BRKeyt27.mjs → antidebug-BOTZH6-0.mjs} +8 -259
  47. package/dist/artifactRetention-NBdncOEW.mjs +1 -0
  48. package/dist/artifacts-B5xQuEa_.mjs +1 -0
  49. package/dist/authorization-schema-B40obG1A.mjs +1 -0
  50. package/dist/betterSqlite3-CGaxz4AX.mjs +1 -0
  51. package/dist/binary-instrument-Cf9qqLlM.mjs +7 -0
  52. package/dist/bind-helpers-BlAOQrFQ.mjs +1 -0
  53. package/dist/boringssl-inspector-BST5vtKx.mjs +2 -0
  54. package/dist/browser-C4Le3xqA.mjs +11 -0
  55. package/dist/capabilities-DbYCv-HF.mjs +1 -0
  56. package/dist/chunk-C_pMuVsO.mjs +1 -0
  57. package/dist/collector-CKO8RPK8.mjs +1 -0
  58. package/dist/concurrency-CcK46d0h.mjs +1 -0
  59. package/dist/constants-Cp6hBrrx.mjs +1 -0
  60. package/dist/coordination-BbijHEHH.mjs +1 -0
  61. package/dist/debugger-CRJq_krh.mjs +1 -0
  62. package/dist/definitions-BGobEDQa.mjs +1 -0
  63. package/dist/definitions-BGwNSkVm.mjs +1 -0
  64. package/dist/definitions-BbxOUiP-.mjs +1 -0
  65. package/dist/definitions-CCP9gphV.mjs +1 -0
  66. package/dist/definitions-CIO9O-Sw.mjs +1 -0
  67. package/dist/definitions-CYFbewnd.mjs +1 -0
  68. package/dist/definitions-CdWEuIkI.mjs +1 -0
  69. package/dist/definitions-CoQFbggH.mjs +1 -0
  70. package/dist/definitions-CuJRsJ6N.mjs +1 -0
  71. package/dist/definitions-DI9YXsJk.mjs +1 -0
  72. package/dist/definitions-DJklW2sS.mjs +1 -0
  73. package/dist/definitions-DZ8uKusP.mjs +1 -0
  74. package/dist/definitions-Dds_zrWx.mjs +1 -0
  75. package/dist/definitions-Dgrg7f3D.mjs +1 -0
  76. package/dist/definitions-DtE0XLrT.mjs +1 -0
  77. package/dist/definitions-LaYTuwQd.mjs +26 -0
  78. package/dist/definitions-NoVp_9Pm.mjs +1 -0
  79. package/dist/definitions-OvGsfxdt.mjs +1 -0
  80. package/dist/definitions-jXPaVy4P.mjs +1 -0
  81. package/dist/encoding-DGcr6Aj_.mjs +2 -0
  82. package/dist/ensure-browser-core-Buls24LQ.mjs +1 -0
  83. package/dist/evidence-graph-bridge-B0yhGPcs.mjs +1 -0
  84. package/dist/factory-Cx_1LorX.mjs +1 -0
  85. package/dist/flat-target-session-CO5g78k3.mjs +1 -0
  86. package/dist/formatAddress-C7j2fDlM.mjs +1 -0
  87. package/dist/graphql-HLf3MS8H.mjs +62 -0
  88. package/dist/handlers-BLMa4X7l.mjs +54 -0
  89. package/dist/handlers-BP12ZsWc.mjs +4 -0
  90. package/dist/handlers-BZoPla6E.mjs +1 -0
  91. package/dist/handlers-BggKiVx9.mjs +2 -0
  92. package/dist/handlers-D3iev8g1.mjs +1 -0
  93. package/dist/handlers-D49r1-1P.mjs +1 -0
  94. package/dist/handlers-DCE45Ww8.mjs +2 -0
  95. package/dist/handlers-DW5AbYs5.mjs +5 -0
  96. package/dist/handlers-De5u62Ga2.mjs +1 -0
  97. package/dist/handlers-DmQzIc44.mjs +31 -0
  98. package/dist/handlers-DnJRGp7t.mjs +302 -0
  99. package/dist/handlers-Dv_runVv.mjs +2 -0
  100. package/dist/handlers-S9Ws0IGy.mjs +2 -0
  101. package/dist/{handlers-Dz9PYsCa.mjs → handlers-pVNpaw4A.mjs} +118 -904
  102. package/dist/handlers.impl-CD2_kOcC.mjs +1 -0
  103. package/dist/hooks-DDKppogd.mjs +600 -0
  104. package/dist/index.mjs +12 -5235
  105. package/dist/logger-sBC6IdRT.mjs +1 -0
  106. package/dist/maintenance-CutEO84j.mjs +1 -0
  107. package/dist/manifest-BFGxlDRh.mjs +123 -0
  108. package/dist/manifest-BPuE6oH2.mjs +1 -0
  109. package/dist/manifest-BXry5N09.mjs +1 -0
  110. package/dist/manifest-BeP_zJGb2.mjs +1 -0
  111. package/dist/manifest-C0g67k6U.mjs +1 -0
  112. package/dist/manifest-C1nZkTkO.mjs +1 -0
  113. package/dist/manifest-C7qV1z7F.mjs +1 -0
  114. package/dist/manifest-CDeUZGUZ.mjs +1 -0
  115. package/dist/manifest-CDiCtaQT.mjs +1 -0
  116. package/dist/manifest-CFn0359q2.mjs +1 -0
  117. package/dist/manifest-CGq4NpqH2.mjs +1 -0
  118. package/dist/manifest-CJMGt7Qy.mjs +1 -0
  119. package/dist/manifest-CRIJq4Hs.mjs +1 -0
  120. package/dist/manifest-C_hEIjSx.mjs +1 -0
  121. package/dist/manifest-CeQmtQOY.mjs +1 -0
  122. package/dist/manifest-Cq0j7GZt.mjs +1 -0
  123. package/dist/manifest-CtPmHAdn.mjs +1 -0
  124. package/dist/manifest-Cx2IVMUY.mjs +1 -0
  125. package/dist/manifest-D16xPXro.mjs +1 -0
  126. package/dist/manifest-D44TaRJU.mjs +1 -0
  127. package/dist/manifest-D610kxZr.mjs +2 -0
  128. package/dist/manifest-DC-SMF6b.mjs +1 -0
  129. package/dist/manifest-DD3rtxvV.mjs +1 -0
  130. package/dist/manifest-DKUorv5M.mjs +1 -0
  131. package/dist/manifest-DMJlcsTR.mjs +1 -0
  132. package/dist/manifest-DWUUWBz0.mjs +1 -0
  133. package/dist/manifest-De-6Wf2R.mjs +1 -0
  134. package/dist/manifest-Dgh0uDW-.mjs +1 -0
  135. package/dist/manifest-Dm0o3i2U.mjs +1 -0
  136. package/dist/manifest-DsVh7Y4U.mjs +1 -0
  137. package/dist/manifest-DtEFSRaq.mjs +1 -0
  138. package/dist/manifest-H-EpAyZQ.mjs +1 -0
  139. package/dist/manifest-ais9Afrw.mjs +1 -0
  140. package/dist/manifest-tmb54wmA.mjs +1 -0
  141. package/dist/manifest-yu2xiQqe.mjs +1 -0
  142. package/dist/manifest-zrbrpKCC.mjs +1 -0
  143. package/dist/matchesWildcardPattern-BGqLSmEs.mjs +1 -0
  144. package/dist/modules-p-PUNv9r.mjs +332 -0
  145. package/dist/mojo-ipc-VGlv3Qyp.mjs +9 -0
  146. package/dist/network-BjZ1Y-GB.mjs +7 -0
  147. package/dist/outputPaths-BonGThuc.mjs +2 -0
  148. package/dist/parse-args-Cuk7-xUt.mjs +1 -0
  149. package/dist/platform-C446Lf97.mjs +93 -0
  150. package/dist/playwright-cdp-fallback-BwVR-_T3.mjs +1 -0
  151. package/dist/process-C9f2A5zk.mjs +962 -0
  152. package/dist/proxy-CvRepxgV.mjs +1 -0
  153. package/dist/registry-DUHIPE-v.mjs +1 -0
  154. package/dist/response-C7rKQst4.mjs +1 -0
  155. package/dist/search-defaults-D2bY-rzH.mjs +1 -0
  156. package/dist/server/plugin-api.mjs +1 -293
  157. package/dist/shared-state-board-Cyg-xh_k.mjs +1 -0
  158. package/dist/sourcemap-D6Q1UuAp.mjs +1 -0
  159. package/dist/ssrf-policy-T96MR3r6.mjs +1 -0
  160. package/dist/streaming-CTX58tbb.mjs +1 -0
  161. package/dist/tool-builder-CI9914Tf.mjs +1 -0
  162. package/dist/transform-Cv9P2vVD.mjs +103 -0
  163. package/dist/types-CuyefmGT.mjs +1 -0
  164. package/dist/types-DtThH00r.mjs +1 -0
  165. package/dist/wasm-DaJa8J0V.mjs +174 -0
  166. package/dist/webcrack-CsLLJIs9.mjs +46 -0
  167. package/dist/workflow-CYIXtrWD.mjs +101 -0
  168. package/package.json +50 -78
  169. package/dist/AntiCheatDetector-CqGDXmfc.mjs +0 -350
  170. package/dist/CacheAdapters-jJFy20G-.mjs +0 -80
  171. package/dist/CodeInjector-BdjRfNx7.mjs +0 -150
  172. package/dist/ConsoleMonitor-DykL3IAw.mjs +0 -2269
  173. package/dist/DarwinAPI-ETyy0xyo.mjs +0 -363
  174. package/dist/DetailedDataManager-HT49OrvF.mjs +0 -217
  175. package/dist/EventBus-DFKvADm3.mjs +0 -141
  176. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +0 -153
  177. package/dist/ExtensionManager-BDMsY2Dz.mjs +0 -721
  178. package/dist/FingerprintManager-BN4UQWnX.mjs +0 -96
  179. package/dist/HardwareBreakpoint-Cc2AFq1Y.mjs +0 -239
  180. package/dist/HeapAnalyzer-DruMgsgj.mjs +0 -284
  181. package/dist/InstrumentationSession-DLH0vd-z.mjs +0 -244
  182. package/dist/MemoryController-CMtviNW_.mjs +0 -167
  183. package/dist/MemoryScanSession-ITgb_NMi.mjs +0 -278
  184. package/dist/MemoryScanner-CiL7Z3ey.mjs +0 -428
  185. package/dist/NativeMemoryManager.impl-D9Lkovvn.mjs +0 -485
  186. package/dist/NativeMemoryManager.utils-BBlAixF5.mjs +0 -165
  187. package/dist/PEAnalyzer-DMQ44gen.mjs +0 -385
  188. package/dist/PageController-BPJNqqBN.mjs +0 -431
  189. package/dist/PointerChainEngine-K7wN8Z-w.mjs +0 -325
  190. package/dist/PrerequisiteError-TuyZIs6n.mjs +0 -20
  191. package/dist/ProcessRegistry-zGg12QbE.mjs +0 -74
  192. package/dist/ResponseBuilder-CJXWmWNw.mjs +0 -143
  193. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +0 -269
  194. package/dist/ScriptManager-ZuWD-0Jg.mjs +0 -3003
  195. package/dist/Speedhack-D-z0umeT.mjs +0 -156
  196. package/dist/StealthVerifier-BWmPgQsv.mjs +0 -135
  197. package/dist/StructureAnalyzer-Cav5AVSL.mjs +0 -429
  198. package/dist/ToolCatalog-5OJdMiF0.mjs +0 -582
  199. package/dist/ToolError-jh9whhMd.mjs +0 -15
  200. package/dist/ToolProbe-DbCFGyrg.mjs +0 -45
  201. package/dist/ToolRegistry-B9krbTtI.mjs +0 -180
  202. package/dist/ToolRouter.policy-BGDAGyeH.mjs +0 -344
  203. package/dist/TraceRecorder-B41Z5XBj.mjs +0 -1286
  204. package/dist/VersionDetector-K3V4vGsw.mjs +0 -104
  205. package/dist/Win32API-C2kjj0ze.mjs +0 -346
  206. package/dist/Win32Debug-CKrGOTpo.mjs +0 -274
  207. package/dist/WorkflowEngine-DJ6M4opp.mjs +0 -569
  208. package/dist/analysis-BHeJW2Nb.mjs +0 -1234
  209. package/dist/artifactRetention-CPXkUJXp.mjs +0 -598
  210. package/dist/artifacts-DkfosXH3.mjs +0 -59
  211. package/dist/authorization-schema-DRqyJMSk.mjs +0 -31
  212. package/dist/betterSqlite3-DLSBZodi.mjs +0 -74
  213. package/dist/binary-instrument--V3MAhJ4.mjs +0 -971
  214. package/dist/bind-helpers-ClV34xdn.mjs +0 -42
  215. package/dist/boringssl-inspector-Bo_LOLaS.mjs +0 -180
  216. package/dist/browser-Dx3_S2cG.mjs +0 -4369
  217. package/dist/capabilities-CcHlvWgK.mjs +0 -33
  218. package/dist/chunk-CjcI7cDX.mjs +0 -15
  219. package/dist/concurrency-Drev_Vz9.mjs +0 -41
  220. package/dist/constants-CDZLOoVv.mjs +0 -534
  221. package/dist/coordination-DgItD9DL.mjs +0 -259
  222. package/dist/debugger-RS3RSAqs.mjs +0 -1288
  223. package/dist/definitions-BEoYofW5.mjs +0 -47
  224. package/dist/definitions-BRaefg3u.mjs +0 -365
  225. package/dist/definitions-BbkvZkiv.mjs +0 -96
  226. package/dist/definitions-BtWSHJ3o.mjs +0 -17
  227. package/dist/definitions-C1gCHO0i.mjs +0 -43
  228. package/dist/definitions-CDOg_b-l.mjs +0 -138
  229. package/dist/definitions-CVPD9hzZ.mjs +0 -54
  230. package/dist/definitions-Cea8Lgl7.mjs +0 -94
  231. package/dist/definitions-DAgIyjxM.mjs +0 -10
  232. package/dist/definitions-DJA27nsL.mjs +0 -66
  233. package/dist/definitions-DKPFU3LW.mjs +0 -25
  234. package/dist/definitions-DPRpZQ96.mjs +0 -47
  235. package/dist/definitions-DUE5gmdn.mjs +0 -18
  236. package/dist/definitions-DYVjOtxa.mjs +0 -26
  237. package/dist/definitions-DcYLVLCo.mjs +0 -37
  238. package/dist/definitions-Pp5LI2H4.mjs +0 -27
  239. package/dist/definitions-j9KdHVNR.mjs +0 -14
  240. package/dist/definitions-uzkjBwa7.mjs +0 -258
  241. package/dist/definitions-va-AnLuQ.mjs +0 -28
  242. package/dist/encoding-DJeqHmpd.mjs +0 -1079
  243. package/dist/evidence-graph-bridge-DcYizFk2.mjs +0 -136
  244. package/dist/factory-C90tBff6.mjs +0 -575
  245. package/dist/flat-target-session-Dgax2Cy3.mjs +0 -29
  246. package/dist/formatAddress-nnMvEohD.mjs +0 -17
  247. package/dist/graphql-CoHrhweh.mjs +0 -1197
  248. package/dist/handlers-4jmR0nMs.mjs +0 -898
  249. package/dist/handlers-BAHPxcch.mjs +0 -789
  250. package/dist/handlers-BOs9b907.mjs +0 -2600
  251. package/dist/handlers-BWXEy6ef.mjs +0 -917
  252. package/dist/handlers-Bndn6QvE.mjs +0 -111
  253. package/dist/handlers-BqC4bD4s.mjs +0 -681
  254. package/dist/handlers-BtYq60bM2.mjs +0 -276
  255. package/dist/handlers-BzgcB4iv.mjs +0 -799
  256. package/dist/handlers-CRyRWj2b.mjs +0 -859
  257. package/dist/handlers-CVv2H1uq.mjs +0 -592
  258. package/dist/handlers-Dl5a7JS4.mjs +0 -572
  259. package/dist/handlers-Dx2d7jt7.mjs +0 -2537
  260. package/dist/handlers-HujRKC3b.mjs +0 -661
  261. package/dist/handlers.impl-XWXkQfyi.mjs +0 -807
  262. package/dist/hooks-B1B8NRHL.mjs +0 -898
  263. package/dist/logger-Dh_xb7_2.mjs +0 -93
  264. package/dist/maintenance-PRMkLVRW.mjs +0 -835
  265. package/dist/manifest-67Bok-Si.mjs +0 -58
  266. package/dist/manifest-6lNTMZAB2.mjs +0 -87
  267. package/dist/manifest-B2duEHiH.mjs +0 -90
  268. package/dist/manifest-B6EY9Vm8.mjs +0 -57
  269. package/dist/manifest-B6nKSbyY.mjs +0 -95
  270. package/dist/manifest-BL8AQNPF.mjs +0 -106
  271. package/dist/manifest-BSZvJJmV.mjs +0 -47
  272. package/dist/manifest-BU7qzUyX.mjs +0 -418
  273. package/dist/manifest-Bl62e8WK.mjs +0 -49
  274. package/dist/manifest-Bo5cXjdt.mjs +0 -82
  275. package/dist/manifest-BpS4gtUK.mjs +0 -1347
  276. package/dist/manifest-Bv65_e2W.mjs +0 -101
  277. package/dist/manifest-BytNIF4Z.mjs +0 -117
  278. package/dist/manifest-C-xtsjS3.mjs +0 -81
  279. package/dist/manifest-CDYl7OhA.mjs +0 -66
  280. package/dist/manifest-CRZ3xmkD.mjs +0 -61
  281. package/dist/manifest-CoW6u4Tp.mjs +0 -132
  282. package/dist/manifest-Cq5zN_8A.mjs +0 -50
  283. package/dist/manifest-D7YZM_2e.mjs +0 -194
  284. package/dist/manifest-DE_VrAeQ.mjs +0 -314
  285. package/dist/manifest-DGsXSCpT.mjs +0 -39
  286. package/dist/manifest-DJ2vfEuW.mjs +0 -156
  287. package/dist/manifest-DPXDYhEu.mjs +0 -80
  288. package/dist/manifest-Dd4fQb0a.mjs +0 -322
  289. package/dist/manifest-Deq6opGg.mjs +0 -223
  290. package/dist/manifest-DfJTafJK.mjs +0 -37
  291. package/dist/manifest-DgOdgN_j.mjs +0 -50
  292. package/dist/manifest-DlbMW4v4.mjs +0 -47
  293. package/dist/manifest-DmVfbH0w.mjs +0 -374
  294. package/dist/manifest-Dog6Ddjr.mjs +0 -109
  295. package/dist/manifest-DvgU5FWb.mjs +0 -58
  296. package/dist/manifest-HsfDBs7j.mjs +0 -50
  297. package/dist/manifest-I8oQHvCG.mjs +0 -186
  298. package/dist/manifest-NvH_a-av.mjs +0 -786
  299. package/dist/manifest-cEJU1v0Z.mjs +0 -129
  300. package/dist/manifest-wOl5XLB12.mjs +0 -112
  301. package/dist/modules-tZozf0LQ.mjs +0 -10635
  302. package/dist/mojo-ipc-DXNEXEqb.mjs +0 -640
  303. package/dist/network-CPVvwvFg.mjs +0 -3852
  304. package/dist/outputPaths-um7lCRY3.mjs +0 -1141
  305. package/dist/parse-args-B4cY5Vx5.mjs +0 -39
  306. package/dist/platform-CYeFoTWp.mjs +0 -2161
  307. package/dist/process-BTbgcVc6.mjs +0 -1306
  308. package/dist/proxy-r8YN6nP1.mjs +0 -192
  309. package/dist/registry-Bl8ZQW61.mjs +0 -34
  310. package/dist/response-CWhh2aLo.mjs +0 -34
  311. package/dist/shared-state-board-BoZnSoj-.mjs +0 -586
  312. package/dist/sourcemap-BIDHUVXy.mjs +0 -934
  313. package/dist/ssrf-policy-Dsqd-DTX.mjs +0 -166
  314. package/dist/streaming-Dal6utPp.mjs +0 -725
  315. package/dist/tool-builder-BHJp32mV.mjs +0 -186
  316. package/dist/transform-DRVgGG90.mjs +0 -1011
  317. package/dist/types-Bx92KJfT.mjs +0 -4
  318. package/dist/types-DDBWs9UP.mjs +0 -37
  319. package/dist/wasm-BYx5UOeG.mjs +0 -1044
  320. package/dist/webcrack-Be0_FccV.mjs +0 -747
  321. package/dist/workflow-BpuKEtvn.mjs +0 -725
@@ -1,274 +0,0 @@
1
- import { t as logger } from "./logger-Dh_xb7_2.mjs";
2
- import { r as GetLastError, t as CloseHandle } from "./Win32API-C2kjj0ze.mjs";
3
- import koffi from "koffi";
4
- //#region src/native/Win32Debug.ts
5
- /**
6
- * Win32 Debug API Bindings using koffi FFI.
7
- *
8
- * Thread management, debug registers, debug events, and instruction cache.
9
- * These extend Win32API.ts with debug-specific functionality needed for
10
- * hardware breakpoints and code injection.
11
- *
12
- * @module Win32Debug
13
- */
14
- const THREAD_ACCESS = {
15
- TERMINATE: 1,
16
- SUSPEND_RESUME: 2,
17
- GET_CONTEXT: 8,
18
- SET_CONTEXT: 16,
19
- SET_INFORMATION: 32,
20
- QUERY_INFORMATION: 64,
21
- SET_THREAD_TOKEN: 128,
22
- IMPERSONATE: 256,
23
- DIRECT_IMPERSONATION: 512,
24
- ALL_ACCESS: 2032639
25
- };
26
- /** CONTEXT flags for GetThreadContext / SetThreadContext */
27
- const CONTEXT_FLAGS = {
28
- AMD64: 1048576,
29
- CONTROL: 1048577,
30
- INTEGER: 1048578,
31
- SEGMENTS: 1048580,
32
- FLOATING_POINT: 1048584,
33
- DEBUG_REGISTERS: 1048592,
34
- FULL: 1048587,
35
- ALL: 1048607
36
- };
37
- /** Debug event codes */
38
- const DEBUG_EVENT_CODE = {
39
- EXCEPTION_DEBUG_EVENT: 1,
40
- CREATE_THREAD_DEBUG_EVENT: 2,
41
- CREATE_PROCESS_DEBUG_EVENT: 3,
42
- EXIT_THREAD_DEBUG_EVENT: 4,
43
- EXIT_PROCESS_DEBUG_EVENT: 5,
44
- LOAD_DLL_DEBUG_EVENT: 6,
45
- UNLOAD_DLL_DEBUG_EVENT: 7,
46
- OUTPUT_DEBUG_STRING_EVENT: 8,
47
- RIP_EVENT: 9
48
- };
49
- /** Exception codes */
50
- const EXCEPTION_CODE = {
51
- SINGLE_STEP: 2147483652,
52
- BREAKPOINT: 2147483651,
53
- ACCESS_VIOLATION: 3221225477
54
- };
55
- /** Continue status for ContinueDebugEvent */
56
- const DBG = {
57
- CONTINUE: 65538,
58
- EXCEPTION_NOT_HANDLED: 2147549185,
59
- REPLY_LATER: 1073807361
60
- };
61
- /** TH32CS flags for CreateToolhelp32Snapshot */
62
- const TH32CS = {
63
- SNAPHEAPLIST: 1,
64
- SNAPTHREAD: 4,
65
- SNAPMODULE: 8
66
- };
67
- const CONTEXT_SIZE = 1232;
68
- /** Parse x64 CONTEXT from raw buffer */
69
- function parseContext(buf) {
70
- return {
71
- contextFlags: buf.readUInt32LE(48),
72
- eflags: buf.readUInt32LE(68),
73
- dr0: buf.readBigUInt64LE(72),
74
- dr1: buf.readBigUInt64LE(80),
75
- dr2: buf.readBigUInt64LE(88),
76
- dr3: buf.readBigUInt64LE(96),
77
- dr6: buf.readBigUInt64LE(104),
78
- dr7: buf.readBigUInt64LE(112),
79
- rax: buf.readBigUInt64LE(120),
80
- rcx: buf.readBigUInt64LE(128),
81
- rdx: buf.readBigUInt64LE(136),
82
- rbx: buf.readBigUInt64LE(144),
83
- rsp: buf.readBigUInt64LE(152),
84
- rbp: buf.readBigUInt64LE(160),
85
- rsi: buf.readBigUInt64LE(168),
86
- rdi: buf.readBigUInt64LE(176),
87
- r8: buf.readBigUInt64LE(184),
88
- r9: buf.readBigUInt64LE(192),
89
- r10: buf.readBigUInt64LE(200),
90
- r11: buf.readBigUInt64LE(208),
91
- r12: buf.readBigUInt64LE(216),
92
- r13: buf.readBigUInt64LE(224),
93
- r14: buf.readBigUInt64LE(232),
94
- r15: buf.readBigUInt64LE(240),
95
- rip: buf.readBigUInt64LE(248)
96
- };
97
- }
98
- /** Write x64 CONTEXT fields into a raw buffer */
99
- function writeContext(buf, ctx) {
100
- if (ctx.contextFlags !== void 0) buf.writeUInt32LE(ctx.contextFlags, 48);
101
- if (ctx.eflags !== void 0) buf.writeUInt32LE(ctx.eflags, 68);
102
- if (ctx.dr0 !== void 0) buf.writeBigUInt64LE(ctx.dr0, 72);
103
- if (ctx.dr1 !== void 0) buf.writeBigUInt64LE(ctx.dr1, 80);
104
- if (ctx.dr2 !== void 0) buf.writeBigUInt64LE(ctx.dr2, 88);
105
- if (ctx.dr3 !== void 0) buf.writeBigUInt64LE(ctx.dr3, 96);
106
- if (ctx.dr6 !== void 0) buf.writeBigUInt64LE(ctx.dr6, 104);
107
- if (ctx.dr7 !== void 0) buf.writeBigUInt64LE(ctx.dr7, 112);
108
- if (ctx.rip !== void 0) buf.writeBigUInt64LE(ctx.rip, 248);
109
- }
110
- let kernel32Debug = null;
111
- function getKernel32() {
112
- if (!kernel32Debug) {
113
- kernel32Debug = koffi.load("kernel32.dll");
114
- logger.debug("Loaded kernel32.dll for debug APIs");
115
- }
116
- return kernel32Debug;
117
- }
118
- /** Open a thread handle */
119
- function OpenThread(dwDesiredAccess, bInheritHandle, dwThreadId) {
120
- return getKernel32().func("void * OpenThread(uint32, int, uint32)")(dwDesiredAccess, bInheritHandle ? 1 : 0, dwThreadId);
121
- }
122
- /** Suspend a thread, returns previous suspend count */
123
- function SuspendThread(hThread) {
124
- const result = getKernel32().func("uint32 SuspendThread(void *)")(hThread);
125
- if (result === 4294967295) throw new Error(`SuspendThread failed. Error: 0x${GetLastError().toString(16)}`);
126
- return result;
127
- }
128
- /** Resume a thread, returns previous suspend count */
129
- function ResumeThread(hThread) {
130
- const result = getKernel32().func("uint32 ResumeThread(void *)")(hThread);
131
- if (result === 4294967295) throw new Error(`ResumeThread failed. Error: 0x${GetLastError().toString(16)}`);
132
- return result;
133
- }
134
- /** Get thread context (CPU registers including debug registers) */
135
- function GetThreadContext(hThread, contextFlags) {
136
- const fn = getKernel32().func("int GetThreadContext(void *, _Inout_ uint8_t[1232])");
137
- const buf = Buffer.alloc(CONTEXT_SIZE);
138
- buf.writeUInt32LE(contextFlags, 48);
139
- if (fn(hThread, buf) === 0) throw new Error(`GetThreadContext failed. Error: 0x${GetLastError().toString(16)}`);
140
- return buf;
141
- }
142
- /** Set thread context (CPU registers including debug registers) */
143
- function SetThreadContext(hThread, contextBuf) {
144
- if (getKernel32().func("int SetThreadContext(void *, uint8_t[1232])")(hThread, contextBuf) === 0) throw new Error(`SetThreadContext failed. Error: 0x${GetLastError().toString(16)}`);
145
- }
146
- /** Attach as debugger to a process */
147
- function DebugActiveProcess(dwProcessId) {
148
- if (getKernel32().func("int DebugActiveProcess(uint32)")(dwProcessId) === 0) throw new Error(`DebugActiveProcess failed for pid ${dwProcessId}. Error: 0x${GetLastError().toString(16)}`);
149
- }
150
- /** Detach debugger from process */
151
- function DebugActiveProcessStop(dwProcessId) {
152
- if (getKernel32().func("int DebugActiveProcessStop(uint32)")(dwProcessId) === 0) throw new Error(`DebugActiveProcessStop failed. Error: 0x${GetLastError().toString(16)}`);
153
- }
154
- /** Don't kill the process when debugger detaches */
155
- function DebugSetProcessKillOnExit(killOnExit) {
156
- getKernel32().func("int DebugSetProcessKillOnExit(int)")(killOnExit ? 1 : 0);
157
- }
158
- function WaitForDebugEvent(timeoutMs) {
159
- const fn = getKernel32().func("int WaitForDebugEvent(_Out_ uint8_t *, uint32)");
160
- const buf = Buffer.alloc(176);
161
- if (fn(buf, timeoutMs) === 0) return null;
162
- const info = {
163
- debugEventCode: buf.readUInt32LE(0),
164
- processId: buf.readUInt32LE(4),
165
- threadId: buf.readUInt32LE(8)
166
- };
167
- if (info.debugEventCode === DEBUG_EVENT_CODE.EXCEPTION_DEBUG_EVENT) {
168
- info.exceptionCode = buf.readUInt32LE(16);
169
- info.exceptionAddress = buf.readBigUInt64LE(32);
170
- info.firstChance = buf.readUInt32LE(20) === 0;
171
- }
172
- return info;
173
- }
174
- /** Continue after handling a debug event */
175
- function ContinueDebugEvent(dwProcessId, dwThreadId, dwContinueStatus) {
176
- if (getKernel32().func("int ContinueDebugEvent(uint32, uint32, uint32)")(dwProcessId, dwThreadId, dwContinueStatus) === 0) throw new Error(`ContinueDebugEvent failed. Error: 0x${GetLastError().toString(16)}`);
177
- }
178
- /** Flush instruction cache after writing code */
179
- function FlushInstructionCache(hProcess, lpBaseAddress, dwSize) {
180
- getKernel32().func("int FlushInstructionCache(void *, void *, size_t)")(hProcess, lpBaseAddress, BigInt(dwSize));
181
- }
182
- /**
183
- * Enumerate all thread IDs of a process using CreateToolhelp32Snapshot.
184
- *
185
- * THREADENTRY32 layout (28 bytes):
186
- * +0x00: dwSize (uint32)
187
- * +0x04: cntUsage (uint32)
188
- * +0x08: th32ThreadID (uint32)
189
- * +0x0C: th32OwnerProcessID (uint32)
190
- * +0x10: tpBasePri (int32)
191
- * +0x14: tpDeltaPri (int32)
192
- * +0x18: dwFlags (uint32)
193
- */
194
- function EnumerateProcessThreads(pid) {
195
- const fnSnapshot = getKernel32().func("void * CreateToolhelp32Snapshot(uint32, uint32)");
196
- const fnFirst = getKernel32().func("int Thread32First(void *, _Inout_ uint8_t[28])");
197
- const fnNext = getKernel32().func("int Thread32Next(void *, _Inout_ uint8_t[28])");
198
- const snapshot = fnSnapshot(TH32CS.SNAPTHREAD, 0);
199
- if (snapshot === 0n || snapshot === BigInt("0xFFFFFFFFFFFFFFFF")) throw new Error(`CreateToolhelp32Snapshot failed. Error: 0x${GetLastError().toString(16)}`);
200
- const threads = [];
201
- const entry = Buffer.alloc(28);
202
- entry.writeUInt32LE(28, 0);
203
- try {
204
- if (fnFirst(snapshot, entry) !== 0) do {
205
- if (entry.readUInt32LE(12) === pid) threads.push(entry.readUInt32LE(8));
206
- entry.writeUInt32LE(28, 0);
207
- } while (fnNext(snapshot, entry) !== 0);
208
- CloseHandle(snapshot);
209
- } catch (e) {
210
- console.error("[EnumerateProcessThreads] cleanup error:", e);
211
- }
212
- return threads;
213
- }
214
- /** Open a thread with debug-appropriate access rights */
215
- function openThreadForDebug(threadId) {
216
- const handle = OpenThread(THREAD_ACCESS.SUSPEND_RESUME | THREAD_ACCESS.GET_CONTEXT | THREAD_ACCESS.SET_CONTEXT | THREAD_ACCESS.QUERY_INFORMATION, false, threadId);
217
- if (handle === 0n) throw new Error(`Failed to open thread ${threadId}. Error: 0x${GetLastError().toString(16)}`);
218
- return handle;
219
- }
220
- /**
221
- * Encode DR7 breakpoint configuration.
222
- *
223
- * DR7 layout (x64):
224
- * Bits 0-7: Local/Global enable for DR0-DR3 (L0, G0, L1, G1, ...)
225
- * Bits 16-17: DR0 condition (00=exec, 01=write, 11=readwrite)
226
- * Bits 18-19: DR0 size (00=1byte, 01=2byte, 11=4byte, 10=8byte)
227
- * Bits 20-21: DR1 condition
228
- * Bits 22-23: DR1 size
229
- * Bits 24-25: DR2 condition
230
- * Bits 26-27: DR2 size
231
- * Bits 28-29: DR3 condition
232
- * Bits 30-31: DR3 size
233
- */
234
- function encodeDR7(entries) {
235
- let dr7 = 0n;
236
- for (const entry of entries) {
237
- if (!entry.enabled) continue;
238
- const { drIndex, access, size } = entry;
239
- dr7 |= 1n << BigInt(drIndex * 2);
240
- let condition = 0;
241
- switch (access) {
242
- case "execute":
243
- condition = 0;
244
- break;
245
- case "write":
246
- condition = 1;
247
- break;
248
- case "readwrite":
249
- case "read":
250
- condition = 3;
251
- break;
252
- }
253
- dr7 |= BigInt(condition) << BigInt(16 + drIndex * 4);
254
- let sizeCode = 0;
255
- switch (size) {
256
- case 1:
257
- sizeCode = 0;
258
- break;
259
- case 2:
260
- sizeCode = 1;
261
- break;
262
- case 4:
263
- sizeCode = 3;
264
- break;
265
- case 8:
266
- sizeCode = 2;
267
- break;
268
- }
269
- dr7 |= BigInt(sizeCode) << BigInt(18 + drIndex * 4);
270
- }
271
- return dr7;
272
- }
273
- //#endregion
274
- export { openThreadForDebug as _, DebugActiveProcessStop as a, EnumerateProcessThreads as c, ResumeThread as d, SetThreadContext as f, encodeDR7 as g, WaitForDebugEvent as h, DebugActiveProcess as i, FlushInstructionCache as l, TH32CS as m, ContinueDebugEvent as n, DebugSetProcessKillOnExit as o, SuspendThread as p, DBG as r, EXCEPTION_CODE as s, CONTEXT_FLAGS as t, GetThreadContext as u, parseContext as v, writeContext as y };