frida 16.2.0 → 16.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/BSDmakefile +6 -0
  2. package/Makefile +16 -0
  3. package/README.md +14 -11
  4. package/configure +18 -0
  5. package/configure.bat +22 -0
  6. package/dist/native.js +0 -8
  7. package/lib/application.ts +98 -0
  8. package/lib/authentication.ts +3 -0
  9. package/lib/build.py +50 -0
  10. package/lib/bus.ts +30 -0
  11. package/lib/cancellable.ts +33 -0
  12. package/lib/child.ts +15 -0
  13. package/lib/crash.ts +11 -0
  14. package/lib/device.ts +329 -0
  15. package/lib/device_manager.ts +69 -0
  16. package/lib/endpoint_parameters.ts +56 -0
  17. package/lib/icon.ts +15 -0
  18. package/lib/index.ts +311 -0
  19. package/lib/iostream.ts +78 -0
  20. package/lib/meson.build +53 -0
  21. package/lib/native.ts +9 -0
  22. package/lib/portal_membership.ts +10 -0
  23. package/lib/portal_service.ts +105 -0
  24. package/lib/process.ts +57 -0
  25. package/lib/relay.ts +44 -0
  26. package/lib/script.ts +352 -0
  27. package/lib/session.ts +113 -0
  28. package/lib/signals.ts +45 -0
  29. package/lib/socket_address.ts +35 -0
  30. package/lib/spawn.ts +4 -0
  31. package/lib/system_parameters.ts +78 -0
  32. package/make.bat +23 -0
  33. package/meson.build +160 -0
  34. package/meson.options +11 -0
  35. package/package.json +27 -6
  36. package/releng/deps.py +1133 -0
  37. package/releng/deps.toml +391 -0
  38. package/releng/devkit-assets/frida-core-example-unix.c +188 -0
  39. package/releng/devkit-assets/frida-core-example-windows.c +197 -0
  40. package/releng/devkit-assets/frida-core-example.sln +28 -0
  41. package/releng/devkit-assets/frida-core-example.vcxproj +157 -0
  42. package/releng/devkit-assets/frida-core-example.vcxproj.filters +27 -0
  43. package/releng/devkit-assets/frida-gum-example-unix.c +122 -0
  44. package/releng/devkit-assets/frida-gum-example-windows.c +132 -0
  45. package/releng/devkit-assets/frida-gum-example.sln +28 -0
  46. package/releng/devkit-assets/frida-gum-example.vcxproj +157 -0
  47. package/releng/devkit-assets/frida-gum-example.vcxproj.filters +27 -0
  48. package/releng/devkit-assets/frida-gumjs-example-unix.c +84 -0
  49. package/releng/devkit-assets/frida-gumjs-example-windows.c +91 -0
  50. package/releng/devkit-assets/frida-gumjs-example.sln +28 -0
  51. package/releng/devkit-assets/frida-gumjs-example.vcxproj +157 -0
  52. package/releng/devkit-assets/frida-gumjs-example.vcxproj.filters +27 -0
  53. package/releng/devkit.py +535 -0
  54. package/releng/env.py +420 -0
  55. package/releng/env_android.py +150 -0
  56. package/releng/env_apple.py +176 -0
  57. package/releng/env_generic.py +373 -0
  58. package/releng/frida_version.py +69 -0
  59. package/releng/machine_file.py +44 -0
  60. package/releng/machine_spec.py +290 -0
  61. package/releng/meson/meson.py +27 -0
  62. package/releng/meson/mesonbuild/__init__.py +0 -0
  63. package/releng/meson/mesonbuild/_pathlib.py +63 -0
  64. package/releng/meson/mesonbuild/_typing.py +69 -0
  65. package/releng/meson/mesonbuild/arglist.py +321 -0
  66. package/releng/meson/mesonbuild/ast/__init__.py +23 -0
  67. package/releng/meson/mesonbuild/ast/interpreter.py +441 -0
  68. package/releng/meson/mesonbuild/ast/introspection.py +374 -0
  69. package/releng/meson/mesonbuild/ast/postprocess.py +109 -0
  70. package/releng/meson/mesonbuild/ast/printer.py +620 -0
  71. package/releng/meson/mesonbuild/ast/visitor.py +161 -0
  72. package/releng/meson/mesonbuild/backend/__init__.py +0 -0
  73. package/releng/meson/mesonbuild/backend/backends.py +2047 -0
  74. package/releng/meson/mesonbuild/backend/ninjabackend.py +3808 -0
  75. package/releng/meson/mesonbuild/backend/nonebackend.py +26 -0
  76. package/releng/meson/mesonbuild/backend/vs2010backend.py +2078 -0
  77. package/releng/meson/mesonbuild/backend/vs2012backend.py +35 -0
  78. package/releng/meson/mesonbuild/backend/vs2013backend.py +34 -0
  79. package/releng/meson/mesonbuild/backend/vs2015backend.py +35 -0
  80. package/releng/meson/mesonbuild/backend/vs2017backend.py +59 -0
  81. package/releng/meson/mesonbuild/backend/vs2019backend.py +54 -0
  82. package/releng/meson/mesonbuild/backend/vs2022backend.py +54 -0
  83. package/releng/meson/mesonbuild/backend/xcodebackend.py +1781 -0
  84. package/releng/meson/mesonbuild/build.py +3249 -0
  85. package/releng/meson/mesonbuild/cargo/__init__.py +5 -0
  86. package/releng/meson/mesonbuild/cargo/builder.py +238 -0
  87. package/releng/meson/mesonbuild/cargo/cfg.py +274 -0
  88. package/releng/meson/mesonbuild/cargo/interpreter.py +733 -0
  89. package/releng/meson/mesonbuild/cargo/manifest.py +227 -0
  90. package/releng/meson/mesonbuild/cargo/version.py +95 -0
  91. package/releng/meson/mesonbuild/cmake/__init__.py +28 -0
  92. package/releng/meson/mesonbuild/cmake/common.py +331 -0
  93. package/releng/meson/mesonbuild/cmake/data/__init__.py +0 -0
  94. package/releng/meson/mesonbuild/cmake/data/preload.cmake +82 -0
  95. package/releng/meson/mesonbuild/cmake/executor.py +241 -0
  96. package/releng/meson/mesonbuild/cmake/fileapi.py +324 -0
  97. package/releng/meson/mesonbuild/cmake/generator.py +186 -0
  98. package/releng/meson/mesonbuild/cmake/interpreter.py +1267 -0
  99. package/releng/meson/mesonbuild/cmake/toolchain.py +248 -0
  100. package/releng/meson/mesonbuild/cmake/traceparser.py +814 -0
  101. package/releng/meson/mesonbuild/cmake/tracetargets.py +161 -0
  102. package/releng/meson/mesonbuild/compilers/__init__.py +86 -0
  103. package/releng/meson/mesonbuild/compilers/asm.py +307 -0
  104. package/releng/meson/mesonbuild/compilers/c.py +788 -0
  105. package/releng/meson/mesonbuild/compilers/c_function_attributes.py +143 -0
  106. package/releng/meson/mesonbuild/compilers/compilers.py +1388 -0
  107. package/releng/meson/mesonbuild/compilers/cpp.py +1035 -0
  108. package/releng/meson/mesonbuild/compilers/cs.py +136 -0
  109. package/releng/meson/mesonbuild/compilers/cuda.py +806 -0
  110. package/releng/meson/mesonbuild/compilers/cython.py +91 -0
  111. package/releng/meson/mesonbuild/compilers/d.py +861 -0
  112. package/releng/meson/mesonbuild/compilers/detect.py +1396 -0
  113. package/releng/meson/mesonbuild/compilers/fortran.py +523 -0
  114. package/releng/meson/mesonbuild/compilers/java.py +113 -0
  115. package/releng/meson/mesonbuild/compilers/mixins/__init__.py +0 -0
  116. package/releng/meson/mesonbuild/compilers/mixins/arm.py +167 -0
  117. package/releng/meson/mesonbuild/compilers/mixins/ccrx.py +113 -0
  118. package/releng/meson/mesonbuild/compilers/mixins/clang.py +170 -0
  119. package/releng/meson/mesonbuild/compilers/mixins/clike.py +1330 -0
  120. package/releng/meson/mesonbuild/compilers/mixins/compcert.py +117 -0
  121. package/releng/meson/mesonbuild/compilers/mixins/elbrus.py +93 -0
  122. package/releng/meson/mesonbuild/compilers/mixins/emscripten.py +89 -0
  123. package/releng/meson/mesonbuild/compilers/mixins/gnu.py +629 -0
  124. package/releng/meson/mesonbuild/compilers/mixins/intel.py +167 -0
  125. package/releng/meson/mesonbuild/compilers/mixins/islinker.py +120 -0
  126. package/releng/meson/mesonbuild/compilers/mixins/metrowerks.py +279 -0
  127. package/releng/meson/mesonbuild/compilers/mixins/pgi.py +88 -0
  128. package/releng/meson/mesonbuild/compilers/mixins/ti.py +130 -0
  129. package/releng/meson/mesonbuild/compilers/mixins/visualstudio.py +458 -0
  130. package/releng/meson/mesonbuild/compilers/mixins/xc16.py +111 -0
  131. package/releng/meson/mesonbuild/compilers/objc.py +120 -0
  132. package/releng/meson/mesonbuild/compilers/objcpp.py +102 -0
  133. package/releng/meson/mesonbuild/compilers/rust.py +230 -0
  134. package/releng/meson/mesonbuild/compilers/swift.py +131 -0
  135. package/releng/meson/mesonbuild/compilers/vala.py +121 -0
  136. package/releng/meson/mesonbuild/coredata.py +1532 -0
  137. package/releng/meson/mesonbuild/dependencies/__init__.py +252 -0
  138. package/releng/meson/mesonbuild/dependencies/base.py +663 -0
  139. package/releng/meson/mesonbuild/dependencies/boost.py +1083 -0
  140. package/releng/meson/mesonbuild/dependencies/cmake.py +656 -0
  141. package/releng/meson/mesonbuild/dependencies/coarrays.py +80 -0
  142. package/releng/meson/mesonbuild/dependencies/configtool.py +163 -0
  143. package/releng/meson/mesonbuild/dependencies/cuda.py +295 -0
  144. package/releng/meson/mesonbuild/dependencies/data/CMakeLists.txt +102 -0
  145. package/releng/meson/mesonbuild/dependencies/data/CMakeListsLLVM.txt +204 -0
  146. package/releng/meson/mesonbuild/dependencies/data/CMakePathInfo.txt +31 -0
  147. package/releng/meson/mesonbuild/dependencies/data/__init__.py +0 -0
  148. package/releng/meson/mesonbuild/dependencies/detect.py +225 -0
  149. package/releng/meson/mesonbuild/dependencies/dev.py +707 -0
  150. package/releng/meson/mesonbuild/dependencies/dub.py +424 -0
  151. package/releng/meson/mesonbuild/dependencies/factory.py +146 -0
  152. package/releng/meson/mesonbuild/dependencies/framework.py +111 -0
  153. package/releng/meson/mesonbuild/dependencies/hdf5.py +168 -0
  154. package/releng/meson/mesonbuild/dependencies/misc.py +618 -0
  155. package/releng/meson/mesonbuild/dependencies/mpi.py +231 -0
  156. package/releng/meson/mesonbuild/dependencies/pkgconfig.py +570 -0
  157. package/releng/meson/mesonbuild/dependencies/platform.py +52 -0
  158. package/releng/meson/mesonbuild/dependencies/python.py +431 -0
  159. package/releng/meson/mesonbuild/dependencies/qt.py +484 -0
  160. package/releng/meson/mesonbuild/dependencies/scalapack.py +142 -0
  161. package/releng/meson/mesonbuild/dependencies/ui.py +281 -0
  162. package/releng/meson/mesonbuild/depfile.py +82 -0
  163. package/releng/meson/mesonbuild/envconfig.py +480 -0
  164. package/releng/meson/mesonbuild/environment.py +987 -0
  165. package/releng/meson/mesonbuild/interpreter/__init__.py +47 -0
  166. package/releng/meson/mesonbuild/interpreter/compiler.py +900 -0
  167. package/releng/meson/mesonbuild/interpreter/dependencyfallbacks.py +386 -0
  168. package/releng/meson/mesonbuild/interpreter/interpreter.py +3595 -0
  169. package/releng/meson/mesonbuild/interpreter/interpreterobjects.py +1096 -0
  170. package/releng/meson/mesonbuild/interpreter/kwargs.py +479 -0
  171. package/releng/meson/mesonbuild/interpreter/mesonmain.py +487 -0
  172. package/releng/meson/mesonbuild/interpreter/primitives/__init__.py +29 -0
  173. package/releng/meson/mesonbuild/interpreter/primitives/array.py +108 -0
  174. package/releng/meson/mesonbuild/interpreter/primitives/boolean.py +52 -0
  175. package/releng/meson/mesonbuild/interpreter/primitives/dict.py +88 -0
  176. package/releng/meson/mesonbuild/interpreter/primitives/integer.py +86 -0
  177. package/releng/meson/mesonbuild/interpreter/primitives/range.py +38 -0
  178. package/releng/meson/mesonbuild/interpreter/primitives/string.py +247 -0
  179. package/releng/meson/mesonbuild/interpreter/type_checking.py +853 -0
  180. package/releng/meson/mesonbuild/interpreterbase/__init__.py +126 -0
  181. package/releng/meson/mesonbuild/interpreterbase/_unholder.py +25 -0
  182. package/releng/meson/mesonbuild/interpreterbase/baseobjects.py +174 -0
  183. package/releng/meson/mesonbuild/interpreterbase/decorators.py +806 -0
  184. package/releng/meson/mesonbuild/interpreterbase/disabler.py +35 -0
  185. package/releng/meson/mesonbuild/interpreterbase/exceptions.py +22 -0
  186. package/releng/meson/mesonbuild/interpreterbase/helpers.py +67 -0
  187. package/releng/meson/mesonbuild/interpreterbase/interpreterbase.py +665 -0
  188. package/releng/meson/mesonbuild/interpreterbase/operator.py +32 -0
  189. package/releng/meson/mesonbuild/linkers/__init__.py +20 -0
  190. package/releng/meson/mesonbuild/linkers/base.py +39 -0
  191. package/releng/meson/mesonbuild/linkers/detect.py +229 -0
  192. package/releng/meson/mesonbuild/linkers/linkers.py +1614 -0
  193. package/releng/meson/mesonbuild/mcompile.py +380 -0
  194. package/releng/meson/mesonbuild/mconf.py +368 -0
  195. package/releng/meson/mesonbuild/mdevenv.py +234 -0
  196. package/releng/meson/mesonbuild/mdist.py +376 -0
  197. package/releng/meson/mesonbuild/mesondata.py +38 -0
  198. package/releng/meson/mesonbuild/mesonlib.py +23 -0
  199. package/releng/meson/mesonbuild/mesonmain.py +289 -0
  200. package/releng/meson/mesonbuild/minit.py +204 -0
  201. package/releng/meson/mesonbuild/minstall.py +864 -0
  202. package/releng/meson/mesonbuild/mintro.py +667 -0
  203. package/releng/meson/mesonbuild/mlog.py +542 -0
  204. package/releng/meson/mesonbuild/modules/__init__.py +270 -0
  205. package/releng/meson/mesonbuild/modules/cmake.py +442 -0
  206. package/releng/meson/mesonbuild/modules/cuda.py +377 -0
  207. package/releng/meson/mesonbuild/modules/dlang.py +117 -0
  208. package/releng/meson/mesonbuild/modules/external_project.py +306 -0
  209. package/releng/meson/mesonbuild/modules/fs.py +323 -0
  210. package/releng/meson/mesonbuild/modules/gnome.py +2215 -0
  211. package/releng/meson/mesonbuild/modules/hotdoc.py +487 -0
  212. package/releng/meson/mesonbuild/modules/i18n.py +405 -0
  213. package/releng/meson/mesonbuild/modules/icestorm.py +123 -0
  214. package/releng/meson/mesonbuild/modules/java.py +112 -0
  215. package/releng/meson/mesonbuild/modules/keyval.py +65 -0
  216. package/releng/meson/mesonbuild/modules/modtest.py +33 -0
  217. package/releng/meson/mesonbuild/modules/pkgconfig.py +744 -0
  218. package/releng/meson/mesonbuild/modules/python.py +556 -0
  219. package/releng/meson/mesonbuild/modules/python3.py +85 -0
  220. package/releng/meson/mesonbuild/modules/qt.py +621 -0
  221. package/releng/meson/mesonbuild/modules/qt4.py +23 -0
  222. package/releng/meson/mesonbuild/modules/qt5.py +23 -0
  223. package/releng/meson/mesonbuild/modules/qt6.py +22 -0
  224. package/releng/meson/mesonbuild/modules/rust.py +355 -0
  225. package/releng/meson/mesonbuild/modules/simd.py +114 -0
  226. package/releng/meson/mesonbuild/modules/sourceset.py +291 -0
  227. package/releng/meson/mesonbuild/modules/wayland.py +151 -0
  228. package/releng/meson/mesonbuild/modules/windows.py +207 -0
  229. package/releng/meson/mesonbuild/mparser.py +1114 -0
  230. package/releng/meson/mesonbuild/msetup.py +365 -0
  231. package/releng/meson/mesonbuild/msubprojects.py +764 -0
  232. package/releng/meson/mesonbuild/mtest.py +2201 -0
  233. package/releng/meson/mesonbuild/munstable_coredata.py +107 -0
  234. package/releng/meson/mesonbuild/optinterpreter.py +276 -0
  235. package/releng/meson/mesonbuild/programs.py +367 -0
  236. package/releng/meson/mesonbuild/rewriter.py +1075 -0
  237. package/releng/meson/mesonbuild/scripts/__init__.py +10 -0
  238. package/releng/meson/mesonbuild/scripts/clangformat.py +55 -0
  239. package/releng/meson/mesonbuild/scripts/clangtidy.py +30 -0
  240. package/releng/meson/mesonbuild/scripts/cleantrees.py +35 -0
  241. package/releng/meson/mesonbuild/scripts/cmake_run_ctgt.py +103 -0
  242. package/releng/meson/mesonbuild/scripts/cmd_or_ps.ps1 +17 -0
  243. package/releng/meson/mesonbuild/scripts/copy.py +19 -0
  244. package/releng/meson/mesonbuild/scripts/coverage.py +214 -0
  245. package/releng/meson/mesonbuild/scripts/delwithsuffix.py +27 -0
  246. package/releng/meson/mesonbuild/scripts/depfixer.py +495 -0
  247. package/releng/meson/mesonbuild/scripts/depscan.py +198 -0
  248. package/releng/meson/mesonbuild/scripts/dirchanger.py +20 -0
  249. package/releng/meson/mesonbuild/scripts/env2mfile.py +402 -0
  250. package/releng/meson/mesonbuild/scripts/externalproject.py +106 -0
  251. package/releng/meson/mesonbuild/scripts/gettext.py +86 -0
  252. package/releng/meson/mesonbuild/scripts/gtkdochelper.py +286 -0
  253. package/releng/meson/mesonbuild/scripts/hotdochelper.py +40 -0
  254. package/releng/meson/mesonbuild/scripts/itstool.py +77 -0
  255. package/releng/meson/mesonbuild/scripts/meson_exe.py +115 -0
  256. package/releng/meson/mesonbuild/scripts/msgfmthelper.py +29 -0
  257. package/releng/meson/mesonbuild/scripts/pycompile.py +54 -0
  258. package/releng/meson/mesonbuild/scripts/python_info.py +121 -0
  259. package/releng/meson/mesonbuild/scripts/regen_checker.py +55 -0
  260. package/releng/meson/mesonbuild/scripts/run_tool.py +58 -0
  261. package/releng/meson/mesonbuild/scripts/scanbuild.py +57 -0
  262. package/releng/meson/mesonbuild/scripts/symbolextractor.py +322 -0
  263. package/releng/meson/mesonbuild/scripts/tags.py +44 -0
  264. package/releng/meson/mesonbuild/scripts/test_loaded_modules.py +14 -0
  265. package/releng/meson/mesonbuild/scripts/uninstall.py +41 -0
  266. package/releng/meson/mesonbuild/scripts/vcstagger.py +35 -0
  267. package/releng/meson/mesonbuild/scripts/yasm.py +24 -0
  268. package/releng/meson/mesonbuild/templates/__init__.py +0 -0
  269. package/releng/meson/mesonbuild/templates/cpptemplates.py +143 -0
  270. package/releng/meson/mesonbuild/templates/cstemplates.py +90 -0
  271. package/releng/meson/mesonbuild/templates/ctemplates.py +126 -0
  272. package/releng/meson/mesonbuild/templates/cudatemplates.py +143 -0
  273. package/releng/meson/mesonbuild/templates/dlangtemplates.py +109 -0
  274. package/releng/meson/mesonbuild/templates/fortrantemplates.py +101 -0
  275. package/releng/meson/mesonbuild/templates/javatemplates.py +94 -0
  276. package/releng/meson/mesonbuild/templates/mesontemplates.py +70 -0
  277. package/releng/meson/mesonbuild/templates/objcpptemplates.py +126 -0
  278. package/releng/meson/mesonbuild/templates/objctemplates.py +126 -0
  279. package/releng/meson/mesonbuild/templates/rusttemplates.py +79 -0
  280. package/releng/meson/mesonbuild/templates/samplefactory.py +41 -0
  281. package/releng/meson/mesonbuild/templates/sampleimpl.py +160 -0
  282. package/releng/meson/mesonbuild/templates/valatemplates.py +82 -0
  283. package/releng/meson/mesonbuild/utils/__init__.py +0 -0
  284. package/releng/meson/mesonbuild/utils/core.py +166 -0
  285. package/releng/meson/mesonbuild/utils/platform.py +27 -0
  286. package/releng/meson/mesonbuild/utils/posix.py +32 -0
  287. package/releng/meson/mesonbuild/utils/universal.py +2445 -0
  288. package/releng/meson/mesonbuild/utils/vsenv.py +126 -0
  289. package/releng/meson/mesonbuild/utils/win32.py +29 -0
  290. package/releng/meson/mesonbuild/wrap/__init__.py +59 -0
  291. package/releng/meson/mesonbuild/wrap/wrap.py +846 -0
  292. package/releng/meson/mesonbuild/wrap/wraptool.py +198 -0
  293. package/releng/meson-scripts/BSDmakefile +6 -0
  294. package/releng/meson-scripts/Makefile +16 -0
  295. package/releng/meson-scripts/configure +18 -0
  296. package/releng/meson-scripts/configure.bat +22 -0
  297. package/releng/meson-scripts/make.bat +23 -0
  298. package/releng/meson_configure.py +506 -0
  299. package/releng/meson_make.py +131 -0
  300. package/releng/mkdevkit.py +107 -0
  301. package/releng/mkfatmacho.py +54 -0
  302. package/releng/post-process-oabi.py +97 -0
  303. package/releng/progress.py +14 -0
  304. package/releng/sync-from-upstream.py +185 -0
  305. package/releng/tomlkit/tomlkit/__init__.py +59 -0
  306. package/releng/tomlkit/tomlkit/_compat.py +22 -0
  307. package/releng/tomlkit/tomlkit/_types.py +83 -0
  308. package/releng/tomlkit/tomlkit/_utils.py +158 -0
  309. package/releng/tomlkit/tomlkit/api.py +308 -0
  310. package/releng/tomlkit/tomlkit/container.py +875 -0
  311. package/releng/tomlkit/tomlkit/exceptions.py +227 -0
  312. package/releng/tomlkit/tomlkit/items.py +1967 -0
  313. package/releng/tomlkit/tomlkit/parser.py +1141 -0
  314. package/releng/tomlkit/tomlkit/py.typed +0 -0
  315. package/releng/tomlkit/tomlkit/source.py +180 -0
  316. package/releng/tomlkit/tomlkit/toml_char.py +52 -0
  317. package/releng/tomlkit/tomlkit/toml_document.py +7 -0
  318. package/releng/tomlkit/tomlkit/toml_file.py +58 -0
  319. package/releng/winenv.py +140 -0
  320. package/scripts/adjust-version.py +19 -0
  321. package/scripts/detect-version.py +40 -0
  322. package/scripts/fetch-abi-bits.py +343 -0
  323. package/scripts/install.js +23 -0
  324. package/scripts/package.py +15 -0
  325. package/src/addon.cc +76 -0
  326. package/src/application.cc +148 -0
  327. package/src/application.h +31 -0
  328. package/src/authentication.cc +174 -0
  329. package/src/authentication.h +24 -0
  330. package/src/bus.cc +167 -0
  331. package/src/bus.h +33 -0
  332. package/src/cancellable.cc +117 -0
  333. package/src/cancellable.h +31 -0
  334. package/src/child.cc +150 -0
  335. package/src/child.h +32 -0
  336. package/src/crash.cc +122 -0
  337. package/src/crash.h +30 -0
  338. package/src/device.cc +1302 -0
  339. package/src/device.h +55 -0
  340. package/src/device_manager.cc +362 -0
  341. package/src/device_manager.h +35 -0
  342. package/src/endpoint_parameters.cc +171 -0
  343. package/src/endpoint_parameters.h +28 -0
  344. package/src/glib_context.cc +62 -0
  345. package/src/glib_context.h +29 -0
  346. package/src/glib_object.cc +25 -0
  347. package/src/glib_object.h +37 -0
  348. package/src/iostream.cc +247 -0
  349. package/src/iostream.h +30 -0
  350. package/src/meson.build +26 -0
  351. package/src/operation.h +94 -0
  352. package/src/portal_membership.cc +100 -0
  353. package/src/portal_membership.h +26 -0
  354. package/src/portal_service.cc +401 -0
  355. package/src/portal_service.h +40 -0
  356. package/src/process.cc +135 -0
  357. package/src/process.h +30 -0
  358. package/src/relay.cc +139 -0
  359. package/src/relay.h +31 -0
  360. package/src/runtime.cc +443 -0
  361. package/src/runtime.h +64 -0
  362. package/src/script.cc +301 -0
  363. package/src/script.h +36 -0
  364. package/src/session.cc +860 -0
  365. package/src/session.h +42 -0
  366. package/src/signals.cc +334 -0
  367. package/src/signals.h +47 -0
  368. package/src/spawn.cc +95 -0
  369. package/src/spawn.h +27 -0
  370. package/src/usage_monitor.h +117 -0
  371. package/src/uv_context.cc +118 -0
  372. package/src/uv_context.h +40 -0
  373. package/src/win_delay_load_hook.cc +63 -0
  374. package/subprojects/frida-core.wrap +8 -0
  375. package/subprojects/nan.wrap +9 -0
  376. package/subprojects/packagefiles/nan.patch +13 -0
  377. package/test/data/index.ts +13 -0
  378. package/test/data/unixvictim-linux-x86 +0 -0
  379. package/test/data/unixvictim-linux-x86_64 +0 -0
  380. package/test/data/unixvictim-macos +0 -0
  381. package/test/device.ts +27 -0
  382. package/test/device_manager.ts +16 -0
  383. package/test/labrat.ts +32 -0
  384. package/test/script.ts +176 -0
  385. package/test/session.ts +73 -0
  386. package/tsconfig.json +18 -0
File without changes
@@ -0,0 +1,180 @@
1
+ from __future__ import annotations
2
+
3
+ from copy import copy
4
+ from typing import Any
5
+
6
+ from tomlkit.exceptions import ParseError
7
+ from tomlkit.exceptions import UnexpectedCharError
8
+ from tomlkit.toml_char import TOMLChar
9
+
10
+
11
+ class _State:
12
+ def __init__(
13
+ self,
14
+ source: Source,
15
+ save_marker: bool | None = False,
16
+ restore: bool | None = False,
17
+ ) -> None:
18
+ self._source = source
19
+ self._save_marker = save_marker
20
+ self.restore = restore
21
+
22
+ def __enter__(self) -> _State:
23
+ # Entering this context manager - save the state
24
+ self._chars = copy(self._source._chars)
25
+ self._idx = self._source._idx
26
+ self._current = self._source._current
27
+ self._marker = self._source._marker
28
+
29
+ return self
30
+
31
+ def __exit__(self, exception_type, exception_val, trace):
32
+ # Exiting this context manager - restore the prior state
33
+ if self.restore or exception_type:
34
+ self._source._chars = self._chars
35
+ self._source._idx = self._idx
36
+ self._source._current = self._current
37
+ if self._save_marker:
38
+ self._source._marker = self._marker
39
+
40
+
41
+ class _StateHandler:
42
+ """
43
+ State preserver for the Parser.
44
+ """
45
+
46
+ def __init__(self, source: Source) -> None:
47
+ self._source = source
48
+ self._states = []
49
+
50
+ def __call__(self, *args, **kwargs):
51
+ return _State(self._source, *args, **kwargs)
52
+
53
+ def __enter__(self) -> _State:
54
+ state = self()
55
+ self._states.append(state)
56
+ return state.__enter__()
57
+
58
+ def __exit__(self, exception_type, exception_val, trace):
59
+ state = self._states.pop()
60
+ return state.__exit__(exception_type, exception_val, trace)
61
+
62
+
63
+ class Source(str):
64
+ EOF = TOMLChar("\0")
65
+
66
+ def __init__(self, _: str) -> None:
67
+ super().__init__()
68
+
69
+ # Collection of TOMLChars
70
+ self._chars = iter([(i, TOMLChar(c)) for i, c in enumerate(self)])
71
+
72
+ self._idx = 0
73
+ self._marker = 0
74
+ self._current = TOMLChar("")
75
+
76
+ self._state = _StateHandler(self)
77
+
78
+ self.inc()
79
+
80
+ def reset(self):
81
+ # initialize both idx and current
82
+ self.inc()
83
+
84
+ # reset marker
85
+ self.mark()
86
+
87
+ @property
88
+ def state(self) -> _StateHandler:
89
+ return self._state
90
+
91
+ @property
92
+ def idx(self) -> int:
93
+ return self._idx
94
+
95
+ @property
96
+ def current(self) -> TOMLChar:
97
+ return self._current
98
+
99
+ @property
100
+ def marker(self) -> int:
101
+ return self._marker
102
+
103
+ def extract(self) -> str:
104
+ """
105
+ Extracts the value between marker and index
106
+ """
107
+ return self[self._marker : self._idx]
108
+
109
+ def inc(self, exception: type[ParseError] | None = None) -> bool:
110
+ """
111
+ Increments the parser if the end of the input has not been reached.
112
+ Returns whether or not it was able to advance.
113
+ """
114
+ try:
115
+ self._idx, self._current = next(self._chars)
116
+
117
+ return True
118
+ except StopIteration:
119
+ self._idx = len(self)
120
+ self._current = self.EOF
121
+ if exception:
122
+ raise self.parse_error(exception)
123
+
124
+ return False
125
+
126
+ def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool:
127
+ """
128
+ Increments the parser by n characters
129
+ if the end of the input has not been reached.
130
+ """
131
+ return all(self.inc(exception=exception) for _ in range(n))
132
+
133
+ def consume(self, chars, min=0, max=-1):
134
+ """
135
+ Consume chars until min/max is satisfied is valid.
136
+ """
137
+ while self.current in chars and max != 0:
138
+ min -= 1
139
+ max -= 1
140
+ if not self.inc():
141
+ break
142
+
143
+ # failed to consume minimum number of characters
144
+ if min > 0:
145
+ raise self.parse_error(UnexpectedCharError, self.current)
146
+
147
+ def end(self) -> bool:
148
+ """
149
+ Returns True if the parser has reached the end of the input.
150
+ """
151
+ return self._current is self.EOF
152
+
153
+ def mark(self) -> None:
154
+ """
155
+ Sets the marker to the index's current position
156
+ """
157
+ self._marker = self._idx
158
+
159
+ def parse_error(
160
+ self,
161
+ exception: type[ParseError] = ParseError,
162
+ *args: Any,
163
+ **kwargs: Any,
164
+ ) -> ParseError:
165
+ """
166
+ Creates a generic "parse error" at the current position.
167
+ """
168
+ line, col = self._to_linecol()
169
+
170
+ return exception(line, col, *args, **kwargs)
171
+
172
+ def _to_linecol(self) -> tuple[int, int]:
173
+ cur = 0
174
+ for i, line in enumerate(self.splitlines()):
175
+ if cur + len(line) + 1 > self.idx:
176
+ return (i + 1, self.idx - cur)
177
+
178
+ cur += len(line) + 1
179
+
180
+ return len(self.splitlines()), 0
@@ -0,0 +1,52 @@
1
+ import string
2
+
3
+
4
+ class TOMLChar(str):
5
+ def __init__(self, c):
6
+ super().__init__()
7
+
8
+ if len(self) > 1:
9
+ raise ValueError("A TOML character must be of length 1")
10
+
11
+ BARE = string.ascii_letters + string.digits + "-_"
12
+ KV = "= \t"
13
+ NUMBER = string.digits + "+-_.e"
14
+ SPACES = " \t"
15
+ NL = "\n\r"
16
+ WS = SPACES + NL
17
+
18
+ def is_bare_key_char(self) -> bool:
19
+ """
20
+ Whether the character is a valid bare key name or not.
21
+ """
22
+ return self in self.BARE
23
+
24
+ def is_kv_sep(self) -> bool:
25
+ """
26
+ Whether the character is a valid key/value separator or not.
27
+ """
28
+ return self in self.KV
29
+
30
+ def is_int_float_char(self) -> bool:
31
+ """
32
+ Whether the character if a valid integer or float value character or not.
33
+ """
34
+ return self in self.NUMBER
35
+
36
+ def is_ws(self) -> bool:
37
+ """
38
+ Whether the character is a whitespace character or not.
39
+ """
40
+ return self in self.WS
41
+
42
+ def is_nl(self) -> bool:
43
+ """
44
+ Whether the character is a new line character or not.
45
+ """
46
+ return self in self.NL
47
+
48
+ def is_spaces(self) -> bool:
49
+ """
50
+ Whether the character is a space or not
51
+ """
52
+ return self in self.SPACES
@@ -0,0 +1,7 @@
1
+ from tomlkit.container import Container
2
+
3
+
4
+ class TOMLDocument(Container):
5
+ """
6
+ A TOML document.
7
+ """
@@ -0,0 +1,58 @@
1
+ import os
2
+ import re
3
+
4
+ from typing import TYPE_CHECKING
5
+
6
+ from tomlkit.api import loads
7
+ from tomlkit.toml_document import TOMLDocument
8
+
9
+
10
+ if TYPE_CHECKING:
11
+ from _typeshed import StrPath as _StrPath
12
+ else:
13
+ from typing import Union
14
+
15
+ _StrPath = Union[str, os.PathLike]
16
+
17
+
18
+ class TOMLFile:
19
+ """
20
+ Represents a TOML file.
21
+
22
+ :param path: path to the TOML file
23
+ """
24
+
25
+ def __init__(self, path: _StrPath) -> None:
26
+ self._path = path
27
+ self._linesep = os.linesep
28
+
29
+ def read(self) -> TOMLDocument:
30
+ """Read the file content as a :class:`tomlkit.toml_document.TOMLDocument`."""
31
+ with open(self._path, encoding="utf-8", newline="") as f:
32
+ content = f.read()
33
+
34
+ # check if consistent line endings
35
+ num_newline = content.count("\n")
36
+ if num_newline > 0:
37
+ num_win_eol = content.count("\r\n")
38
+ if num_win_eol == num_newline:
39
+ self._linesep = "\r\n"
40
+ elif num_win_eol == 0:
41
+ self._linesep = "\n"
42
+ else:
43
+ self._linesep = "mixed"
44
+
45
+ return loads(content)
46
+
47
+ def write(self, data: TOMLDocument) -> None:
48
+ """Write the TOMLDocument to the file."""
49
+ content = data.as_string()
50
+
51
+ # apply linesep
52
+ if self._linesep == "\n":
53
+ content = content.replace("\r\n", "\n")
54
+ elif self._linesep == "\r\n":
55
+ content = re.sub(r"(?<!\r)\n", "\r\n", content)
56
+
57
+ with open(self._path, "w", encoding="utf-8", newline="") as f:
58
+ f.write(content)
@@ -0,0 +1,140 @@
1
+ import json
2
+ from operator import attrgetter
3
+ import os
4
+ from pathlib import Path
5
+ import platform
6
+ import subprocess
7
+ from typing import Optional
8
+ if platform.system() == "Windows":
9
+ import winreg
10
+
11
+ from .machine_spec import MachineSpec
12
+
13
+
14
+ cached_msvs_dir = None
15
+ cached_msvc_dir = None
16
+ cached_winsdk = None
17
+
18
+
19
+ def detect_msvs_installation_dir(toolchain_prefix: Optional[Path]) -> Path:
20
+ global cached_msvs_dir
21
+ if cached_msvs_dir is None:
22
+ vswhere = Path(os.environ.get("ProgramFiles(x86)", os.environ["ProgramFiles"])) \
23
+ / "Microsoft Visual Studio" / "Installer" / "vswhere.exe"
24
+ if not vswhere.exists():
25
+ if toolchain_prefix is None:
26
+ raise MissingDependencyError("unable to locate vswhere.exe")
27
+ vswhere = toolchain_prefix / "bin" / "vswhere.exe"
28
+ installations = json.loads(
29
+ subprocess.run([
30
+ vswhere,
31
+ "-latest",
32
+ "-format", "json",
33
+ "-property", "installationPath"
34
+ ],
35
+ capture_output=True,
36
+ encoding="utf-8",
37
+ check=True).stdout
38
+ )
39
+ if len(installations) == 0:
40
+ raise MissingDependencyError("Visual Studio is not installed")
41
+ cached_msvs_dir = Path(installations[0]["installationPath"])
42
+ return cached_msvs_dir
43
+
44
+
45
+ def detect_msvc_tool_dir(toolchain_prefix: Optional[Path]) -> Path:
46
+ global cached_msvc_dir
47
+ if cached_msvc_dir is None:
48
+ msvs_dir = detect_msvs_installation_dir(toolchain_prefix)
49
+ version = sorted((msvs_dir / "VC" / "Tools" / "MSVC").glob("*.*.*"),
50
+ key=attrgetter("name"),
51
+ reverse=True)[0].name
52
+ cached_msvc_dir = msvs_dir / "VC" / "Tools" / "MSVC" / version
53
+ return cached_msvc_dir
54
+
55
+
56
+ def detect_windows_sdk() -> tuple[Path, str]:
57
+ global cached_winsdk
58
+ if cached_winsdk is None:
59
+ try:
60
+ key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows Kits\Installed Roots")
61
+ try:
62
+ (install_dir, _) = winreg.QueryValueEx(key, "KitsRoot10")
63
+ install_dir = Path(install_dir)
64
+ version = sorted((install_dir / "Include").glob("*.*.*"),
65
+ key=attrgetter("name"),
66
+ reverse=True)[0].name
67
+ cached_winsdk = (install_dir, version)
68
+ finally:
69
+ winreg.CloseKey(key)
70
+ except Exception as e:
71
+ raise MissingDependencyError("Windows 10 SDK is not installed")
72
+ return cached_winsdk
73
+
74
+
75
+ def detect_msvs_tool_path(machine: MachineSpec,
76
+ build_machine: MachineSpec,
77
+ tool: str,
78
+ toolchain_prefix: Optional[Path]) -> Path:
79
+ return detect_msvc_tool_dir(toolchain_prefix) / "bin" / f"Host{build_machine.msvc_platform}" \
80
+ / machine.msvc_platform / tool
81
+
82
+
83
+ def detect_msvs_runtime_path(machine: MachineSpec,
84
+ build_machine: MachineSpec,
85
+ toolchain_prefix: Optional[Path]) -> list[Path]:
86
+ msvc_platform = machine.msvc_platform
87
+ native_msvc_platform = build_machine.msvc_platform
88
+
89
+ msvc_dir = detect_msvc_tool_dir(toolchain_prefix)
90
+ msvc_bindir = msvc_dir / "bin" / f"Host{native_msvc_platform}" / msvc_platform
91
+
92
+ msvc_dll_dirs = []
93
+ if msvc_platform != native_msvc_platform:
94
+ msvc_dll_dirs.append(msvc_dir / "bin" / f"Host{native_msvc_platform}" / native_msvc_platform)
95
+
96
+ (winsdk_dir, winsdk_version) = detect_windows_sdk()
97
+ winsdk_bindir = winsdk_dir / "Bin" / winsdk_version / msvc_platform
98
+
99
+ return [winsdk_bindir, msvc_bindir] + msvc_dll_dirs
100
+
101
+
102
+ def detect_msvs_include_path(toolchain_prefix: Optional[Path]) -> list[Path]:
103
+ msvc_dir = detect_msvc_tool_dir(toolchain_prefix)
104
+ vc_dir = detect_msvs_installation_dir(toolchain_prefix) / "VC"
105
+
106
+ (winsdk_dir, winsdk_version) = detect_windows_sdk()
107
+ winsdk_inc_dirs = [
108
+ winsdk_dir / "Include" / winsdk_version / "um",
109
+ winsdk_dir / "Include" / winsdk_version / "shared",
110
+ ]
111
+
112
+ return [
113
+ msvc_dir / "include",
114
+ msvc_dir / "atlmfc" / "include",
115
+ vc_dir / "Auxiliary" / "VS" / "include",
116
+ winsdk_dir / "Include" / winsdk_version / "ucrt",
117
+ ] + winsdk_inc_dirs
118
+
119
+
120
+ def detect_msvs_library_path(machine: MachineSpec,
121
+ toolchain_prefix: Optional[Path]) -> list[Path]:
122
+ msvc_platform = machine.msvc_platform
123
+
124
+ msvc_dir = detect_msvc_tool_dir(toolchain_prefix)
125
+ vc_dir = detect_msvs_installation_dir(toolchain_prefix) / "VC"
126
+
127
+ (winsdk_dir, winsdk_version) = detect_windows_sdk()
128
+ winsdk_lib_dir = winsdk_dir / "Lib" / winsdk_version / "um" / msvc_platform
129
+
130
+ return [
131
+ msvc_dir / "lib" / msvc_platform,
132
+ msvc_dir / "atlmfc" / "lib" / msvc_platform,
133
+ vc_dir / "Auxiliary" / "VS" / "lib" / msvc_platform,
134
+ winsdk_dir / "Lib" / winsdk_version / "ucrt" / msvc_platform,
135
+ winsdk_lib_dir,
136
+ ]
137
+
138
+
139
+ class MissingDependencyError(Exception):
140
+ pass
@@ -0,0 +1,19 @@
1
+ from pathlib import Path
2
+ import re
3
+ import sys
4
+
5
+
6
+ def main(argv: list[str]):
7
+ version = argv[1]
8
+ inpkg = Path(argv[2])
9
+ outpkg = Path(argv[3])
10
+
11
+ vanilla_pkg = inpkg.read_text(encoding="utf-8")
12
+ adjusted_pkg = re.sub(r'(?P<prefix>"version": ")[^"]+(?P<suffix>")',
13
+ f"\\g<prefix>{version}\\g<suffix>",
14
+ vanilla_pkg)
15
+ outpkg.write_text(adjusted_pkg, encoding="utf-8")
16
+
17
+
18
+ if __name__ == "__main__":
19
+ main(sys.argv)
@@ -0,0 +1,40 @@
1
+ import json
2
+ import os
3
+ from pathlib import Path
4
+ import sys
5
+ from typing import Iterator
6
+
7
+
8
+ SOURCE_ROOT = Path(__file__).resolve().parent.parent
9
+
10
+
11
+ def detect_version() -> str:
12
+ pkg = json.loads((SOURCE_ROOT / "package.json").read_text(encoding="utf-8"))
13
+ version = pkg["version"]
14
+ if version == "0.0.0":
15
+ releng_location = next(enumerate_releng_locations(), None)
16
+ if releng_location is not None:
17
+ sys.path.insert(0, str(releng_location.parent))
18
+ from releng.frida_version import detect
19
+ version = detect(SOURCE_ROOT).name
20
+ return version
21
+
22
+
23
+ def enumerate_releng_locations() -> Iterator[Path]:
24
+ val = os.environ.get("MESON_SOURCE_ROOT")
25
+ if val is not None:
26
+ parent_releng = Path(val) / "releng"
27
+ if releng_location_exists(parent_releng):
28
+ yield parent_releng
29
+
30
+ local_releng = SOURCE_ROOT / "releng"
31
+ if releng_location_exists(local_releng):
32
+ yield local_releng
33
+
34
+
35
+ def releng_location_exists(location: Path) -> bool:
36
+ return (location / "frida_version.py").exists()
37
+
38
+
39
+ if __name__ == "__main__":
40
+ print(detect_version())