@efffrida/frida-tools 0.0.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 (72) hide show
  1. package/FridaDevice/package.json +6 -0
  2. package/FridaDeviceAcquisitionError/package.json +6 -0
  3. package/FridaScript/package.json +6 -0
  4. package/FridaSession/package.json +6 -0
  5. package/FridaSessionError/package.json +6 -0
  6. package/LICENSE +674 -0
  7. package/README.md +30 -0
  8. package/dist/cjs/FridaDevice.js +61 -0
  9. package/dist/cjs/FridaDevice.js.map +1 -0
  10. package/dist/cjs/FridaDeviceAcquisitionError.js +34 -0
  11. package/dist/cjs/FridaDeviceAcquisitionError.js.map +1 -0
  12. package/dist/cjs/FridaScript.js +41 -0
  13. package/dist/cjs/FridaScript.js.map +1 -0
  14. package/dist/cjs/FridaSession.js +46 -0
  15. package/dist/cjs/FridaSession.js.map +1 -0
  16. package/dist/cjs/FridaSessionError.js +38 -0
  17. package/dist/cjs/FridaSessionError.js.map +1 -0
  18. package/dist/cjs/index.js +19 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/internal/device.js +69 -0
  21. package/dist/cjs/internal/device.js.map +1 -0
  22. package/dist/cjs/internal/script.js +164 -0
  23. package/dist/cjs/internal/script.js.map +1 -0
  24. package/dist/cjs/internal/session.js +56 -0
  25. package/dist/cjs/internal/session.js.map +1 -0
  26. package/dist/dts/FridaDevice.d.ts +69 -0
  27. package/dist/dts/FridaDevice.d.ts.map +1 -0
  28. package/dist/dts/FridaDeviceAcquisitionError.d.ts +35 -0
  29. package/dist/dts/FridaDeviceAcquisitionError.d.ts.map +1 -0
  30. package/dist/dts/FridaScript.d.ts +80 -0
  31. package/dist/dts/FridaScript.d.ts.map +1 -0
  32. package/dist/dts/FridaSession.d.ts +56 -0
  33. package/dist/dts/FridaSession.d.ts.map +1 -0
  34. package/dist/dts/FridaSessionError.d.ts +35 -0
  35. package/dist/dts/FridaSessionError.d.ts.map +1 -0
  36. package/dist/dts/index.d.ts +31 -0
  37. package/dist/dts/index.d.ts.map +1 -0
  38. package/dist/dts/internal/device.d.ts +2 -0
  39. package/dist/dts/internal/device.d.ts.map +1 -0
  40. package/dist/dts/internal/script.d.ts +2 -0
  41. package/dist/dts/internal/script.d.ts.map +1 -0
  42. package/dist/dts/internal/session.d.ts +2 -0
  43. package/dist/dts/internal/session.d.ts.map +1 -0
  44. package/dist/esm/FridaDevice.js +52 -0
  45. package/dist/esm/FridaDevice.js.map +1 -0
  46. package/dist/esm/FridaDeviceAcquisitionError.js +23 -0
  47. package/dist/esm/FridaDeviceAcquisitionError.js.map +1 -0
  48. package/dist/esm/FridaScript.js +32 -0
  49. package/dist/esm/FridaScript.js.map +1 -0
  50. package/dist/esm/FridaSession.js +37 -0
  51. package/dist/esm/FridaSession.js.map +1 -0
  52. package/dist/esm/FridaSessionError.js +27 -0
  53. package/dist/esm/FridaSessionError.js.map +1 -0
  54. package/dist/esm/index.js +31 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/internal/device.js +55 -0
  57. package/dist/esm/internal/device.js.map +1 -0
  58. package/dist/esm/internal/script.js +155 -0
  59. package/dist/esm/internal/script.js.map +1 -0
  60. package/dist/esm/internal/session.js +44 -0
  61. package/dist/esm/internal/session.js.map +1 -0
  62. package/dist/esm/package.json +4 -0
  63. package/package.json +76 -0
  64. package/src/FridaDevice.ts +103 -0
  65. package/src/FridaDeviceAcquisitionError.ts +42 -0
  66. package/src/FridaScript.ts +117 -0
  67. package/src/FridaSession.ts +76 -0
  68. package/src/FridaSessionError.ts +42 -0
  69. package/src/index.ts +34 -0
  70. package/src/internal/device.ts +93 -0
  71. package/src/internal/script.ts +208 -0
  72. package/src/internal/session.ts +73 -0
package/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # @efffrida/frida-tools
2
+
3
+ Provides effectful abstractions for frida such as: connecting to devices, managing sessions, and creating script.
4
+
5
+ ### Example usage
6
+
7
+ ```typescript
8
+ import { NodeContext } from "@effect/platform-node";
9
+ import { FridaCompile } from "@efffrida/frida-compile";
10
+ import { FridaDevice, FridaScript, FridaSession } from "@efffrida/frida-tools";
11
+ import { Effect, Layer, Stream } from "effect";
12
+ import { ScriptRuntime } from "frida";
13
+
14
+ // Pick a device and a session/program
15
+ const DeviceLive = FridaDevice.layerLocalDevice;
16
+ const SessionLive = FridaSession.layer("/usr/bin/sleep");
17
+ const FridaLive = Layer.provideMerge(SessionLive, DeviceLive);
18
+
19
+ // Compile the agent
20
+ const ScriptLive = FridaCompile.compileAgent(new URL("../frida/agent.ts", import.meta.url))
21
+ .pipe(Effect.map(FridaScript.layer()))
22
+ .pipe(Layer.unwrapEffect)
23
+ .pipe(Layer.provide([FridaLive, NodeContext.layer]));
24
+
25
+ const program = Effect.gen(function* () {
26
+ const script = yield* FridaScript.FridaScript;
27
+ const messages = yield* Stream.runHead(script.stream);
28
+ // ...
29
+ }).pipe(Effect.scoped)
30
+ ```
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.layerUsbDevice = exports.layerRemoteDevice = exports.layerLocalDevice = exports.isFridaDevice = exports.acquireUsbDevice = exports.acquireRemoteDevice = exports.acquireLocalDevice = exports.FridaDeviceTypeId = exports.FridaDevice = void 0;
7
+ var internal = _interopRequireWildcard(require("./internal/device.js"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ /**
11
+ * Frida devices
12
+ *
13
+ * @since 1.0.0
14
+ */
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ * @category Type ids
19
+ */
20
+ const FridaDeviceTypeId = exports.FridaDeviceTypeId = internal.FridaDeviceTypeId;
21
+ /**
22
+ * @since 1.0.0
23
+ * @category Tags
24
+ */
25
+ const FridaDevice = exports.FridaDevice = internal.Tag;
26
+ /**
27
+ * @since 1.0.0
28
+ * @category Predicates
29
+ */
30
+ const isFridaDevice = exports.isFridaDevice = internal.isFridaDevice;
31
+ /**
32
+ * @since 1.0.0
33
+ * @category Device acquisition
34
+ */
35
+ const acquireUsbDevice = exports.acquireUsbDevice = internal.acquireUsbDevice;
36
+ /**
37
+ * @since 1.0.0
38
+ * @category Device acquisition
39
+ */
40
+ const acquireRemoteDevice = exports.acquireRemoteDevice = internal.acquireRemoteDevice;
41
+ /**
42
+ * @since 1.0.0
43
+ * @category Device acquisition
44
+ */
45
+ const acquireLocalDevice = exports.acquireLocalDevice = internal.acquireLocalDevice;
46
+ /**
47
+ * @since 1.0.0
48
+ * @category Layers
49
+ */
50
+ const layerRemoteDevice = exports.layerRemoteDevice = internal.layerRemoteDevice;
51
+ /**
52
+ * @since 1.0.0
53
+ * @category Layers
54
+ */
55
+ const layerUsbDevice = exports.layerUsbDevice = internal.layerUsbDevice;
56
+ /**
57
+ * @since 1.0.0
58
+ * @category Layers
59
+ */
60
+ const layerLocalDevice = exports.layerLocalDevice = internal.layerLocalDevice;
61
+ //# sourceMappingURL=FridaDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FridaDevice.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaDeviceTypeId","exports","FridaDevice","Tag","isFridaDevice","acquireUsbDevice","acquireRemoteDevice","acquireLocalDevice","layerRemoteDevice","layerUsbDevice","layerLocalDevice"],"sources":["../../src/FridaDevice.ts"],"sourcesContent":[null],"mappings":";;;;;;AAYA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAZhD;;;;;;AAcA;;;;AAIO,MAAMW,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAkBvB,QAAQ,CAACuB,iBAAiB;AAiB1E;;;;AAIO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAA0CzB,QAAQ,CAAC0B,GAAG;AAE9E;;;;AAIO,MAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAAqC3B,QAAQ,CAAC2B,aAAa;AAErF;;;;AAIO,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAGzB5B,QAAQ,CAAC4B,gBAAgB;AAE7B;;;;AAIO,MAAMC,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAI5B7B,QAAQ,CAAC6B,mBAAmB;AAEhC;;;;AAIO,MAAMC,kBAAkB,GAAAN,OAAA,CAAAM,kBAAA,GAI3B9B,QAAQ,CAAC8B,kBAAkB;AAE/B;;;;AAIO,MAAMC,iBAAiB,GAAAP,OAAA,CAAAO,iBAAA,GAI1B/B,QAAQ,CAAC+B,iBAAiB;AAE9B;;;;AAIO,MAAMC,cAAc,GAAAR,OAAA,CAAAQ,cAAA,GAEqEhC,QAAQ,CAACgC,cAAc;AAEvH;;;;AAIO,MAAMC,gBAAgB,GAAAT,OAAA,CAAAS,gBAAA,GAIzBjC,QAAQ,CAACiC,gBAAgB","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isFridaDeviceAcquisitionError = exports.FridaDeviceAcquisitionErrorTypeId = exports.FridaDeviceAcquisitionError = void 0;
7
+ var PlatformError = _interopRequireWildcard(require("@effect/platform/Error"));
8
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ /**
12
+ * Frida device acquisition errors
13
+ *
14
+ * @since 1.0.0
15
+ */
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category Errors
20
+ */
21
+ const FridaDeviceAcquisitionErrorTypeId = exports.FridaDeviceAcquisitionErrorTypeId = /*#__PURE__*/Symbol.for("@efffrida/FridaError/FridaDeviceAcquisitionError");
22
+ /**
23
+ * @since 1.0.0
24
+ * @category Errors
25
+ */
26
+ const isFridaDeviceAcquisitionError = u => Predicate.hasProperty(u, FridaDeviceAcquisitionErrorTypeId);
27
+ /**
28
+ * @since 1.0.0
29
+ * @category Errors
30
+ */
31
+ exports.isFridaDeviceAcquisitionError = isFridaDeviceAcquisitionError;
32
+ class FridaDeviceAcquisitionError extends /*#__PURE__*/PlatformError.TypeIdError(FridaDeviceAcquisitionErrorTypeId, "FridaDeviceAcquisitionError") {}
33
+ exports.FridaDeviceAcquisitionError = FridaDeviceAcquisitionError;
34
+ //# sourceMappingURL=FridaDeviceAcquisitionError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FridaDeviceAcquisitionError.js","names":["PlatformError","_interopRequireWildcard","require","Predicate","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaDeviceAcquisitionErrorTypeId","exports","Symbol","for","isFridaDeviceAcquisitionError","hasProperty","FridaDeviceAcquisitionError","TypeIdError"],"sources":["../../src/FridaDeviceAcquisitionError.ts"],"sourcesContent":[null],"mappings":";;;;;;AAMA,IAAAA,aAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,uBAAA,CAAAC,OAAA;AAA6C,SAAAE,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAP7C;;;;;;AASA;;;;AAIO,MAAMW,iCAAiC,GAAAC,OAAA,CAAAD,iCAAA,gBAAkBE,MAAM,CAACC,GAAG,CACtE,kDAAkD,CAChB;AAQtC;;;;AAIO,MAAMC,6BAA6B,GAAIT,CAAU,IACpDhB,SAAS,CAAC0B,WAAW,CAACV,CAAC,EAAEK,iCAAiC,CAAC;AAE/D;;;;AAAAC,OAAA,CAAAG,6BAAA,GAAAA,6BAAA;AAIM,MAAOE,2BAA4B,sBAAQ9B,aAAa,CAAC+B,WAAW,CACtEP,iCAAiC,EACjC,6BAA6B,CAK/B;AAAAC,OAAA,CAAAK,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.load = exports.layer = exports.isFridaScript = exports.FridaScriptTypeId = exports.FridaScript = void 0;
7
+ var internal = _interopRequireWildcard(require("./internal/script.js"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ /**
11
+ * Frida scripts
12
+ *
13
+ * @since 1.0.0
14
+ */
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ * @category Type ids
19
+ */
20
+ const FridaScriptTypeId = exports.FridaScriptTypeId = internal.FridaScriptTypeId;
21
+ /**
22
+ * @since 1.0.0
23
+ * @category Tags
24
+ */
25
+ const FridaScript = exports.FridaScript = internal.Tag;
26
+ /**
27
+ * @since 1.0.0
28
+ * @category Predicates
29
+ */
30
+ const isFridaScript = exports.isFridaScript = internal.isFridaScript;
31
+ /**
32
+ * @since 1.0.0
33
+ * @category Frida
34
+ */
35
+ const load = exports.load = internal.load;
36
+ /**
37
+ * @since 1.0.0
38
+ * @category Layers
39
+ */
40
+ const layer = exports.layer = internal.layer;
41
+ //# sourceMappingURL=FridaScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FridaScript.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaScriptTypeId","exports","FridaScript","Tag","isFridaScript","load","layer"],"sources":["../../src/FridaScript.ts"],"sourcesContent":[null],"mappings":";;;;;;AAmBA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAnBhD;;;;;;AAqBA;;;;AAIO,MAAMW,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAkBvB,QAAQ,CAACuB,iBAAiB;AAiC1E;;;;AAIO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAA0CzB,QAAQ,CAAC0B,GAAG;AAE9E;;;;AAIO,MAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAAqC3B,QAAQ,CAAC2B,aAAa;AAErF;;;;AAIO,MAAMC,IAAI,GAAAJ,OAAA,CAAAI,IAAA,GAkBb5B,QAAQ,CAAC4B,IAAI;AAEjB;;;;AAIO,MAAMC,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAkBd7B,QAAQ,CAAC6B,KAAK","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.spawn = exports.layer = exports.isFridaSession = exports.attach = exports.FridaSessionTypeId = exports.FridaSession = void 0;
7
+ var internal = _interopRequireWildcard(require("./internal/session.js"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ /**
11
+ * Frida sessions
12
+ *
13
+ * @since 1.0.0
14
+ */
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ * @category Type ids
19
+ */
20
+ const FridaSessionTypeId = exports.FridaSessionTypeId = internal.FridaSessionTypeId;
21
+ /**
22
+ * @since 1.0.0
23
+ * @category Tags
24
+ */
25
+ const FridaSession = exports.FridaSession = internal.Tag;
26
+ /**
27
+ * @since 1.0.0
28
+ * @category Predicates
29
+ */
30
+ const isFridaSession = exports.isFridaSession = internal.isFridaSession;
31
+ /**
32
+ * @since 1.0.0
33
+ * @category Frida
34
+ */
35
+ const spawn = exports.spawn = internal.spawn;
36
+ /**
37
+ * @since 1.0.0
38
+ * @category Frida
39
+ */
40
+ const attach = exports.attach = internal.attach;
41
+ /**
42
+ * @since 1.0.0
43
+ * @category Layers
44
+ */
45
+ const layer = exports.layer = internal.layer;
46
+ //# sourceMappingURL=FridaSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FridaSession.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaSessionTypeId","exports","FridaSession","Tag","isFridaSession","spawn","attach","layer"],"sources":["../../src/FridaSession.ts"],"sourcesContent":[null],"mappings":";;;;;;AAcA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAiD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAdjD;;;;;;AAgBA;;;;AAIO,MAAMW,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAkBvB,QAAQ,CAACuB,kBAAkB;AAiB5E;;;;AAIO,MAAME,YAAY,GAAAD,OAAA,CAAAC,YAAA,GAA4CzB,QAAQ,CAAC0B,GAAG;AAEjF;;;;AAIO,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAsC3B,QAAQ,CAAC2B,cAAc;AAExF;;;;AAIO,MAAMC,KAAK,GAAAJ,OAAA,CAAAI,KAAA,GAGuF5B,QAAQ,CAAC4B,KAAK;AAEvH;;;;AAIO,MAAMC,MAAM,GAAAL,OAAA,CAAAK,MAAA,GAIf7B,QAAQ,CAAC6B,MAAM;AAEnB;;;;AAIO,MAAMC,KAAK,GAAAN,OAAA,CAAAM,KAAA,GAG6E9B,QAAQ,CAAC8B,KAAK","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isFridaSessionError = exports.FridaSessionErrorTypeId = exports.FridaSessionError = void 0;
7
+ var PlatformError = _interopRequireWildcard(require("@effect/platform/Error"));
8
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ /**
12
+ * Frida session errors
13
+ *
14
+ * @since 1.0.0
15
+ */
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category Errors
20
+ */
21
+ const FridaSessionErrorTypeId = exports.FridaSessionErrorTypeId = /*#__PURE__*/Symbol.for("@efffrida/FridaError/FridaSessionError");
22
+ /**
23
+ * @since 1.0.0
24
+ * @category Errors
25
+ */
26
+ const isFridaSessionError = u => Predicate.hasProperty(u, FridaSessionErrorTypeId);
27
+ /**
28
+ * @since 1.0.0
29
+ * @category Errors
30
+ */
31
+ exports.isFridaSessionError = isFridaSessionError;
32
+ class FridaSessionError extends /*#__PURE__*/PlatformError.TypeIdError(FridaSessionErrorTypeId, "FridaSessionError") {
33
+ get message() {
34
+ return `A Frida session error occurred on ${this.when}`;
35
+ }
36
+ }
37
+ exports.FridaSessionError = FridaSessionError;
38
+ //# sourceMappingURL=FridaSessionError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FridaSessionError.js","names":["PlatformError","_interopRequireWildcard","require","Predicate","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaSessionErrorTypeId","exports","Symbol","for","isFridaSessionError","hasProperty","FridaSessionError","TypeIdError","message","when"],"sources":["../../src/FridaSessionError.ts"],"sourcesContent":[null],"mappings":";;;;;;AAMA,IAAAA,aAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,uBAAA,CAAAC,OAAA;AAA6C,SAAAE,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAP7C;;;;;;AASA;;;;AAIO,MAAMW,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,gBAAkBE,MAAM,CAACC,GAAG,CAC5D,wCAAwC,CAChB;AAQ5B;;;;AAIO,MAAMC,mBAAmB,GAAIT,CAAU,IAC1ChB,SAAS,CAAC0B,WAAW,CAACV,CAAC,EAAEK,uBAAuB,CAAC;AAErD;;;;AAAAC,OAAA,CAAAG,mBAAA,GAAAA,mBAAA;AAIM,MAAOE,iBAAkB,sBAAQ9B,aAAa,CAAC+B,WAAW,CAACP,uBAAuB,EAAE,mBAAmB,CAG3G;EACE,IAAIQ,OAAOA,CAAA;IACP,OAAO,qCAAqC,IAAI,CAACC,IAAI,EAAE;EAC3D","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FridaSessionError = exports.FridaSession = exports.FridaScript = exports.FridaDeviceAcquisitionError = exports.FridaDevice = void 0;
7
+ var _FridaDevice = _interopRequireWildcard(require("./FridaDevice.js"));
8
+ exports.FridaDevice = _FridaDevice;
9
+ var _FridaDeviceAcquisitionError = _interopRequireWildcard(require("./FridaDeviceAcquisitionError.js"));
10
+ exports.FridaDeviceAcquisitionError = _FridaDeviceAcquisitionError;
11
+ var _FridaScript = _interopRequireWildcard(require("./FridaScript.js"));
12
+ exports.FridaScript = _FridaScript;
13
+ var _FridaSession = _interopRequireWildcard(require("./FridaSession.js"));
14
+ exports.FridaSession = _FridaSession;
15
+ var _FridaSessionError = _interopRequireWildcard(require("./FridaSessionError.js"));
16
+ exports.FridaSessionError = _FridaSessionError;
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.layerUsbDevice = exports.layerRemoteDevice = exports.layerLocalDevice = exports.isFridaDevice = exports.acquireUsbDevice = exports.acquireRemoteDevice = exports.acquireLocalDevice = exports.Tag = exports.FridaDeviceTypeId = void 0;
7
+ var Context = _interopRequireWildcard(require("effect/Context"));
8
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
9
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
10
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
11
+ var Frida = _interopRequireWildcard(require("frida"));
12
+ var FridaDeviceAcquisitionError = _interopRequireWildcard(require("../FridaDeviceAcquisitionError.js"));
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ /** @internal */
16
+ const FridaDeviceTypeId = exports.FridaDeviceTypeId = /*#__PURE__*/Symbol.for("@efffrida/frida-tools/FridaDevice");
17
+ /** @internal */
18
+ const Tag = exports.Tag = /*#__PURE__*/Context.GenericTag("@efffrida/frida-tools/FridaDevice");
19
+ /** @internal */
20
+ const isFridaDevice = u => Predicate.hasProperty(u, FridaDeviceTypeId);
21
+ /** @internal */
22
+ exports.isFridaDevice = isFridaDevice;
23
+ const acquireUsbDevice = options => Effect.map(Effect.tryPromise({
24
+ try: () => Frida.getUsbDevice(options),
25
+ catch: cause => new FridaDeviceAcquisitionError.FridaDeviceAcquisitionError({
26
+ cause,
27
+ attempts: 1,
28
+ acquisitionMethod: "usb"
29
+ })
30
+ }), device => ({
31
+ device,
32
+ [FridaDeviceTypeId]: FridaDeviceTypeId
33
+ }));
34
+ /** @internal */
35
+ exports.acquireUsbDevice = acquireUsbDevice;
36
+ const acquireRemoteDevice = (address, options) => Effect.map(Effect.tryPromise({
37
+ try: () => Frida.getDeviceManager().addRemoteDevice(address, options),
38
+ catch: cause => new FridaDeviceAcquisitionError.FridaDeviceAcquisitionError({
39
+ cause,
40
+ attempts: 1,
41
+ acquisitionMethod: "remote"
42
+ })
43
+ }), device => ({
44
+ device,
45
+ [FridaDeviceTypeId]: FridaDeviceTypeId
46
+ }));
47
+ /** @internal */
48
+ exports.acquireRemoteDevice = acquireRemoteDevice;
49
+ const acquireLocalDevice = () => Effect.map(Effect.tryPromise({
50
+ try: () => Frida.getLocalDevice(),
51
+ catch: cause => new FridaDeviceAcquisitionError.FridaDeviceAcquisitionError({
52
+ cause,
53
+ attempts: 1,
54
+ acquisitionMethod: "local"
55
+ })
56
+ }), device => ({
57
+ device,
58
+ [FridaDeviceTypeId]: FridaDeviceTypeId
59
+ }));
60
+ /** @internal */
61
+ exports.acquireLocalDevice = acquireLocalDevice;
62
+ const layerRemoteDevice = (address, options) => Layer.effect(Tag, acquireRemoteDevice(address, options));
63
+ /** @internal */
64
+ exports.layerRemoteDevice = layerRemoteDevice;
65
+ const layerUsbDevice = options => Layer.effect(Tag, acquireUsbDevice(options));
66
+ /** @internal */
67
+ exports.layerUsbDevice = layerUsbDevice;
68
+ const layerLocalDevice = exports.layerLocalDevice = /*#__PURE__*/Layer.effect(Tag, /*#__PURE__*/acquireLocalDevice());
69
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","names":["Context","_interopRequireWildcard","require","Effect","Layer","Predicate","Frida","FridaDeviceAcquisitionError","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaDeviceTypeId","exports","Symbol","for","Tag","GenericTag","isFridaDevice","hasProperty","acquireUsbDevice","options","map","tryPromise","try","getUsbDevice","catch","cause","attempts","acquisitionMethod","device","acquireRemoteDevice","address","getDeviceManager","addRemoteDevice","acquireLocalDevice","getLocalDevice","layerRemoteDevice","effect","layerUsbDevice","layerLocalDevice"],"sources":["../../../src/internal/device.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.load = exports.layer = exports.isFridaScript = exports.Tag = exports.FridaScriptTypeId = void 0;
7
+ var Context = _interopRequireWildcard(require("effect/Context"));
8
+ var Deferred = _interopRequireWildcard(require("effect/Deferred"));
9
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
10
+ var Function = _interopRequireWildcard(require("effect/Function"));
11
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
12
+ var Option = _interopRequireWildcard(require("effect/Option"));
13
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
14
+ var Queue = _interopRequireWildcard(require("effect/Queue"));
15
+ var Sink = _interopRequireWildcard(require("effect/Sink"));
16
+ var Stream = _interopRequireWildcard(require("effect/Stream"));
17
+ var Take = _interopRequireWildcard(require("effect/Take"));
18
+ var Frida = _interopRequireWildcard(require("frida"));
19
+ var FridaDevice = _interopRequireWildcard(require("../FridaDevice.js"));
20
+ var FridaSession = _interopRequireWildcard(require("../FridaSession.js"));
21
+ var FridaSessionError = _interopRequireWildcard(require("../FridaSessionError.js"));
22
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
+ /** @internal */
25
+ const FridaScriptTypeId = exports.FridaScriptTypeId = /*#__PURE__*/Symbol.for("@efffrida/frida-tools/FridaScript");
26
+ /** @internal */
27
+ const Tag = exports.Tag = /*#__PURE__*/Context.GenericTag("@efffrida/frida-tools/FridaScript");
28
+ /** @internal */
29
+ const isFridaScript = u => Predicate.hasProperty(u, FridaScriptTypeId);
30
+ /** @internal */
31
+ exports.isFridaScript = isFridaScript;
32
+ const load = exports.load = /*#__PURE__*/Function.dual(arguments_ => Predicate.isString(arguments_[0]) || Buffer.isBuffer(arguments_[0]), /*#__PURE__*/Effect.fnUntraced(function* (source, options) {
33
+ const {
34
+ device
35
+ } = yield* FridaDevice.FridaDevice;
36
+ const {
37
+ session
38
+ } = yield* FridaSession.FridaSession;
39
+ const script = Predicate.isString(source) ? yield* Effect.tryPromise({
40
+ try: () => session.createScript(source, {
41
+ runtime: Frida.ScriptRuntime.V8,
42
+ ...options
43
+ }),
44
+ catch: cause => new FridaSessionError.FridaSessionError({
45
+ cause,
46
+ when: "compile"
47
+ })
48
+ }) : yield* Effect.tryPromise({
49
+ try: () => session.createScriptFromBytes(source, {
50
+ runtime: Frida.ScriptRuntime.V8,
51
+ ...options
52
+ }),
53
+ catch: cause => new FridaSessionError.FridaSessionError({
54
+ cause,
55
+ when: "compile"
56
+ })
57
+ });
58
+ const messageQueue = yield* Queue.unbounded();
59
+ let scriptDefectCause = undefined;
60
+ const messageHandler = (message, data) => {
61
+ switch (message.type) {
62
+ case Frida.MessageType.Error:
63
+ {
64
+ const error = new Error();
65
+ error.name = "FridaScriptDefect";
66
+ error.stack = message.stack ?? "";
67
+ error.message = message.description.replace(/Error: /, "") ?? "";
68
+ scriptDefectCause = error;
69
+ const sessionError = new FridaSessionError.FridaSessionError({
70
+ when: "message",
71
+ cause: error.cause
72
+ });
73
+ const asTake = Take.fail(sessionError);
74
+ Queue.unsafeOffer(messageQueue, asTake);
75
+ break;
76
+ }
77
+ case Frida.MessageType.Send:
78
+ {
79
+ const asTake = Take.of({
80
+ message: message.payload,
81
+ data: Option.fromNullable(data)
82
+ });
83
+ Queue.unsafeOffer(messageQueue, asTake);
84
+ break;
85
+ }
86
+ default:
87
+ Function.absurd(message);
88
+ }
89
+ };
90
+ const disconnectMessageHandler = Effect.sync(() => script.message.disconnect(messageHandler));
91
+ yield* Effect.addFinalizer(() => Effect.flatMap(messageQueue.shutdown, () => disconnectMessageHandler));
92
+ script.message.connect(messageHandler);
93
+ const stream = Stream.fromQueue(messageQueue).pipe(Stream.flattenTake);
94
+ const sink = Sink.forEach(({
95
+ data,
96
+ message
97
+ }) => {
98
+ if (Predicate.isNotUndefined(scriptDefectCause)) {
99
+ return Effect.fail(new FridaSessionError.FridaSessionError({
100
+ when: "rpcCall",
101
+ cause: scriptDefectCause
102
+ }));
103
+ } else {
104
+ return Effect.sync(() => script.post(message, Option.getOrNull(data)));
105
+ }
106
+ });
107
+ const destroyed = yield* Deferred.make();
108
+ const destroyedHandler = () => Deferred.unsafeDone(destroyed, Effect.void);
109
+ script.destroyed.connect(destroyedHandler);
110
+ const callExport = exportName => Effect.fn(`call frida export ${exportName}`)(function* (...args) {
111
+ yield* Effect.annotateCurrentSpan("args", args);
112
+ const isDestroyed = yield* Deferred.isDone(destroyed);
113
+ if (isDestroyed) {
114
+ return yield* new FridaSessionError.FridaSessionError({
115
+ when: "rpcCall",
116
+ cause: "Script is destroyed"
117
+ });
118
+ }
119
+ if (Predicate.isNotUndefined(scriptDefectCause)) {
120
+ return yield* new FridaSessionError.FridaSessionError({
121
+ when: "rpcCall",
122
+ cause: scriptDefectCause
123
+ });
124
+ }
125
+ const result = yield* Effect.tryPromise({
126
+ try: () => script.exports[exportName](...args),
127
+ catch: cause => new FridaSessionError.FridaSessionError({
128
+ when: "rpcCall",
129
+ cause
130
+ })
131
+ });
132
+ yield* Effect.annotateCurrentSpan("result", result);
133
+ return result;
134
+ });
135
+ yield* Effect.tryPromise({
136
+ try: () => script.load(),
137
+ catch: cause => new FridaSessionError.FridaSessionError({
138
+ cause,
139
+ when: "load"
140
+ })
141
+ });
142
+ if (options?.resume === true) {
143
+ yield* Effect.tryPromise({
144
+ try: () => device.resume(session.pid),
145
+ catch: cause => new FridaSessionError.FridaSessionError({
146
+ cause,
147
+ when: "resume"
148
+ })
149
+ });
150
+ }
151
+ return {
152
+ script,
153
+ stream,
154
+ sink,
155
+ destroyed,
156
+ callExport,
157
+ [FridaScriptTypeId]: FridaScriptTypeId
158
+ };
159
+ }, /*#__PURE__*/Effect.acquireRelease(({
160
+ script
161
+ }) => Effect.promise(() => script.unload()))));
162
+ /** @internal */
163
+ const layer = exports.layer = /*#__PURE__*/Function.dual(arguments_ => Predicate.isString(arguments_[0]), (source, options) => Layer.scoped(Tag, load(source, options)));
164
+ //# sourceMappingURL=script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.js","names":["Context","_interopRequireWildcard","require","Deferred","Effect","Function","Layer","Option","Predicate","Queue","Sink","Stream","Take","Frida","FridaDevice","FridaSession","FridaSessionError","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FridaScriptTypeId","exports","Symbol","for","Tag","GenericTag","isFridaScript","hasProperty","load","dual","arguments_","isString","Buffer","isBuffer","fnUntraced","source","options","device","session","script","tryPromise","try","createScript","runtime","ScriptRuntime","V8","catch","cause","when","createScriptFromBytes","messageQueue","unbounded","scriptDefectCause","undefined","messageHandler","message","data","type","MessageType","Error","error","name","stack","description","replace","sessionError","asTake","fail","unsafeOffer","Send","of","payload","fromNullable","absurd","disconnectMessageHandler","sync","disconnect","addFinalizer","flatMap","shutdown","connect","stream","fromQueue","pipe","flattenTake","sink","forEach","isNotUndefined","post","getOrNull","destroyed","make","destroyedHandler","unsafeDone","void","callExport","exportName","fn","args","annotateCurrentSpan","isDestroyed","isDone","result","resume","pid","acquireRelease","promise","unload","layer","scoped"],"sources":["../../../src/internal/script.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.spawn = exports.layer = exports.isFridaSession = exports.attach = exports.Tag = exports.FridaSessionTypeId = void 0;
7
+ var Context = _interopRequireWildcard(require("effect/Context"));
8
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
9
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
10
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
11
+ var FridaDevice = _interopRequireWildcard(require("../FridaDevice.js"));
12
+ var FridaSessionError = _interopRequireWildcard(require("../FridaSessionError.js"));
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ /** @internal */
16
+ const FridaSessionTypeId = exports.FridaSessionTypeId = /*#__PURE__*/Symbol.for("@efffrida/frida-tools/FridaSession");
17
+ /** @internal */
18
+ const Tag = exports.Tag = /*#__PURE__*/Context.GenericTag("@efffrida/frida-tools/FridaSession");
19
+ /** @internal */
20
+ const isFridaSession = u => Predicate.hasProperty(u, FridaSessionTypeId);
21
+ /** @internal */
22
+ exports.isFridaSession = isFridaSession;
23
+ const spawn = (program, options) => Effect.flatMap(FridaDevice.FridaDevice, ({
24
+ device
25
+ }) => Effect.acquireRelease(Effect.tryPromise({
26
+ try: () => device.spawn(program, options),
27
+ catch: cause => new FridaSessionError.FridaSessionError({
28
+ cause,
29
+ when: "spawn"
30
+ })
31
+ }), pid => Effect.promise(() => device.kill(pid))));
32
+ /** @internal */
33
+ exports.spawn = spawn;
34
+ const attach = (target, options) => Effect.flatMap(FridaDevice.FridaDevice, ({
35
+ device
36
+ }) => Effect.acquireRelease(Effect.map(Effect.tryPromise({
37
+ try: () => device.attach(target, options),
38
+ catch: cause => new FridaSessionError.FridaSessionError({
39
+ cause,
40
+ when: "attach"
41
+ })
42
+ }), session => ({
43
+ session,
44
+ [FridaSessionTypeId]: FridaSessionTypeId
45
+ })), ({
46
+ session
47
+ }) => Effect.promise(() => session.detach())));
48
+ /** @internal */
49
+ exports.attach = attach;
50
+ const layer = (target, options) => Layer.scoped(Tag, Effect.gen(function* () {
51
+ const pid = yield* spawn(target, options);
52
+ const session = yield* attach(pid, options);
53
+ return session;
54
+ }));
55
+ exports.layer = layer;
56
+ //# sourceMappingURL=session.js.map