rea-agents 5.0.0 → 6.1.0

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 (507) hide show
  1. package/README.md +168 -655
  2. package/bridge/android/ReaJadxBridge.java +14 -5
  3. package/bridge/ghidra/ReaGhidraBridge.java +173 -47
  4. package/bridge/hopper_bridge.py +310 -128
  5. package/bridge/mitmproxy/capture.py +208 -0
  6. package/bridge/native/rea_lldb_tracer.py +839 -0
  7. package/bridge/process/ProcessRunTokenReader.swift +297 -0
  8. package/bridge/process/ProcessRunTokenReaderMain.swift +35 -0
  9. package/bridge/pwndbg/core_context.py +101 -0
  10. package/bridge/pwndbg/launch.py +39 -0
  11. package/bridge/pwndbg/launch_impl.py +34 -0
  12. package/bridge/pwntools/decoder_runtime.py +59 -0
  13. package/bridge/pwntools/layout.py +39 -0
  14. package/bridge/pwntools/layout_impl.py +309 -0
  15. package/bridge/pwntools/recorded_crash.py +39 -0
  16. package/bridge/pwntools/recorded_crash_impl.py +147 -0
  17. package/dist/android/JadxConfiguration.js +196 -33
  18. package/dist/android/JadxMcpTransport.js +4 -0
  19. package/dist/android/JadxProtocol.js +6 -0
  20. package/dist/android/JadxProvider.js +20 -2
  21. package/dist/android/JadxSession.js +23 -4
  22. package/dist/application/AnalysisContextQueries.js +8 -35
  23. package/dist/application/AnalysisDocument.js +32 -0
  24. package/dist/application/AppBundleExecutable.js +67 -21
  25. package/dist/application/CallPathTracing.js +19 -3
  26. package/dist/application/CapabilityInventory.js +27 -3
  27. package/dist/application/ClientConfigurationDocument.js +871 -6
  28. package/dist/application/ClientRegistrationIdentity.js +26 -5
  29. package/dist/application/ClientRegistrationStatus.js +29 -14
  30. package/dist/application/DirectAnalysis.js +97 -33
  31. package/dist/application/Doctor.js +4 -2
  32. package/dist/application/DoctorScope.js +25 -13
  33. package/dist/application/EnhancedLiteralTracing.js +22 -25
  34. package/dist/application/EnhancedTools.js +13 -11
  35. package/dist/application/EvidenceBundleFiles.js +24 -12
  36. package/dist/application/FunctionAnalysisEvidence.js +2 -3
  37. package/dist/application/InventoryProjectionEvidence.js +4 -3
  38. package/dist/application/InvestigationProviders.js +3 -2
  39. package/dist/application/JsonFiles.js +50 -28
  40. package/dist/application/ProcedureAddressResolution.js +11 -0
  41. package/dist/application/ReconstructionCoverageService.js +7 -4
  42. package/dist/application/ReconstructionObligationCandidates.js +5 -1
  43. package/dist/application/ReconstructionObligationLedgerService.js +4 -3
  44. package/dist/application/Setup.js +13 -1
  45. package/dist/application/SetupClientConfiguration.js +10 -15
  46. package/dist/application/SetupHost.js +5 -2
  47. package/dist/application/SetupPlan.js +5 -3
  48. package/dist/application/SupportedClients.js +34 -1
  49. package/dist/application/Uninstall.js +4 -3
  50. package/dist/application/Update.js +18 -3
  51. package/dist/application/UpdateRuntime.js +46 -25
  52. package/dist/application/WebModuleTraceService.js +4 -2
  53. package/dist/application/WebNetworkCapturePort.js +1 -0
  54. package/dist/application/WebNetworkCaptureService.js +134 -0
  55. package/dist/application/WebRuntimeService.js +5 -3
  56. package/dist/application/WebScriptExportService.js +2 -2
  57. package/dist/application/WebSourceLocationService.js +4 -2
  58. package/dist/application/WindowsCapabilities.js +1 -1
  59. package/dist/application/WorkflowEvidence.js +82 -0
  60. package/dist/application/binary/AnalysisProviderEvaluation.js +21 -5
  61. package/dist/application/binary/AnalysisProviderRegistry.js +2 -0
  62. package/dist/application/binary/AnalysisSnapshotCache.js +52 -12
  63. package/dist/application/binary/BinarySession.js +131 -76
  64. package/dist/application/binary/BinarySessionOpen.js +19 -6
  65. package/dist/application/binary/BinarySessionRecords.js +45 -3
  66. package/dist/application/binary/BinarySessionStatus.js +17 -1
  67. package/dist/application/binary/CompositeProvider.js +13 -0
  68. package/dist/application/binary/LazyAnalysisProvider.js +3 -0
  69. package/dist/application/binaryDiagnostics/BinaryLayoutPort.js +1 -0
  70. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +59 -0
  71. package/dist/application/binaryDiagnostics/RecordedCrashPort.js +1 -0
  72. package/dist/application/binaryDiagnostics/RecordedCrashService.js +62 -0
  73. package/dist/application/evm/EvmInterfacePort.js +1 -0
  74. package/dist/application/evm/EvmInterfaceService.js +64 -0
  75. package/dist/application/investigation/EvidenceLedger.js +21 -7
  76. package/dist/application/investigation/InvestigationRecords.js +8 -0
  77. package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
  78. package/dist/application/javascript/JavaScriptApplicationEvidence.js +25 -5
  79. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
  80. package/dist/application/javascript/JavaScriptApplicationService.js +34 -14
  81. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
  82. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +47 -27
  83. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +39 -7
  84. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +26 -2
  85. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +80 -27
  86. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +33 -12
  87. package/dist/application/javascript/JavaScriptModuleRelationships.js +37 -8
  88. package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
  89. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +3 -1
  90. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
  91. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +7 -7
  92. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +149 -72
  93. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +14 -15
  94. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +41 -1
  95. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +7 -7
  96. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +5 -9
  97. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +3 -3
  98. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +118 -12
  99. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +3 -3
  100. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +27 -5
  101. package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
  102. package/dist/application/managed/ManagedMemberComparisonService.js +7 -4
  103. package/dist/application/managed/ManagedNativeVerificationService.js +4 -3
  104. package/dist/application/managed/ManagedReconstructionService.js +4 -3
  105. package/dist/application/{ProcessCli.js → process/ProcessCli.js} +23 -15
  106. package/dist/application/{ProcessEvidence.js → process/ProcessEvidence.js} +8 -7
  107. package/dist/application/workflowInputError.js +18 -0
  108. package/dist/artifacts/ArtifactProvider.js +42 -5
  109. package/dist/artifacts/ArtifactProviderMetadata.js +2 -1
  110. package/dist/artifacts/MachOSliceArtifactReader.js +98 -14
  111. package/dist/artifacts/NativeDmgArtifactReader.js +13 -6
  112. package/dist/artifacts/ZipArtifactReader.js +3 -0
  113. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +22 -3
  114. package/dist/artifacts/apple/DylibResolutionReader.js +259 -0
  115. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
  116. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
  117. package/dist/artifacts/apple/KeyedArchiveReader.js +36 -22
  118. package/dist/artifacts/apple/MachoLoadCommandReader.js +355 -0
  119. package/dist/artifacts/apple/NibArchive.js +81 -14
  120. package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
  121. package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
  122. package/dist/{application → artifacts/extraction}/ArtifactExtraction.js +10 -10
  123. package/dist/{application → artifacts/inventory}/ArtifactGraphConstruction.js +16 -11
  124. package/dist/{application → artifacts/inventory}/ArtifactInventory.js +4 -4
  125. package/dist/{application/ArtifactInventory → artifacts/inventory}/classify.js +2 -2
  126. package/dist/{application/ArtifactInventory → artifacts/inventory}/reader.js +5 -5
  127. package/dist/{application/ArtifactInventory → artifacts/inventory}/scanCanonical.js +14 -17
  128. package/dist/{application/ArtifactInventory → artifacts/inventory}/scanReader.js +5 -5
  129. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
  130. package/dist/artifacts/readStableArtifact.js +20 -4
  131. package/dist/browser/CdpCaptureCompleteness.js +2 -0
  132. package/dist/browser/CdpCaptureEventHandlers.js +165 -12
  133. package/dist/browser/CdpCaptureEventTypes.js +5 -1
  134. package/dist/browser/CdpCaptureEvents.js +34 -0
  135. package/dist/browser/CdpConnection.js +30 -11
  136. package/dist/browser/CdpOptionalCommand.js +2 -3
  137. package/dist/browser/CdpPageCapture.js +23 -1
  138. package/dist/browser/PlaywrightElectronActiveActions.js +32 -23
  139. package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
  140. package/dist/browser/PlaywrightElectronActiveProvider.js +130 -122
  141. package/dist/browser/WebSourceMapFetcher.js +426 -72
  142. package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
  143. package/dist/browser/history/CaptureFailures.js +137 -0
  144. package/dist/browser/history/CaptureFormatError.js +10 -0
  145. package/dist/browser/history/CaptureRedaction.js +65 -0
  146. package/dist/browser/history/CaptureRelease.js +17 -0
  147. package/dist/browser/history/HarCapture.js +165 -0
  148. package/dist/browser/history/HarCaptureAdapter.js +20 -0
  149. package/dist/browser/history/HarCaptureProcess.js +57 -0
  150. package/dist/browser/history/HarJson.js +92 -0
  151. package/dist/browser/history/HarSchema.js +72 -0
  152. package/dist/browser/history/HistoricalCaptureDecoder.js +188 -0
  153. package/dist/browser/history/HistoricalCaptureFormatAdapter.js +1 -0
  154. package/dist/browser/history/MitmproxyCaptureAdapter.js +42 -0
  155. package/dist/cli/analysisSelector.js +23 -0
  156. package/dist/cli/applicationCommands.js +2 -3
  157. package/dist/cli/artifactCommands.js +26 -1
  158. package/dist/cli/binaryDiagnosticsCommands.js +39 -0
  159. package/dist/cli/coreAnalysisCommands.js +2 -2
  160. package/dist/cli/coreBinaryCommands.js +78 -20
  161. package/dist/cli/electronCommands.js +21 -13
  162. package/dist/cli/evmCommands.js +24 -0
  163. package/dist/cli/firmwareCommands.js +6 -3
  164. package/dist/cli/javascriptApplicationAnalysis.js +20 -3
  165. package/dist/cli/jsonOutput.js +38 -0
  166. package/dist/cli/nativeCallCommands.js +34 -0
  167. package/dist/cli/processCommands.js +1 -1
  168. package/dist/cli/streamedJsonOutput.js +56 -0
  169. package/dist/cli/utilityCommands.js +2 -0
  170. package/dist/cli/webNetworkCaptureCommands.js +40 -0
  171. package/dist/cli/webRuntimeCommands.js +8 -8
  172. package/dist/cli.js +11 -4
  173. package/dist/cliBrowserScenarioCommands.js +2 -2
  174. package/dist/cliCommandNames.js +6 -1
  175. package/dist/cliJsonInput.js +35 -1
  176. package/dist/cliOutput.js +21 -6
  177. package/dist/composition/binaryDiagnostics.js +8 -0
  178. package/dist/composition/evm.js +4 -0
  179. package/dist/composition/webNetworkCaptures.js +6 -0
  180. package/dist/config/environment.js +4 -0
  181. package/dist/config/ghidraStartupTimeout.js +17 -0
  182. package/dist/config/mcpResponseBudget.js +22 -0
  183. package/dist/config/parseConfig.js +2 -1
  184. package/dist/contracts/artifactToolContracts.js +6 -0
  185. package/dist/contracts/browserCaptureToolInputSchema.js +43 -0
  186. package/dist/contracts/browserToolContracts.js +4 -3
  187. package/dist/contracts/enhancedInputs.js +5 -3
  188. package/dist/contracts/enhancedToolContracts.js +3 -3
  189. package/dist/contracts/errorSchemas.js +8 -1
  190. package/dist/contracts/evm/evmToolContracts.js +20 -0
  191. package/dist/contracts/hopperMemoryContracts.js +2 -5
  192. package/dist/contracts/investigationExamples.js +2 -2
  193. package/dist/contracts/javascript/electronToolContracts.js +1 -1
  194. package/dist/contracts/managed/managedToolContracts.js +8 -6
  195. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +42 -0
  196. package/dist/contracts/native/nativeToolContracts.js +21 -3
  197. package/dist/contracts/officialToolContracts.js +26 -24
  198. package/dist/contracts/process/processCaptureExample.js +2 -0
  199. package/dist/contracts/promptContracts.js +3 -3
  200. package/dist/contracts/sessionLifecycleInputs.js +18 -5
  201. package/dist/contracts/sessionStatusContract.js +8 -2
  202. package/dist/contracts/sessionToolContracts.js +8 -3
  203. package/dist/contracts/sessionToolSchemas.js +8 -4
  204. package/dist/contracts/toolContractExamples.js +1 -2
  205. package/dist/contracts/toolContractHelpers.js +4 -1
  206. package/dist/contracts/toolContracts.js +6 -0
  207. package/dist/contracts/toolEffects.js +30 -1
  208. package/dist/contracts/toolOutputSchemaGroups.js +33 -28
  209. package/dist/contracts/toolOutputSchemaPrimitives.js +19 -1
  210. package/dist/contracts/toolSchemaMetadata.js +69 -10
  211. package/dist/contracts/webNetworkCaptureToolContracts.js +24 -0
  212. package/dist/domain/analysisErrorBase.js +22 -2
  213. package/dist/domain/analysisErrorCore.js +61 -5
  214. package/dist/domain/analysisErrorPresentation.js +95 -12
  215. package/dist/domain/analysisErrorProjection.js +148 -19
  216. package/dist/domain/analysisSnapshot.js +166 -2
  217. package/dist/domain/android/androidAnalysis.js +2 -4
  218. package/dist/domain/android/androidApplication.js +17 -9
  219. package/dist/domain/apple/appleApplication.js +41 -14
  220. package/dist/domain/apple/dyldEnvironment.js +73 -0
  221. package/dist/domain/apple/dyldPaths.js +81 -0
  222. package/dist/domain/apple/dylibResolution.js +478 -0
  223. package/dist/domain/apple/dylibResolutionFindings.js +77 -0
  224. package/dist/domain/apple/interfaceBuilderGraph.js +25 -13
  225. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
  226. package/dist/domain/apple/keyedArchive.js +9 -1
  227. package/dist/domain/apple/machoContainer.js +54 -0
  228. package/dist/domain/apple/plistNumbers.js +76 -0
  229. package/dist/domain/artifactIdentity.js +29 -0
  230. package/dist/domain/artifactInventoryEvidence.js +19 -24
  231. package/dist/domain/artifactPathSyntax.js +1 -1
  232. package/dist/domain/bridgeCandidateProjection.js +71 -0
  233. package/dist/domain/browserCompleteness.js +1 -0
  234. package/dist/domain/browserObservation.js +1 -1
  235. package/dist/domain/browserObservationError.js +24 -5
  236. package/dist/domain/browserObservationSchemas.js +13 -0
  237. package/dist/domain/browserScenarioValues.js +5 -2
  238. package/dist/domain/bundleComparison.js +3 -2
  239. package/dist/domain/callPathSchemas.js +1 -1
  240. package/dist/domain/canonicalDigest.js +13 -1
  241. package/dist/domain/canonicalJsonDigestSteps.js +133 -0
  242. package/dist/domain/canonicalOrdering.js +9 -5
  243. package/dist/domain/changedBehavior.js +9 -9
  244. package/dist/domain/comparisonSourceEvidence.js +40 -0
  245. package/dist/domain/comparisonStatus.js +2 -30
  246. package/dist/domain/configurationErrors.js +1 -1
  247. package/dist/domain/conformanceTrustGate.js +0 -16
  248. package/dist/domain/evidence.js +78 -11
  249. package/dist/domain/evidenceBundle.js +42 -1
  250. package/dist/domain/evidenceErrors.js +12 -1
  251. package/dist/domain/evm/evmInterface.js +63 -0
  252. package/dist/domain/explicitSensitiveFailure.js +108 -0
  253. package/dist/domain/explicitSensitiveValues.js +10 -0
  254. package/dist/domain/firmware/firmwareAnalysis.js +10 -4
  255. package/dist/domain/hopperErrors.js +23 -2
  256. package/dist/domain/hopperValues.js +51 -8
  257. package/dist/domain/immutableJson.js +114 -0
  258. package/dist/domain/inputIssueProjection.js +3 -0
  259. package/dist/domain/javascript/electronActiveObservation.js +37 -6
  260. package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
  261. package/dist/domain/javascript/htmlArtifactReferences.js +40 -0
  262. package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
  263. package/dist/domain/javascript/javascriptApplicationGraph.js +13 -0
  264. package/dist/domain/javascript/javascriptAstValues.js +20 -0
  265. package/dist/domain/javascript/javascriptExportShapeComparison.js +21 -5
  266. package/dist/domain/javascript/javascriptExportShapeVariants.js +0 -10
  267. package/dist/domain/javascript/javascriptRecovery.js +3 -8
  268. package/dist/domain/javascript/javascriptSemanticAnalysis.js +97 -2
  269. package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
  270. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
  271. package/dist/domain/javascript/javascriptSemanticDataEffects.js +22 -5
  272. package/dist/domain/javascript/javascriptSemanticGraph.js +34 -5
  273. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
  274. package/dist/domain/javascript/javascriptSemanticPrimitives.js +25 -17
  275. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
  276. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
  277. package/dist/domain/javascript/javascriptSemanticValues.js +83 -11
  278. package/dist/domain/javascript/javascriptSourceParser.js +6 -2
  279. package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
  280. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
  281. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +14 -4
  282. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
  283. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -16
  284. package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
  285. package/dist/domain/jsonSerialization.js +109 -0
  286. package/dist/domain/jsonValue.js +91 -3
  287. package/dist/domain/localPath.js +8 -0
  288. package/dist/domain/managed/managedApplicationGraph.js +10 -10
  289. package/dist/domain/managed/managedInspectionEvidence.js +16 -0
  290. package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
  291. package/dist/domain/managed/managedNativeVerification.js +3 -9
  292. package/dist/domain/native/binaryLayout.js +357 -0
  293. package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
  294. package/dist/domain/native/nativeCallObservation.js +186 -0
  295. package/dist/domain/native/nativeCallPartialObservation.js +33 -0
  296. package/dist/domain/native/objcSwiftMetadata.js +0 -39
  297. package/dist/domain/native/recordedCrash.js +266 -0
  298. package/dist/domain/native/recordedCrashNoteCoverage.js +73 -0
  299. package/dist/domain/{processCapture.js → process/processCapture.js} +143 -2
  300. package/dist/domain/{processCaptureExample.js → process/processCaptureExample.js} +5 -0
  301. package/dist/domain/process/processCaptureParsing.js +54 -0
  302. package/dist/domain/{processCaptureValidation.js → process/processCaptureValidation.js} +18 -2
  303. package/dist/domain/{processComparison.js → process/processComparison.js} +39 -5
  304. package/dist/domain/{processObservation.js → process/processObservation.js} +1 -1
  305. package/dist/domain/{processScenario.js → process/processScenario.js} +11 -10
  306. package/dist/domain/{processTraceSpecification.js → process/processTraceSpecification.js} +1 -1
  307. package/dist/domain/propertyListKeys.js +1 -1
  308. package/dist/domain/propertyListXmlText.js +19 -0
  309. package/dist/domain/providerAdapterError.js +1 -1
  310. package/dist/domain/providerOperationHealth.js +54 -0
  311. package/dist/domain/providerSelectionError.js +4 -2
  312. package/dist/domain/reconstructionVerification.js +9 -46
  313. package/dist/domain/reconstructionVerificationSchemas.js +3 -3
  314. package/dist/domain/residualUnknown.js +3 -2
  315. package/dist/domain/staticRuntimeCorrelation.js +9 -46
  316. package/dist/domain/webBundleAnalysis.js +20 -8
  317. package/dist/domain/webBundleAnalyzerInspection.js +13 -8
  318. package/dist/domain/webBundleAnalyzerResult.js +41 -2
  319. package/dist/domain/webCaptureDiff.js +1 -0
  320. package/dist/domain/webNetworkCapture.js +118 -0
  321. package/dist/domain/webNetworkCaptureCoordinates.js +58 -0
  322. package/dist/domain/webRuntime.js +19 -5
  323. package/dist/domain/webSourceLocation.js +1 -0
  324. package/dist/dotnet/ManagedExceptionRegionValidation.js +41 -0
  325. package/dist/dotnet/ManagedMemberInspector.js +4 -2
  326. package/dist/dotnet/ManagedMemberInspectorCore.js +38 -32
  327. package/dist/dotnet/ManagedMemberInstructionDecoder.js +23 -7
  328. package/dist/dotnet/ManagedMemberRows.js +14 -3
  329. package/dist/dotnet/ManagedMetadataHeaps.js +20 -2
  330. package/dist/dotnet/ManagedMetadataInventory.js +38 -28
  331. package/dist/dotnet/ManagedMetadataInventoryRows.js +24 -10
  332. package/dist/dotnet/ManagedMethodBodyReader.js +7 -1
  333. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +15 -3
  334. package/dist/dotnet/ManagedNativeBoundaryInspector.js +3 -1
  335. package/dist/dotnet/ManagedPeReader.js +11 -0
  336. package/dist/evm/EvmBytecodeCarrier.js +21 -0
  337. package/dist/evm/EvmWorkerLimits.js +40 -0
  338. package/dist/evm/EvmoleFailures.js +126 -0
  339. package/dist/evm/EvmoleInterfaceAdapter.js +53 -0
  340. package/dist/evm/EvmoleInterfaceProvider.js +273 -0
  341. package/dist/evm/EvmoleInterfaceWorker.js +87 -0
  342. package/dist/evm/EvmoleRelease.js +16 -0
  343. package/dist/firmware/FirmwareCommand.js +1 -0
  344. package/dist/firmware/FirmwareFiles.js +1 -1
  345. package/dist/generatedPackageMetadata.js +2 -2
  346. package/dist/ghidra/GhidraAnalysisProfile.js +5 -0
  347. package/dist/ghidra/GhidraClient.js +47 -14
  348. package/dist/ghidra/GhidraDiagnostics.js +7 -7
  349. package/dist/ghidra/GhidraFunctionValues.js +10 -7
  350. package/dist/ghidra/GhidraInstallation.js +18 -21
  351. package/dist/ghidra/GhidraInventoryValues.js +14 -4
  352. package/dist/ghidra/GhidraJavaLaunch.js +62 -0
  353. package/dist/ghidra/GhidraLauncher.js +34 -16
  354. package/dist/ghidra/GhidraProvider.js +2 -2
  355. package/dist/ghidra/GhidraProviderCapabilities.js +15 -3
  356. package/dist/ghidra/GhidraProviderClient.js +23 -12
  357. package/dist/ghidra/GhidraSessionError.js +11 -7
  358. package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
  359. package/dist/ghidra/GhidraTransport.js +20 -0
  360. package/dist/hopper/BridgeLauncher.js +33 -11
  361. package/dist/hopper/HopperAnalysisProfile.js +62 -4
  362. package/dist/hopper/HopperCleanup.js +15 -3
  363. package/dist/hopper/HopperClient.js +222 -14
  364. package/dist/hopper/HopperFileOffset.js +237 -0
  365. package/dist/hopper/HopperMachOImage.js +196 -0
  366. package/dist/hopper/HopperOperationStage.js +6 -0
  367. package/dist/hopper/HopperProvider.js +63 -9
  368. package/dist/hopper/HopperProviderCapabilities.js +19 -1
  369. package/dist/hopper/HopperRegexSearch.js +137 -0
  370. package/dist/hopper/HopperRegexWorker.js +27 -0
  371. package/dist/hopper/HopperRequestQueue.js +68 -19
  372. package/dist/hopper/HopperTargetLease.js +3 -2
  373. package/dist/hopper/LinuxPrivateDisplayProbe.js +4 -2
  374. package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
  375. package/dist/inspector/V8InspectorCaptureProjection.js +8 -3
  376. package/dist/inspector/V8InspectorProvider.js +47 -11
  377. package/dist/javascript/recovery/WakaruCommand.js +3 -0
  378. package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
  379. package/dist/javascript/sourceMaps/SourceMapCommand.js +17 -0
  380. package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
  381. package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
  382. package/dist/mcpDoctor.js +62 -2
  383. package/dist/native/AppleDispatchCoverage.js +47 -6
  384. package/dist/native/AppleDispatchDecodeFacts.js +6 -0
  385. package/dist/native/AppleDispatchMetadata.js +6 -3
  386. package/dist/native/AppleMachoFixups.js +48 -24
  387. package/dist/native/AppleMachoSelection.js +32 -16
  388. package/dist/native/AppleObjcCategories.js +6 -2
  389. package/dist/native/AppleObjcDispatchFacets.js +5 -2
  390. package/dist/native/AppleObjcProperties.js +2 -1
  391. package/dist/native/AppleSwiftDispatchFacets.js +27 -21
  392. package/dist/native/AppleSwiftVtables.js +21 -15
  393. package/dist/native/CommandRunner.js +82 -84
  394. package/dist/native/LldbCallTracer.js +541 -0
  395. package/dist/native/LldbRetainedObservations.js +178 -0
  396. package/dist/native/NativeCallObservation.js +194 -0
  397. package/dist/native/NativeMacOSProvider.js +117 -20
  398. package/dist/native/NativeMacOSProviderMetadata.js +8 -3
  399. package/dist/native/SignatureTargetBinding.js +155 -0
  400. package/dist/native/parsers/lipo.js +71 -1
  401. package/dist/native/pwndbg/PwndbgCoreContext.js +180 -0
  402. package/dist/native/pwntools/PwntoolsDecoder.js +203 -0
  403. package/dist/native/pwntools/PwntoolsFailures.js +180 -0
  404. package/dist/native/pwntools/PwntoolsLayoutProvider.js +36 -0
  405. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +75 -0
  406. package/dist/native/pwntools/PwntoolsRelease.js +19 -0
  407. package/dist/native/pwntools/PwntoolsResourceLimits.js +76 -0
  408. package/dist/native/pwntools/RecordedCrashSourceBindings.js +46 -0
  409. package/dist/native/pwntools/RecordedCrashStructureBindings.js +103 -0
  410. package/dist/process/DarwinProcessRunTokenReader.js +293 -0
  411. package/dist/process/ExecFileOutput.js +20 -0
  412. package/dist/process/OwnedCommand.js +118 -0
  413. package/dist/process/ProcessOwnership.js +431 -51
  414. package/dist/process/ProcessOwnershipObservation.js +209 -27
  415. package/dist/process/ProviderProcess.js +68 -10
  416. package/dist/{application → process/capture}/ProcessCaptureCapability.js +15 -0
  417. package/dist/{application → process/capture}/ProcessCaptureError.js +18 -2
  418. package/dist/process/capture/ProcessCaptureLifecycle.js +681 -0
  419. package/dist/{application → process/capture}/ProcessHarness.js +195 -29
  420. package/dist/{application → process/capture}/ProcessSampling.js +2 -2
  421. package/dist/server/EvidenceMcpServer.js +146 -0
  422. package/dist/server/createServer.js +37 -8
  423. package/dist/server/promptCompletion.js +10 -3
  424. package/dist/server/registerAndroidTools.js +2 -4
  425. package/dist/server/registerApplicationTools/helpers.js +2 -4
  426. package/dist/server/registerArtifactComparisonTool.js +11 -7
  427. package/dist/server/registerBinaryDiagnosticsTools.js +15 -0
  428. package/dist/server/registerBrowserScenarioTool.js +2 -4
  429. package/dist/server/registerBrowserTools.js +2 -4
  430. package/dist/server/registerBundleComparisonTool.js +2 -3
  431. package/dist/server/registerCloseLifecycleTool.js +8 -18
  432. package/dist/server/registerElectronTools.js +2 -4
  433. package/dist/server/registerEnhancedTools.js +18 -59
  434. package/dist/server/registerEvidenceTools.js +3 -5
  435. package/dist/server/registerEvmTools.js +15 -0
  436. package/dist/server/registerFirmwareTools.js +2 -4
  437. package/dist/server/registerFunctionComparisonTool.js +10 -6
  438. package/dist/server/registerInvestigationTools.js +7 -7
  439. package/dist/server/registerJavaScriptRecoveryTool.js +2 -4
  440. package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -4
  441. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -4
  442. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +2 -4
  443. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +2 -4
  444. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -4
  445. package/dist/server/registerOfficialTools.js +2 -4
  446. package/dist/server/registerProcessComparisonTool.js +72 -46
  447. package/dist/server/registerRecordedCrashTools.js +15 -0
  448. package/dist/server/registerSessionRecordTools.js +5 -6
  449. package/dist/server/registerSessionStatusTool.js +17 -3
  450. package/dist/server/registerSessionTools.js +13 -5
  451. package/dist/server/registerWebModuleTool.js +2 -4
  452. package/dist/server/registerWebNetworkCaptureTool.js +26 -0
  453. package/dist/server/registerWebRuntimeTools.js +3 -7
  454. package/dist/server/registerWebScriptTool.js +2 -4
  455. package/dist/server/registerWebSourceLocationTool.js +2 -4
  456. package/dist/server/runDerivedOperation.js +15 -3
  457. package/dist/server/sessionAvailabilityPolicy.js +3 -1
  458. package/dist/server/sessionToolPolicies.js +1 -1
  459. package/dist/server/toolRegistrationOptions.js +2 -2
  460. package/dist/server/toolResult.js +63 -11
  461. package/dist/server/toolResultEncoding.js +33 -0
  462. package/install.sh +1 -1
  463. package/native/windows/build/manifest.json +2 -2
  464. package/native/windows/build/rea-windows-x64.node +0 -0
  465. package/package.json +42 -9
  466. package/scripts/electron-active-hook-boundaries.cjs +18 -20
  467. package/scripts/electron-active-hook.cjs +241 -37
  468. package/scripts/rea.mjs +11 -3
  469. package/skills/reverse-engineer-anything/SKILL.md +32 -4
  470. package/skills/reverse-engineer-anything/references/javascript-applications.md +8 -1
  471. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +29 -0
  472. package/third_party/README.md +60 -0
  473. package/third_party/evmole/LICENSE +21 -0
  474. package/third_party/evmole/README.md +22 -0
  475. package/third_party/pwndbg/LICENSE.md +21 -0
  476. package/third_party/pwndbg/README.md +23 -0
  477. package/third_party/pwntools/README.md +40 -0
  478. package/dist/application/AuthorizedArtifactInventory.js +0 -7
  479. package/dist/application/ProcessCaptureLifecycle.js +0 -299
  480. package/dist/application/StoreFileLock.js +0 -124
  481. package/dist/contracts/processCaptureExample.js +0 -2
  482. package/dist/domain/bytecodeProvider.js +0 -178
  483. package/dist/domain/customProtocolCapture.js +0 -137
  484. package/dist/domain/eventProcessTree.js +0 -225
  485. package/dist/domain/mobileApplicationInvestigation.js +0 -159
  486. package/dist/domain/packageAnalysis.js +0 -123
  487. package/dist/domain/peInspection.js +0 -197
  488. package/dist/domain/processCaptureParsing.js +0 -21
  489. package/dist/domain/protocolCapture.js +0 -217
  490. package/dist/domain/runtimeIdentification.js +0 -212
  491. package/dist/generatedMcpToolCatalog.js +0 -37
  492. package/dist/ghidra/GhidraDefaults.js +0 -2
  493. /package/dist/application/{ArtifactExtractionDestination.js → artifacts/ArtifactExtractionDestination.js} +0 -0
  494. /package/dist/{application/ArtifactInventory → artifacts/inventory}/policy.js +0 -0
  495. /package/dist/{application/ArtifactInventory → artifacts/inventory}/types.js +0 -0
  496. /package/dist/domain/{processEvidenceProvider.js → process/processEvidenceProvider.js} +0 -0
  497. /package/dist/domain/{processTraceComparison.js → process/processTraceComparison.js} +0 -0
  498. /package/dist/domain/{processTraceDimensionProjection.js → process/processTraceDimensionProjection.js} +0 -0
  499. /package/dist/domain/{processTraceEvaluation.js → process/processTraceEvaluation.js} +0 -0
  500. /package/dist/{application → process/capture}/FilesystemSnapshot.js +0 -0
  501. /package/dist/{application → process/capture}/ProcessCaptureEnvironment.js +0 -0
  502. /package/dist/{application → process/capture}/ProcessCaptureJournal.js +0 -0
  503. /package/dist/{application → process/capture}/ProcessFilesystemEffects.js +0 -0
  504. /package/dist/{application → process/capture}/ProcessNormalization.js +0 -0
  505. /package/dist/{application → process/capture}/ProcessScenarioRuntimeValidation.js +0 -0
  506. /package/dist/{application → process/capture}/ProcessTimer.js +0 -0
  507. /package/dist/{application → process/capture}/TerminalRenderer.js +0 -0
@@ -1,123 +0,0 @@
1
- import { z } from "zod";
2
- /** Supported Windows package formats. */
3
- export const packageFormatSchema = z.enum(["msix", "msi", "appx"]);
4
- /** A resource entry within a package. */
5
- export const packageResourceSchema = z.strictObject({
6
- /** Resource path within the package. */
7
- path: z.string().min(1),
8
- /** Resource type. */
9
- type: z.enum([
10
- "manifest",
11
- "icon",
12
- "configuration",
13
- "certificate",
14
- "executable",
15
- "library",
16
- "data",
17
- "other",
18
- ]),
19
- /** Size in bytes. */
20
- size: z.number().int().nonnegative(),
21
- /** SHA-256 digest. */
22
- digest: z
23
- .string()
24
- .regex(/^[a-f0-9]{64}$/u)
25
- .nullable(),
26
- });
27
- /** Digital signature information. */
28
- export const digitalSignatureSchema = z.strictObject({
29
- /** Whether the package is signed. */
30
- is_signed: z.boolean(),
31
- /** Signer subject name. */
32
- signer_subject: z.string().nullable(),
33
- /** Certificate thumbprint. */
34
- certificate_thumbprint: z.string().nullable(),
35
- /** Whether the signature is valid. */
36
- is_valid: z.boolean().default(false),
37
- /** Whether the signature is timestamped. */
38
- is_timestamped: z.boolean().default(false),
39
- /** Timestamp signer if present. */
40
- timestamp_signer: z.string().nullable(),
41
- });
42
- /** A Windows package manifest for static analysis. */
43
- export const packageManifestSchema = z.strictObject({
44
- /** Package format. */
45
- format: packageFormatSchema,
46
- /** Package identity name. */
47
- name: z.string().min(1),
48
- /** Package publisher. */
49
- publisher: z.string().nullable(),
50
- /** Package version. */
51
- version: z.string().nullable(),
52
- /** Architecture. */
53
- architecture: z.enum(["x86", "x64", "arm", "arm64", "neutral", "unknown"]),
54
- /** Package resources. */
55
- resources: z.array(packageResourceSchema).default([]),
56
- /** Digital signature. */
57
- signature: digitalSignatureSchema,
58
- /** Whether the package is a framework. */
59
- is_framework: z.boolean().default(false),
60
- /** Package dependencies. */
61
- dependencies: z.array(z.string()).default([]),
62
- /** Capabilities declared in the manifest. */
63
- capabilities: z.array(z.string()).default([]),
64
- });
65
- /** Detect package format from file extension. */
66
- export function detectPackageFormat(path) {
67
- const lower = path.toLowerCase();
68
- if (lower.endsWith(".msix"))
69
- return "msix";
70
- if (lower.endsWith(".msi"))
71
- return "msi";
72
- if (lower.endsWith(".appx"))
73
- return "appx";
74
- return null;
75
- }
76
- /** Check if a resource path looks like a manifest. */
77
- export function isManifestResource(path) {
78
- const lower = path.toLowerCase();
79
- return (lower.includes("appxmanifest.xml") ||
80
- lower.includes("appxmanifest") ||
81
- lower.includes("manifest.xml") ||
82
- lower.endsWith("_manifest.xml"));
83
- }
84
- /** Check if a resource path looks like a configuration file. */
85
- export function isConfigurationResource(path) {
86
- const lower = path.toLowerCase();
87
- return (lower.endsWith(".xml") ||
88
- lower.endsWith(".json") ||
89
- lower.endsWith(".ini") ||
90
- lower.endsWith(".config"));
91
- }
92
- /** Classify a resource by its path. */
93
- export function classifyResource(path) {
94
- if (isManifestResource(path))
95
- return "manifest";
96
- const lower = path.toLowerCase();
97
- if (lower.endsWith(".ico") ||
98
- lower.endsWith(".png") ||
99
- lower.endsWith(".jpg") ||
100
- lower.endsWith(".jpeg"))
101
- return "icon";
102
- if (isConfigurationResource(path))
103
- return "configuration";
104
- if (lower.endsWith(".cer") ||
105
- lower.endsWith(".pfx") ||
106
- lower.endsWith(".p12"))
107
- return "certificate";
108
- if (lower.endsWith(".exe") || lower.endsWith(".dll"))
109
- return lower.endsWith(".exe") ? "executable" : "library";
110
- return "other";
111
- }
112
- /** Get all resources of a specific type. */
113
- export function resourcesByType(manifest, type) {
114
- return manifest.resources.filter((r) => r.type === type);
115
- }
116
- /** Get the total size of all resources. */
117
- export function totalResourceSize(manifest) {
118
- return manifest.resources.reduce((sum, r) => sum + r.size, 0);
119
- }
120
- /** Check if a package has a valid signature. */
121
- export function hasValidSignature(manifest) {
122
- return manifest.signature.is_signed && manifest.signature.is_valid;
123
- }
@@ -1,197 +0,0 @@
1
- import { z } from "zod";
2
- /** PE/COFF section characteristics flags. */
3
- export const sectionCharacteristicsSchema = z.object({
4
- /** Section contains executable code. */
5
- has_code: z.boolean().default(false),
6
- /** Section contains initialized data. */
7
- has_initialized_data: z.boolean().default(false),
8
- /** Section contains uninitialized data. */
9
- has_uninitialized_data: z.boolean().default(false),
10
- /** Section can be read. */
11
- readable: z.boolean().default(false),
12
- /** Section can be written. */
13
- writable: z.boolean().default(false),
14
- /** Section can be executed. */
15
- executable: z.boolean().default(false),
16
- });
17
- /** PE/COFF section header. */
18
- export const peSectionSchema = z.strictObject({
19
- name: z.string().min(1),
20
- virtual_size: z.number().int().nonnegative(),
21
- virtual_address: z.number().int().nonnegative(),
22
- raw_size: z.number().int().nonnegative(),
23
- raw_offset: z.number().int().nonnegative(),
24
- characteristics: sectionCharacteristicsSchema,
25
- });
26
- /** PE import entry. */
27
- export const peImportSchema = z.strictObject({
28
- dll: z.string().min(1),
29
- function_name: z.string().min(1),
30
- ordinal: z.number().int().nullable(),
31
- is_delay_import: z.boolean().default(false),
32
- });
33
- /** PE export entry. */
34
- export const peExportSchema = z.strictObject({
35
- name: z.string().min(1),
36
- ordinal: z.number().int().nonnegative(),
37
- rva: z.number().int().nonnegative(),
38
- forwarder: z.string().nullable(),
39
- });
40
- /** PE/COFF resource entry. */
41
- export const peResourceSchema = z.strictObject({
42
- type: z.string().min(1),
43
- name: z.string().nullable(),
44
- language: z.number().int().nullable(),
45
- rva: z.number().int().nonnegative(),
46
- size: z.number().int().nonnegative(),
47
- });
48
- /** PE debug directory entry. */
49
- export const peDebugEntrySchema = z.strictObject({
50
- type: z.string().min(1),
51
- rva: z.number().int().nonnegative(),
52
- size: z.number().int().nonnegative(),
53
- /** PDB GUID if this is a CodeView entry. */
54
- pdb_guid: z.string().nullable(),
55
- /** PDB age if this is a CodeView entry. */
56
- pdb_age: z.number().int().nullable(),
57
- /** PDB path if this is a CodeView entry. */
58
- pdb_path: z.string().nullable(),
59
- });
60
- /** TLS callback entry. */
61
- export const peTlsCallbackSchema = z.strictObject({
62
- callback_rva: z.number().int().nonnegative(),
63
- index: z.number().int().nonnegative(),
64
- });
65
- /** Architecture/machine type. */
66
- export const peMachineTypeSchema = z.enum([
67
- "x86",
68
- "x64",
69
- "arm",
70
- "arm64",
71
- "ia64",
72
- "unknown",
73
- ]);
74
- /** PE/COFF manifest for static inspection. */
75
- export const peManifestSchema = z.strictObject({
76
- /** DOS header magic. */
77
- dos_magic: z.literal(0x5a4d),
78
- /** PE signature. */
79
- pe_signature: z.literal(0x00004550),
80
- /** Machine type. */
81
- machine: peMachineTypeSchema,
82
- /** Number of sections. */
83
- number_of_sections: z.number().int().positive(),
84
- /** Timestamp from the COFF header. */
85
- timestamp: z.number().int().nullable(),
86
- /** PE characteristics flags. */
87
- is_dll: z.boolean().default(false),
88
- is_executable: z.boolean().default(false),
89
- is_console: z.boolean().default(true),
90
- /** Entry point RVA. */
91
- entry_point: z.number().int().nonnegative(),
92
- /** Image base. */
93
- image_base: z.number().int().nonnegative(),
94
- /** Section alignment. */
95
- section_alignment: z.number().int().positive(),
96
- /** Subsystem version. */
97
- subsystem_version: z.string().nullable(),
98
- /** Sections. */
99
- sections: z.array(peSectionSchema),
100
- /** Imports. */
101
- imports: z.array(peImportSchema).default([]),
102
- /** Exports. */
103
- exports: z.array(peExportSchema).default([]),
104
- /** Resources. */
105
- resources: z.array(peResourceSchema).default([]),
106
- /** Debug directory entries. */
107
- debug_entries: z.array(peDebugEntrySchema).default([]),
108
- /** TLS callbacks. */
109
- tls_callbacks: z.array(peTlsCallbackSchema).default([]),
110
- /** Relocations count (not all entries). */
111
- relocations_count: z.number().int().nonnegative().default(0),
112
- /** Image file characteristics. */
113
- image_characteristics: z.array(z.string()).default([]),
114
- });
115
- /** Parse machine type from COFF machine field. */
116
- export function parseMachineType(machine) {
117
- switch (machine) {
118
- case 0x014c:
119
- return "x86";
120
- case 0x8664:
121
- return "x64";
122
- case 0x01c0:
123
- case 0x01c2:
124
- case 0x01c4:
125
- return "arm";
126
- case 0xaa64:
127
- return "arm64";
128
- case 0x0200:
129
- return "ia64";
130
- default:
131
- return "unknown";
132
- }
133
- }
134
- /** Parse section characteristics flags. */
135
- export function parseSectionCharacteristics(characteristics) {
136
- const IMAGE_SCN_CNT_CODE = 0x00000020;
137
- const IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040;
138
- const IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080;
139
- const IMAGE_SCN_MEM_READ = 0x40000000;
140
- const IMAGE_SCN_MEM_WRITE = 0x80000000;
141
- const IMAGE_SCN_MEM_EXECUTE = 0x20000000;
142
- return {
143
- has_code: (characteristics & IMAGE_SCN_CNT_CODE) !== 0,
144
- has_initialized_data: (characteristics & IMAGE_SCN_CNT_INITIALIZED_DATA) !== 0,
145
- has_uninitialized_data: (characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA) !== 0,
146
- readable: (characteristics & IMAGE_SCN_MEM_READ) !== 0,
147
- writable: (characteristics & IMAGE_SCN_MEM_WRITE) !== 0,
148
- executable: (characteristics & IMAGE_SCN_MEM_EXECUTE) !== 0,
149
- };
150
- }
151
- /** Parse image characteristics flags. */
152
- export function parseImageCharacteristics(characteristics) {
153
- const IMAGE_DLL = 0x2000;
154
- const IMAGE_EXECUTABLE = 0x0002;
155
- const IMAGE_CONSOLE = 0x0003;
156
- const flags = [];
157
- if (characteristics & IMAGE_DLL)
158
- flags.push("DLL");
159
- if (characteristics & IMAGE_EXECUTABLE)
160
- flags.push("Executable");
161
- if ((characteristics & 0x0000000f) === IMAGE_CONSOLE)
162
- flags.push("Console");
163
- return flags;
164
- }
165
- /** Parse a PE debug directory type. */
166
- export function parseDebugType(type) {
167
- switch (type) {
168
- case 0:
169
- return "UNKNOWN";
170
- case 1:
171
- return "COFF";
172
- case 2:
173
- return "CODEVIEW";
174
- case 3:
175
- return "POGO";
176
- case 4:
177
- return "MISC";
178
- default:
179
- return "UNKNOWN";
180
- }
181
- }
182
- /** Check if a PE manifest has PDB debug info. */
183
- export function hasPdbInfo(manifest) {
184
- return manifest.debug_entries.some((e) => e.pdb_guid !== null && e.pdb_path !== null);
185
- }
186
- /** Get all imported DLLs from a PE manifest. */
187
- export function getImportedDlls(manifest) {
188
- return [...new Set(manifest.imports.map((i) => i.dll))];
189
- }
190
- /** Get all exported function names from a PE manifest. */
191
- export function getExportedFunctions(manifest) {
192
- return manifest.exports.map((e) => e.name);
193
- }
194
- /** Count executable sections. */
195
- export function countExecutableSections(manifest) {
196
- return manifest.sections.filter((s) => s.characteristics.executable).length;
197
- }
@@ -1,21 +0,0 @@
1
- import { processCaptureSchema, } from "./processCapture.js";
2
- const verifiedCaptures = new WeakSet();
3
- const isVerifiedCapture = (capture) => verifiedCaptures.has(capture);
4
- const attachProof = (capture) => {
5
- verifiedCaptures.add(capture);
6
- if (isVerifiedCapture(capture))
7
- return capture;
8
- throw new TypeError("Process Capture proof ownership failed");
9
- };
10
- /** Parse unknown input and reject invalid commitments or semantics. */
11
- export const parseProcessCapture = (input) => {
12
- const parsed = processCaptureSchema.safeParse(input);
13
- if (parsed.success)
14
- return attachProof(parsed.data);
15
- const issues = parsed.error.issues.flatMap((issue) => issue.code === "custom"
16
- ? [{ path: issue.path.join("."), message: issue.message }]
17
- : []);
18
- if (issues.length > 0)
19
- throw new TypeError(`Invalid process capture: ${issues.map(({ path, message }) => `${path}: ${message}`).join("; ")}`);
20
- throw parsed.error;
21
- };
@@ -1,217 +0,0 @@
1
- import { z } from "zod";
2
- import { jsonValueSchema } from "./jsonValue.js";
3
- /** Supported protocol families for structured protocol capture. */
4
- export const protocolFamilySchema = z.enum([
5
- "grpc",
6
- "protobuf",
7
- "json-rpc",
8
- "messagepack",
9
- ]);
10
- /** A decoded field from a protocol message. */
11
- export const decodedFieldSchema = z.strictObject({
12
- /** Field name or path within the message structure. */
13
- path: z.string().min(1),
14
- /** Wire type or encoding hint. */
15
- wire_type: z.string().nullable(),
16
- /** Decoded field value. */
17
- value: jsonValueSchema.nullable(),
18
- /** Whether this field value was inferred rather than decoded. */
19
- inferred: z.boolean().default(false),
20
- });
21
- /** Schema inference hypothesis for a repeated message pattern. */
22
- export const schemaHypothesisSchema = z.strictObject({
23
- /** Hypothesized field name. */
24
- field_name: z.string().min(1),
25
- /** Inferred type. */
26
- inferred_type: z.string().min(1),
27
- /** Confidence: 0-1 */
28
- confidence: z.number().min(0).max(1),
29
- /** Supporting evidence count. */
30
- evidence_count: z.number().int().nonnegative(),
31
- });
32
- /** Result of decoding a single protocol message. */
33
- export const protocolMessageSchema = z.strictObject({
34
- /** Monotonic sequence number. */
35
- sequence: z.number().int().nonnegative(),
36
- /** Timestamp in milliseconds. */
37
- at_ms: z.number().int().nonnegative(),
38
- /** Protocol family. */
39
- family: protocolFamilySchema,
40
- /** Direction of the message. */
41
- direction: z.enum(["request", "response"]),
42
- /** Transport endpoint or path (e.g. gRPC method path). */
43
- endpoint: z.string().nullable(),
44
- /** Content type of the raw payload. */
45
- content_type: z.string().nullable(),
46
- /** Raw payload bytes as base64. */
47
- raw_payload: z.string().nullable(),
48
- /** Decoded fields from the payload. */
49
- decoded_fields: z.array(decodedFieldSchema).default([]),
50
- /** Inferred schema hypotheses. */
51
- schema_hypotheses: z.array(schemaHypothesisSchema).default([]),
52
- /** Whether decoding was truncated. */
53
- truncated: z.boolean().default(false),
54
- /** Whether the capture producer marked credentials as redacted. */
55
- credentials_redacted: z.boolean().default(false),
56
- });
57
- /** A captured protocol session with messages and inferred schemas. */
58
- export const protocolCaptureSchema = z.strictObject({
59
- /** Protocol family for this capture. */
60
- family: protocolFamilySchema,
61
- /** Captured messages in order. */
62
- messages: z.array(protocolMessageSchema).min(0),
63
- /** Aggregated schema hypotheses across all messages. */
64
- inferred_schema: z.array(schemaHypothesisSchema).default([]),
65
- /** Whether any message was truncated. */
66
- has_truncated: z.boolean().default(false),
67
- /** Whether the capture producer marked credential content as redacted. */
68
- credentials_detected: z.boolean().default(false),
69
- });
70
- /** Classification of a byte sequence as a known protocol family. */
71
- export function classifyProtocolFamily(contentType, path) {
72
- if (contentType) {
73
- if (contentType.includes("application/grpc"))
74
- return "grpc";
75
- if (contentType.includes("application/x-protobuf"))
76
- return "protobuf";
77
- if (contentType.includes("application/json-rpc"))
78
- return "json-rpc";
79
- if (contentType.includes("application/msgpack") ||
80
- contentType.includes("application/x-msgpack"))
81
- return "messagepack";
82
- }
83
- if (path) {
84
- if (path.startsWith("/grpc.") || path.includes("/grpc/"))
85
- return "grpc";
86
- if (path.includes("/json-rpc") || path.includes("/jsonrpc"))
87
- return "json-rpc";
88
- }
89
- return null;
90
- }
91
- /** Decode a JSON-RPC message from raw payload bytes. */
92
- export function decodeJsonRpc(rawPayload) {
93
- const text = new TextDecoder().decode(rawPayload);
94
- const parsed = jsonValueSchema.parse(JSON.parse(text));
95
- const fields = [];
96
- if (typeof parsed === "object" && parsed !== null) {
97
- for (const [key, value] of Object.entries(parsed)) {
98
- fields.push({
99
- path: key,
100
- wire_type: "json",
101
- value,
102
- inferred: false,
103
- });
104
- }
105
- }
106
- return { decoded_fields: fields, truncated: false };
107
- }
108
- /** Decode a MessagePack message (simplified: only checks basic structure). */
109
- export function decodeMessagePack(rawPayload) {
110
- const fields = [];
111
- // MessagePack uses a single-byte type tag
112
- if (rawPayload.length === 0) {
113
- return { decoded_fields: [], truncated: false };
114
- }
115
- const tag = rawPayload[0];
116
- if (tag === undefined)
117
- return { decoded_fields: [], truncated: false };
118
- // Map type: 0x80-0x8f (fixmap), 0xde (map16), 0xdf (map32)
119
- if ((tag >= 0x80 && tag <= 0x8f) || tag === 0xde || tag === 0xdf) {
120
- fields.push({
121
- path: "type",
122
- wire_type: "msgpack",
123
- value: "map",
124
- inferred: false,
125
- });
126
- }
127
- // Array type: 0x90-0x9f (fixarray), 0xdc (array16), 0xdd (array32)
128
- else if ((tag >= 0x90 && tag <= 0x9f) || tag === 0xdc || tag === 0xdd) {
129
- fields.push({
130
- path: "type",
131
- wire_type: "msgpack",
132
- value: "array",
133
- inferred: false,
134
- });
135
- }
136
- else {
137
- fields.push({
138
- path: "type",
139
- wire_type: "msgpack",
140
- value: "unknown",
141
- inferred: true,
142
- });
143
- }
144
- return {
145
- decoded_fields: fields,
146
- truncated: false,
147
- };
148
- }
149
- /** Decode a gRPC frame (5-byte header + protobuf payload). */
150
- export function decodeGrpcFrame(rawPayload) {
151
- // gRPC uses a 5-byte prefix: 1 byte compressed flag + 4 byte length
152
- if (rawPayload.length < 5) {
153
- return {
154
- decoded_fields: [
155
- {
156
- path: "error",
157
- wire_type: "grpc",
158
- value: "frame too short",
159
- inferred: false,
160
- },
161
- ],
162
- truncated: false,
163
- };
164
- }
165
- const compressed = rawPayload[0] !== 0;
166
- const length = ((rawPayload[1] ?? 0) << 24) |
167
- ((rawPayload[2] ?? 0) << 16) |
168
- ((rawPayload[3] ?? 0) << 8) |
169
- (rawPayload[4] ?? 0);
170
- return {
171
- decoded_fields: [
172
- {
173
- path: "compressed",
174
- wire_type: "grpc",
175
- value: compressed,
176
- inferred: false,
177
- },
178
- {
179
- path: "message_length",
180
- wire_type: "grpc",
181
- value: length,
182
- inferred: false,
183
- },
184
- ],
185
- truncated: false,
186
- };
187
- }
188
- /** Infer schema hypotheses from a set of decoded messages. */
189
- export function inferMessageSchema(messages) {
190
- const fieldCounts = new Map();
191
- for (const msg of messages) {
192
- for (const field of msg.decoded_fields) {
193
- const existing = fieldCounts.get(field.path);
194
- if (existing) {
195
- existing.count++;
196
- if (field.wire_type)
197
- existing.types.add(field.wire_type);
198
- }
199
- else {
200
- fieldCounts.set(field.path, {
201
- count: 1,
202
- types: new Set(field.wire_type ?? "unknown"),
203
- });
204
- }
205
- }
206
- }
207
- const hypotheses = [];
208
- for (const [field_name, data] of fieldCounts) {
209
- hypotheses.push({
210
- field_name,
211
- inferred_type: [...data.types].join("|"),
212
- confidence: Math.min(1, data.count / messages.length || 0),
213
- evidence_count: data.count,
214
- });
215
- }
216
- return hypotheses;
217
- }