Compare commits

..
249 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås a867b71193 subprojects: Prepare for release 2024-05-17 07:26:28 +02:00
Ole André Vadla RavnåsandHåvard Sørbø c0fb9c61ef darwin: Hint at macOS boot arguments when helper crashes
See #524 for more information.

Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-15 12:11:21 +02:00
Ole André Vadla Ravnås a287a4c4a6 subprojects: Bump outdated 2024-05-14 21:30:45 +02:00
Ole André Vadla Ravnås 145f293d70 submodules: Bump releng 2024-05-14 21:30:45 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 29a0e9a790 barebone: Factor out uint64 helpers to base
Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-14 14:47:12 +02:00
Ole André Vadla Ravnås 868483aa44 buffer: Make the constructors more ergonomic
It's more common to override the byte order than to override the pointer
size.
2024-05-14 14:41:02 +02:00
Håvard Sørbø 70581cde0f buffer: Fix the read_string() size logic
We need to determine the size before calling substring(), to avoid
violating the API contract.
2024-05-14 14:34:13 +02:00
Ole André Vadla RavnåsandHåvard Sørbø fa71e1f995 buffer: Add read_fixed_string()
Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-14 14:33:42 +02:00
Ole André Vadla Ravnås 6fbb7d9747 unwind-sitter: Fix unused-code warnings 2024-05-14 14:20:26 +02:00
Ole André Vadla Ravnås fa7696e09f linux: Fix inject_library_blob() on modern Android
Turns out we weren't setting the file-descriptor's SELinux context in
the memfd code-path.

Kudos to @romainthomas for reporting.

Fixes #480.
2024-05-14 12:24:25 +02:00
Ole André Vadla Ravnås 7a02f1ce4b subprojects: Bump outdated 2024-05-14 06:47:27 +02:00
Ole André Vadla Ravnås 1ac04c8336 submodules: Bump releng 2024-05-14 06:47:27 +02:00
Yannis Juglaret 298bed528c windows: Use RW/RX permissions for injection
- Use a dedicated memory page for the injected code.
- Use RW permissions when writing the injected code and data.
- Switch the code page to RX permissions after writing.

This makes Frida injection compatible with more software. In particular,
Mozilla Firefox rejects thread startup if the start address is RWX.
2024-05-13 13:33:02 -07:00
Francesco Tamagni ab28e3369d darwin: Massage libunwind around Frida hooks (#515)
The problem this change intends to solve is that, currently, with code
like this:

    NSURL * url = nil;
    @try
    {
        [NSBundle bundleWithURL:url];
    }
    @catch (id err)
    {
        NSLog (@"No worries mate!");
    }

If there's any Frida hook, either via Interceptor or via NativeCallback
swizzling like ObjC.implement(), anywhere in the call stack between the
raise and the catch of the exception, libunwind fails to find the
exception handler. This leads to uncaught exceptions which wouldn't
happen without instrumentation.

When libunwind fails to unwind it usually means it can't resolve the
unwind info, and it can happen for two different reasons:

1. libunwind asks dyld, via _dyld_find_unwind_sections(), but if
   frida-agent is injected then dyld doesn't know about it and libunwind
   gives up on the first instruction pointer to any of frida-agent's
   code on the stack (as normally happens for swizzling-like hooks).
2. In case of Interceptor, for function-aware hooks, the original return
   address on the stack is replaced with the one needed to implement
   onLeave() which belongs to a runtime-generated code thunk, therefore
   missing its mapping to unwind info.

This solution addresses the two above problems directly, via the new
UnwindSitter component:

1. By hooking _dyld_find_unwind_sections() to provide the right unwind
   info for the "invader".
2. By hooking UnwindCursor::setInfoBasedOnIPRegister() to call
   gum_invocation_stack_translate() on the return address to restore the
   original one on the stack at unwind-time.

All of this can be disabled via the `unwind-sitter:off` frida-agent
option.
2024-05-13 22:29:20 +02:00
Francesco Tamagni 05df3f7ae6 darwin: Take Interceptor and Cloak locks in TSM
To extend the ThreadSuspendMonitor scope to prevent deadlock scenarios
where threads holding the Cloak or Interceptor lock get suspended.
2024-05-13 06:31:32 -07:00
Ole André Vadla Ravnås 5623ac5821 subprojects: Bump outdated 2024-05-13 15:15:36 +02:00
Ole André Vadla Ravnås 438d02359f subprojects: Bump outdated 2024-05-10 07:40:35 +02:00
Ole André Vadla Ravnås 3cc3013118 submodules: Bump releng 2024-05-10 07:40:35 +02:00
Ole André Vadla Ravnås 7ddd751168 compat: Fix depfile autogen when Ninja emits quotes
Which happens when a path contains spaces.
2024-05-09 09:17:50 +02:00
Ole André Vadla Ravnås c5052da99e compat: Improve depfile autogen to preserve absolute paths
As relative paths cannot be generated for files on different Windows
drives.
2024-05-09 07:57:04 +02:00
Ole André Vadla Ravnås d9240e8a10 subprojects: Bump outdated 2024-05-09 00:27:11 +02:00
Ole André Vadla Ravnås 0041614b60 compat: Generate a proper depfile with all inputs
Turns out compile_commands.json only lists a subset of the inputs, so we
would end up generating an incomplete depfile, causing unreliable
incremental builds.

So to solve this, we instead query Ninja for the inputs of each target.
This also gives us better granularity, as previously all of the outputs
would have the same inputs, and would all get invalidated if only one of
them changed.
2024-05-09 00:26:07 +02:00
Ole André Vadla Ravnås 7dfeeb907e payload: Work around GLib.Private warning on Darwin 2024-05-08 23:28:21 +02:00
Ole André Vadla Ravnås 12e89223f6 tests: Demote Compiler tests to slow mode on iOS
They're too memory-hungry for the Corellium instance used by our CI.
2024-05-08 22:51:51 +02:00
Ole André Vadla Ravnås d04bdc8522 tests: Relax System test to not expect icons on iOS
There seems to be an issue retrieving them on Corellium.
2024-05-08 22:51:51 +02:00
Ole André Vadla Ravnås 1fdc33ed62 tests: Align iOS/tvOS entitlements with frida-server 2024-05-08 22:15:29 +02:00
Ole André Vadla RavnåsandHåvard Sørbø f3f88c0a9f ci: Add Gadget assets to the iOS test bundle
Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 15:52:30 +02:00
Ole André Vadla Ravnås e2190da932 ci: Fix Compiler tests on Android
By setting TMPDIR so the tests are able to create temporary files.
2024-05-08 15:52:30 +02:00
Ole André Vadla RavnåsandHåvard Sørbø d7c01dd473 ci: Limit Android tests to arm64 for now
Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 15:52:30 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 00a460f178 ci: Limit macOS tests to macOS 11 for now
Calling __CFInitialize() early has become problematic, and we will have
to deal with that later.

Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 15:52:30 +02:00
Ole André Vadla Ravnås 6c26d8fd24 ci: Fix Apple certificate setup on macOS 13
The base64 tool doesn't support the long form options.
2024-05-08 15:52:30 +02:00
Ole André Vadla Ravnås 03ab29581c ci: Do macOS/x86_64 on macos-13, arm64 on -latest
So that tests built for x86_64 run without emulation, and for arm64
we're always testing on the latest OS.
2024-05-08 15:52:30 +02:00
Ole André Vadla Ravnås 88e9e104f8 ci: Fix the mobile job for Android
The macos-latest runner image has Android NDK r26, whereas we need r25.
2024-05-08 15:52:30 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 7d20dbe75d tests: Detect whether iOS/tvOS arm64e cross-arch can be tested
Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 15:52:12 +02:00
Ole André Vadla Ravnås 88722317c6 tests: Disable connectivity tests on Android for now 2024-05-08 15:52:08 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 7232beff5f meson: Fix frida-helper entitlements on iOS and tvOS
They were accidentally omitted after the build system restructuring.

Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 15:12:18 +02:00
Ole André Vadla Ravnås 999ea4511f darwin: Handle all exceptions during early instrumentation
So we can fail early in case of a crash, instead of waiting for the
timeout.
2024-05-08 13:58:45 +02:00
Ole André Vadla Ravnås de336045bc darwin: Fix racy teardown of InjectInstance dispatch source
Need to cancel the source and wait for the cancellation handler to be
called before releasing the Mach port being monitored.
2024-05-08 13:55:15 +02:00
Ole André Vadla Ravnås ce67d0d15d tests: Make log file names more succinct 2024-05-08 13:55:01 +02:00
Ole André Vadla Ravnås 83e8f8927c tests: Make temporary file names unique
To avoid clashes when Meson spawns multiple instances of the runner.
2024-05-08 13:54:58 +02:00
Ole André Vadla Ravnås 25a662c68a darwin: Fix racy teardown of SpawnInstance dispatch source
Need to cancel the source and wait for the cancellation handler to be
called before releasing the Mach port being monitored.
2024-05-08 13:54:52 +02:00
Ole André Vadla Ravnås a8b72883c8 compat: Omit 64-bit compat for 32-bit host archs
It just isn't useful anymore. There used to be a need for this back when
wanting to build a plugin for a 32-bit only tool, so that it would still
be able to interact with 64-bit targets. Those days are long gone.
2024-05-08 13:54:49 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 366c587350 compat: Add Meson summary entry
To make it less opaque what's actually going to be built, especially
when set to auto.

Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 13:54:39 +02:00
Ole André Vadla RavnåsandHåvard Sørbø bc68df266c compat: Add support for multilib GCC on Linux
Co-authored-by: Håvard Sørbø <[email protected]>
2024-05-08 13:54:35 +02:00
Ole André Vadla Ravnås cc2ef2a43c compat: Fail if explicitly enabled and toolchain is missing 2024-05-08 13:54:29 +02:00
Ole André Vadla Ravnås 8cf0c6bf81 compat: Bubble up error details to Meson 2024-05-08 13:54:25 +02:00
Ole André Vadla Ravnås 299b671348 compat: Enable for Linux/x86{,_64} by default 2024-05-08 13:54:22 +02:00
Ole André Vadla Ravnås 56fc62272f compat: Only build for Linux if we have a compiler 2024-05-08 13:54:18 +02:00
Ole André Vadla Ravnås f70b645d13 tests: Ensure Gadget is built before running tests 2024-05-08 13:54:09 +02:00
Ole André Vadla Ravnås ae89d494c9 tests: Omit Gadget suite when Gadget is disabled 2024-05-08 13:54:03 +02:00
Ole André Vadla Ravnås c372d7d820 tests: Wire up macOS/arm64(e) cross-arch logic 2024-05-08 13:54:00 +02:00
Ole André Vadla Ravnås 0c5dc1fcb4 labrats: Add macOS/arm64e executables 2024-05-08 13:53:56 +02:00
Ole André Vadla Ravnås 8d58fe8c58 labrats: Add include needed for PATH_MAX on Apple OSes 2024-05-08 13:53:50 +02:00
Ole André Vadla Ravnås 883ac6eaf5 meson: Fix the cross-arch testability check 2024-05-08 13:53:45 +02:00
Ole André Vadla Ravnås c9a57c2b66 meson: Make the compat checks a bit clearer 2024-05-08 13:53:41 +02:00
Ole André Vadla Ravnås c43019a855 compat: Add support for MinGW-w64 2024-05-08 13:53:33 +02:00
Ole André Vadla Ravnås 115cdad39f compat: Support having a triplet per set of outputs 2024-05-08 13:53:27 +02:00
Ole André Vadla Ravnås ab946b6171 compat: Migrate to make full use of host_config 2024-05-08 13:53:24 +02:00
Ole André Vadla Ravnås 8f4d63e705 meson: Add host_config detection for MSVC and MinGW 2024-05-08 13:53:20 +02:00
Ole André Vadla Ravnås 0c1b2c7bf6 tests: Skip the Compiler suite on QNX
Due to temporary files being tricky, and this feature not being that
useful on QNX anyway.
2024-05-08 13:53:08 +02:00
Ole André Vadla Ravnås d3008d6eec compat: Pass allowed prebuilds to configure()
So the nested build uses the same preference.
2024-05-08 13:53:03 +02:00
Ole André Vadla Ravnås 5e3052400c submodules: Bump releng 2024-05-08 13:52:59 +02:00
Ole André Vadla Ravnås fdde6db25e meson: Lower GLib requirement to 2.72
To make it possible to use the system GLib on GitHub's Linux runners,
where the latest is Ubuntu 22.04 LTS.
2024-05-02 20:27:38 +00:00
Ole André Vadla Ravnås 485333d430 subprojects: Bump outdated 2024-05-02 13:30:39 +02:00
Ole André Vadla Ravnås 211d37b331 submodules: Bump releng 2024-05-02 13:30:38 +02:00
Ole André Vadla Ravnås 69bf559d8e linux: Assert that memfd write() succeeds
For now, until we improve our error-handling.
2024-05-02 11:21:28 +00:00
Ole André Vadla Ravnås 252e3e440b meson: Disable C compiler warnings on GCC < 5 2024-05-02 11:17:26 +00:00
Ole André Vadla Ravnås b0b27b9b90 compat: Limit forwarding of machine-specific options
Only forward them if they're either for the build machine, or
they're project options for the host machine.
2024-05-01 14:28:08 +02:00
Ole André Vadla Ravnås 9367cc56e0 compat: Omit when building for Apple's simulators
There's no point in supporting arm64e there.
2024-05-01 14:15:09 +02:00
Ole André Vadla Ravnås 0f4f45c07f subprojects: Bump outdated 2024-05-01 08:02:46 +02:00
Ole André Vadla Ravnås 0405390f11 submodules: Bump releng 2024-05-01 08:02:46 +02:00
Ole André Vadla Ravnås c20559aac8 subprojects: Bump outdated 2024-04-30 21:57:51 +00:00
Ole André Vadla Ravnås 5b43b0ba83 submodules: Bump releng 2024-04-30 21:57:51 +00:00
Ole André Vadla Ravnås 6eed206d68 compat: Omit tvOS for now
As the state of our arm64e support there is unknown.
2024-04-30 12:40:28 +02:00
Ole André Vadla Ravnås 2add9b66ef subprojects: Bump outdated 2024-04-30 12:35:38 +02:00
Ole André Vadla Ravnås 4c838088db meson: Fix host_os_family value for Android 2024-04-30 12:35:13 +02:00
Ole André Vadla Ravnås 2dc28fc617 subprojects: Bump outdated 2024-04-30 11:47:35 +02:00
Ole André Vadla RavnåsandHåvard Sørbø c47f3fa64e meson: Fix host_os value for Apple Simulator OSes
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-30 11:46:46 +02:00
Ole André Vadla Ravnås d1f43fde5f subprojects: Bump outdated 2024-04-30 11:28:30 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 9b9a5a96c6 compat: Fix forwarding of own project options when subproject
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-30 11:27:07 +02:00
Ole André Vadla Ravnås 7205721b69 darwin: Move off deprecated GModule API 2024-04-30 11:25:58 +02:00
Ole André Vadla Ravnås cb175ddc23 meson: Simplify by using host_machine.subsystem()
Available in newer versions of Meson.
2024-04-30 11:25:35 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 6bfd56e159 compiler: Reduce resource compression for dev builds
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-29 12:56:32 +00:00
Ole André Vadla Ravnås 1e5c2f6f87 subprojects: Bump outdated 2024-04-29 12:00:38 +00:00
Ole André Vadla Ravnås 4529365390 submodules: Bump releng 2024-04-29 12:00:38 +00:00
Ole André Vadla RavnåsandHåvard Sørbø 4fcfcb3ccd payload: Ensure dup3() is declared on Linux
Older libc versions don't have it.

Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-29 11:51:39 +00:00
Ole André Vadla Ravnås 16d14e1179 subprojects: Bump outdated 2024-04-28 14:42:02 +02:00
Ole André Vadla Ravnås 1138153f32 submodules: Bump releng 2024-04-28 14:42:02 +02:00
Ole André Vadla Ravnås da417fd46b subprojects: Bump outdated 2024-04-27 09:42:49 +02:00
Ole André Vadla Ravnås 43585e8242 submodules: Bump releng 2024-04-27 09:42:49 +02:00
Ole André Vadla Ravnås c063bb76bd subprojects: Bump outdated 2024-04-27 09:35:36 +02:00
Ole André Vadla Ravnås 122c6ba7d0 submodules: Bump releng 2024-04-27 09:35:36 +02:00
Ole André Vadla Ravnås 1ae221f271 subprojects: Bump outdated 2024-04-26 00:02:47 +02:00
Ole André Vadla Ravnås 3956c7475b submodules: Bump releng 2024-04-26 00:02:47 +02:00
Ole André Vadla Ravnås a027796b46 subprojects: Bump outdated 2024-04-25 16:32:01 +02:00
Ole André Vadla Ravnås 3df08e881f meson: Fix devkit build when subproject
Where Meson catches us trying to use a file outside the subproject.
2024-04-25 16:30:42 +02:00
Ole André Vadla Ravnås 4e39c2a071 subprojects: Bump outdated 2024-04-24 23:52:00 +02:00
Ole André Vadla Ravnås 8ce8aec627 submodules: Bump releng 2024-04-24 23:51:59 +02:00
Ole André Vadla Ravnås a167ba9532 subprojects: Bump outdated 2024-04-24 13:34:34 +02:00
Ole André Vadla Ravnås 1641371c1e submodules: Bump releng 2024-04-24 13:34:34 +02:00
Ole André Vadla Ravnås cb4a2030cd detect-version: Improve naming 2024-04-24 10:48:25 +02:00
Ole André Vadla Ravnås deab91ad63 meson: Wire up project version detection 2024-04-24 10:41:11 +02:00
Ole André Vadla Ravnås fd72a88a68 compat: Fix query_releng_location() 2024-04-24 10:24:26 +02:00
Ole André Vadla Ravnås 98c8b623b4 compat: Refactor the releng location logic 2024-04-24 10:16:56 +02:00
Ole André Vadla Ravnås e84fa8d77e meson: Fix the test() argument list 2024-04-24 00:02:44 +02:00
Ole André Vadla Ravnås c99afc8bf9 meson: Drop exec bit and shebang from scripts
As we don't need this.

Also fix a few remaining cases of find_program() being misused.
2024-04-23 23:31:31 +02:00
Ole André Vadla Ravnås 4efa44f025 subprojects: Bump outdated 2024-04-23 11:57:22 +02:00
Ole André Vadla Ravnås d1af79dfb1 submodules: Bump releng 2024-04-23 11:57:21 +02:00
Ole André Vadla Ravnås 1d8a0f9f96 subprojects: Bump outdated 2024-04-23 11:28:31 +02:00
Ole André Vadla Ravnås 46c4a602d9 submodules: Bump releng 2024-04-23 11:28:30 +02:00
Ole André Vadla Ravnås d55c59cd2f meson: Compute version from VCS tags if unspecified 2024-04-22 22:55:04 +02:00
Ole André Vadla Ravnås 88a06bcf69 subprojects: Bump outdated 2024-04-22 15:55:15 +02:00
Ole André Vadla Ravnås d1f5106e23 submodules: Bump releng 2024-04-22 15:55:15 +02:00
Ole André Vadla RavnåsandHåvard Sørbø e81e1c61d8 subprojects: Pin frida-gum to latest revision
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-22 15:48:25 +02:00
Ole André Vadla RavnåsandHåvard Sørbø 880bd81b4d subprojects: Pin to versions in releng/deps.toml
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-22 15:47:55 +02:00
Ole André Vadla Ravnås 5a82d7734e meson: Post-process Android binaries using termux-elf-cleaner
Our legacy build system used to do this in a driver wrapper script.
2024-04-21 23:55:03 +02:00
Ole André Vadla Ravnås 03b5a8db47 meson: Fix a minor stylistic inconsistency in post-process.py 2024-04-21 23:53:28 +02:00
Ole André Vadla Ravnås 52005fdd08 base: Fix the p2p AgentSession registration logic
The refactoring in commit 4efb90a451 ended
up breaking p2p support entirely. Instead of registering an AgentSession
on the connection, we would register an AgentMessageTransmitter.
2024-04-21 13:58:49 +02:00
Ole André Vadla Ravnås 4bbd03496b meson: Handle libnice being a subproject
In which case Meson won't implicitly add --pkg=nice for us.
2024-04-19 23:51:54 +02:00
Ole André Vadla Ravnås 3f44bcaf9b vapi: Add gthread-2.0 placeholder 2024-04-19 23:39:46 +02:00
Ole André Vadla Ravnås 88f7af3e59 meson: Fix usrsctp check when it's a subproject
The current compiler.has_member() implementation's handling of the
`dependencies` keyword argument only supports external dependencies,
at least for now.

Given that the list of OSes we support where sconn_len is defined is
rather small, we might as well just mirror a subset of the logic in
usrsctp's header file.
2024-04-19 23:35:24 +02:00
Ole André Vadla Ravnås 59e756cc73 meson: Add fallback options for usrsctp 2024-04-19 11:58:52 +02:00
Ole André Vadla Ravnås bb7bab541f meson: Add wrap for libnice 2024-04-19 11:58:21 +02:00
Ole André Vadla Ravnås 93a562e3cb meson: Fix the compiler snapshot autogen logic 2024-04-19 10:59:55 +02:00
Ole André Vadla Ravnås 76c2a8670a meson: Fail early if Node.js or npm are missing or outdated
And improve consistency of argument ordering in the scripts.
2024-04-19 10:26:30 +02:00
Ole André Vadla Ravnås fec91cec76 meson: Fix confusing helper script main() argv usage 2024-04-18 23:07:55 +02:00
Ole André Vadla Ravnås 59dbda7bcc meson: Use provided directory for intermediate files
To avoid polluting build directories with files unknown to Meson, which
means it can't invalidate them when needed.
2024-04-18 22:43:36 +02:00
Ole André Vadla Ravnås 88229da0a3 meson: Declare remaining compiler data outputs 2024-04-18 22:36:48 +02:00
Ole André Vadla Ravnås b89e0a18cf meson: Use shutil.copy() for consistency
Should only use shutil.copyfile() when the metadata must be dropped.
2024-04-18 22:34:43 +02:00
Ole André Vadla Ravnås a685672422 meson: Improve the generated .pc metadata
- Clarify names and descriptions.
- Use Frida version instead of the project version.
2024-04-18 11:43:33 +02:00
Ole André Vadla Ravnås ecc52da19d compat: Forward options to all subprojects 2024-04-18 11:20:26 +02:00
Ole André Vadla Ravnås be98c35dc8 compat: Grab subprojects from parent when subproject 2024-04-18 11:19:49 +02:00
Ole André Vadla Ravnås 0007ffe406 compat: Relax releng directory check
As we don't really care if it's a directory or a symlink.
2024-04-18 11:15:20 +02:00
Ole André Vadla Ravnås 4e6018b38b compat: Remove TODO that has since been fixed 2024-04-17 23:59:06 +02:00
Ole André Vadla Ravnås aea565c7f5 meson: Tweak the frida_version option description 2024-04-17 23:52:42 +02:00
Ole André Vadla Ravnås 1504a1b40e submodules: Bump releng 2024-04-17 23:34:52 +02:00
Ole André Vadla Ravnås 04aba3636b meson: Revise the Frida version logic
- Add frida_version option, replacing the old way of looking for a
  FRIDA_VERSION preprocessor define. This allows a parent project to
  pass this option to us when we're a subproject.
- Propagate the option to Gum in case we end up building it.
2024-04-17 23:33:35 +02:00
Ole André Vadla Ravnås a0e2d53abc meson: Set project version to 0.0.0
To make it clear this project doesn't have its own release cycle.
2024-04-17 23:28:47 +02:00
Ole André Vadla Ravnås 9282b08972 compat: Wire up MachineSpec.config for Windows
Where MSVC vs MinGW is important, and the CRT flavor in the former case.
2024-04-16 23:34:54 +02:00
Ole André Vadla RavnåsandAli Sabil ef3325f998 compat: Fix the call_internal_meson() stdio logic
We shouldn't perform stdio redirection when the caller is doing it.

Co-authored-by: Ali Sabil <[email protected]>
2024-04-16 23:30:29 +02:00
Ole André Vadla Ravnås 0ca94b5919 submodules: Bump releng 2024-04-15 16:03:59 +02:00
Ole André Vadla Ravnås f14e65ef47 compat: Suppress configure() progress feedback 2024-04-11 12:30:14 +02:00
Ole André Vadla Ravnås d659875c40 submodules: Bump releng 2024-04-11 12:24:36 +02:00
Ole André Vadla Ravnås 1eba812781 compat: Ensure submodules are checked out
In the case when we're a subproject, our parent project doesn't have
releng, and we don't have releng checked out.
2024-04-11 11:52:20 +02:00
Ole André Vadla Ravnås e3ac0b1a85 compat: Remove unused function 2024-04-11 11:49:32 +02:00
Ole André Vadla Ravnås 7948a7134b compat: Move to using Meson wrappers in-process
To avoid issues where wrapper scripts mess with git submodules.
2024-04-11 08:19:11 +02:00
Ole André Vadla Ravnås aaca42b65a submodules: Bump releng 2024-04-11 08:18:55 +02:00
Ole André Vadla Ravnås b44d93756f compat: Only use parent project's releng if it exists
We cannot assume that the parent project uses the same infrastructure.
2024-04-11 06:42:31 +02:00
Ole André Vadla Ravnås 7dacb16e96 meson: Pass --pkg-config to mkdevkit.py
We should not be relying on it being on the PATH. And, when building
with our SDKs, we need the argument that defines the SDK prefix.
2024-04-10 14:35:23 +02:00
Ole André Vadla Ravnås ddd178ea90 meson: Move to the new mkdevkit.py option encoding 2024-04-10 14:32:16 +02:00
Ole André Vadla Ravnås 8285158dd0 meson: Use project's mkdevkit.py when subproject 2024-04-10 14:32:15 +02:00
Ole André Vadla Ravnås 4feef30d2c submodules: Bump releng 2024-04-10 14:21:47 +02:00
Ole André Vadla Ravnås 1ea6dffb7a meson: Expose vapidir in internal dep and .pc 2024-04-09 13:35:35 +02:00
Ole André Vadla Ravnås 9d19215263 meson: Expose the same variables to internal dep as .pc 2024-04-09 13:32:55 +02:00
Ole André Vadla Ravnås 5983c4cff6 meson: Fix a minor stylistic inconsistency 2024-04-09 13:30:37 +02:00
Ole André Vadla Ravnås 2f02e356ee meson: Move to new Gum dep variable naming and semantics 2024-04-09 13:29:32 +02:00
Ole André Vadla RavnåsandHåvard Sørbø d0379f0649 compiler: Eat stdout/stderr during agent generation
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-08 13:48:25 +02:00
Ole André Vadla RavnåsandHåvard Sørbø a8ccc63281 compat: Fix releng and Meson imports when subproject
Co-authored-by: Håvard Sørbø <[email protected]>
2024-04-08 13:47:11 +02:00
Ole André Vadla Ravnås fac71657e5 submodules: Bump releng 2024-04-07 14:41:20 +02:00
Ole André Vadla Ravnås 309811928f submodules: Bump releng 2024-04-07 08:58:37 +02:00
Ole André Vadla Ravnås 77c71d75e1 compat: Fix forwarding of options when subproject 2024-04-07 08:22:59 +02:00
Ole André Vadla Ravnås fb94038271 compat: Tweak order of classes and constants 2024-04-07 07:17:55 +02:00
Ole André Vadla Ravnås eafaa22e5b compat: Adapt to the new releng env API 2024-04-07 07:14:37 +02:00
Ole André Vadla Ravnås 002beb85a4 submodules: Bump releng 2024-04-07 07:13:36 +02:00
Ole André Vadla Ravnås 41b87c1d47 meson: Add architecture compatibility automation
For supporting targets with a different architecture, such as 32-bit
processes on a 64-bit system.

Up until now this required multiple build directories, and passing in
options to specify where the other helper and agent binaries reside.

This was however quite painful, as it required a meta build system to
automate these steps. Getting incremental builds working reliably was
also quite difficult. It also exposed the user to platform-specific
implementation details.
2024-03-27 14:02:27 +01:00
Ole André Vadla Ravnås 42bc0706f0 gadget: Rename raw target to frida-gadget-raw
So that the `frida-gadget` target name becomes unique and there's no
need to suffix it with `:custom`. In this way we can refer to it through
a Makefile wrapper.
2024-03-27 14:02:26 +01:00
Ole André Vadla Ravnås 36711566bb agent: Rename raw target to frida-agent-raw
So that the `frida-agent` target name becomes unique and there's no
need to suffix it with `:custom`. In this way we can refer to it
through a Makefile wrapper.
2024-03-27 14:02:25 +01:00
Ole André Vadla Ravnås 1b9590182b submodules: Bump releng 2024-03-27 14:02:23 +01:00
Ole André Vadla Ravnås 2e45025f43 linjector: Make inject_library_file_with_template() public
As it's needed by LinuxHostSession.
2024-03-27 13:44:21 +01:00
Ole André Vadla Ravnås fe9dafe57c meson: Improve helper and agent options logic
- When passing in an already built helper/agent, allow specifying just
  one of modern/legacy, and having the other one default to an internal
  binary if the architecture matches. Each option can also be set to an
  empty string for it to not be embedded at all.
- Ensure embed-$flavor.py target depends on the helper/agent target when
  the internally built binary is used.
2024-03-22 22:49:13 +01:00
Ole André Vadla Ravnås 0dd73fd8f7 git: Update gitignore 2024-03-22 11:45:07 +01:00
Ole André Vadla Ravnås d96c5fd497 submodules: Bump releng 2024-03-21 23:26:02 +01:00
Ole André Vadla Ravnås 686a255a02 submodules: Bump releng 2024-03-21 22:27:15 +01:00
Ole André Vadla Ravnås ae1f27a3eb msvs: Drop the MSVS build system
Maintaining it alongside our Meson build system is too much of a burden.
2024-03-21 22:00:25 +01:00
Ole André Vadla Ravnås 477b094bdd submodules: Bump releng 2024-03-20 22:24:47 +01:00
Ole André Vadla Ravnås 84084b1f51 submodules: Bump releng 2024-03-20 12:51:54 +01:00
Ole André Vadla Ravnås eb2383433e submodules: Bump releng 2024-03-20 10:40:06 +01:00
Ole André Vadla Ravnås d8e0ad51de meson: Install the generated .gir 2024-03-19 23:07:59 +01:00
Ole André Vadla Ravnås 1e6d6652a2 embed-helper: Fix the lipo invocation 2024-03-19 22:42:13 +01:00
Ole André Vadla Ravnås 66b8e9ce7b submodules: Bump releng 2024-03-19 22:07:38 +01:00
Ali Sabil ac6c5729bf meson: Mark the labrat files as dependencies to the test suite (#511) 2024-03-19 21:59:30 +01:00
Ole André Vadla Ravnås cae3f27f91 submodules: Bump releng 2024-03-19 21:58:38 +01:00
Ole André Vadla Ravnås 35ba4a6783 submodules: Bump releng 2024-03-14 15:14:41 +01:00
Ole André Vadla Ravnås 5827e47b74 meson: Omit .vapi from publicly visible dependency
So that consuming projects don't need a Vala compiler to use us as a
subproject.
2024-03-14 15:07:10 +01:00
Ole André Vadla Ravnås 489eed918b meson: Simplify some bits by using newer syntax 2024-03-14 15:05:37 +01:00
Ole André Vadla Ravnås 2e8a1bd3f3 meson: Fix a stylistic inconsistency 2024-03-14 14:38:24 +01:00
Ole André Vadla Ravnås 51384094d2 meson: Verify that our Vala compiler is being used
To avoid confusing errors later in the build process.
2024-03-14 13:41:39 +01:00
Ole André Vadla RavnåsandHåvard Sørbø a21aadc2b5 base: Fix racy crash in custom GSource implementations
When thread A is in a GSource finalizer blocked on unregister_source(),
meaning its ref count is zero, thread B would be walking the Gee.Map of
sources to potentially update their ready time. Thread B would be doing
this with the recursive lock held, but since the loop had an owned
GSource variable, it would result in each source being reffed and
subsequently unreffed. This meant that the ref count would once again go
from one down to zero, triggering a second call to the finalizer. This
would in turn call unregister_source(), instantly acquire the recursive
lock a second time, and mutate the Map that is currently being iterated.

So to avoid all of this we make sure that we use an unowned variable for
the source while iterating. The alternative would have been to make a
copy of the Map before walking it, but that's unnecessary overhead,
along with the redundant ref count updates it would entail.

Co-authored-by: Håvard Sørbø <[email protected]>
2024-03-14 12:38:31 +01:00
Ole André Vadla Ravnås 6c753d4f21 submodules: Bump releng 2024-03-14 12:24:12 +01:00
Ole André Vadla Ravnås fbb962b099 test-agent: Re-enable monitor features
They were previously disabled to avoid a bug on R^X systems, back when
Interceptor didn't correctly suspend threads.
2024-03-14 12:00:41 +01:00
Ole André Vadla Ravnås 8328d8bdb3 test-agent: Move thread suspend awareness test to slow mode
For now, until the deadlock it reproduces has been fixed. What happens
is that the suspended thread holds Gum's dlmalloc lock in the moment
when it gets suspended. So when the thread that suspended it carries on
and calls a hooked function, it ends up needing to allocate memory, and
deadlocks trying to get the dlmalloc lock.
2024-03-14 09:38:54 +01:00
Ole André Vadla Ravnås cb5eaff241 ci: Add CI 2024-03-14 00:24:08 +01:00
Ole André Vadla Ravnås 747f285ea0 linux: Fix unreliable exec transition logic
The file-descriptors aren't necessarily closed until the second trap,
which meant we could get stuck waiting.
2024-03-14 00:24:08 +01:00
Ole André Vadla Ravnås 5c7bffe952 session-glue: Add missing windows.h include 2024-03-14 00:24:08 +01:00
Ole André Vadla Ravnås 4e7445de62 vapi: Add libselinux.vapi
Migrated from our selinux repo, so we can evolve it with less friction.
2024-03-14 00:24:08 +01:00
Ole André Vadla Ravnås aa728b7b80 subprojects: Remove wraps covered by Gum 2024-03-14 00:24:08 +01:00
Ole André Vadla Ravnås 70023a5601 meson: Overhaul the build system
- Replace shell scripts with Python scripts.
- Generalize scripts to avoid duplication.
- Use Meson's fs module instead of depending on UNIX tools.
- Support command arrays more widely.
- Add support for MSVC.
- Add support for building devkits.
- Add support for picking backends to include.
- Wire up tests.
- Move to native path-building syntax.
2024-03-14 00:24:08 +01:00
Ole André Vadla Ravnås c3fdf7aa74 submodules: Bump releng 2024-03-14 00:24:00 +01:00
Ole André Vadla Ravnås 3d2140bc65 tests: Assume Gadget test runs from local build directory 2024-03-14 00:10:36 +01:00
Ole André Vadla Ravnås e24662eaf7 submodules: Bump releng 2024-03-13 23:15:59 +01:00
Ole André Vadla Ravnås e0c205ca45 android: Fix child-gating of execl() and friends
By instead hooking the internal __execve() if we can find it.
2024-03-09 00:46:20 +01:00
Ole André Vadla Ravnås 46d7ef18c9 Port to the new Gum vapi 2024-03-09 00:46:07 +01:00
Ole André Vadla Ravnås 44879c9d92 tests: Merge Android test runner scripts into one
Which uses the local build directory only.
2024-03-09 00:46:03 +01:00
Ole André Vadla Ravnås a8bcbb5bff submodules: Bump releng 2024-03-08 20:47:37 +01:00
Ole André Vadla Ravnås 97fbc5aea0 agent: Fix hang in child-gating fork() scenarios
Reproducible in situations where pidfd_getfd() is available but not
permitted, such as inside Docker containers.

The hang was caused by the agent's control file-descriptor being cloaked
twice. Creating a GSocket wrapping a file-descriptor results in it
getting cloaked automatically, so we shouldn't manually cloak it in this
case.

The stale cloak entry meant that our FileDescriptorGuard close() hook
would prevent our loader from actually closing the other end of the
socketpair(). Since the injector hasn't copied that file-descriptor due
to EPERM, we would get stuck waiting instead of failing and using our
fallback strategy.
2024-03-08 14:48:33 +00:00
Ole André Vadla Ravnås 60a70aa27d agent: Fix fd_guard nullability 2024-03-08 14:47:29 +00:00
Håvard SørbøandOle André Vadla Ravnås 98f5773815 modulate: Gracefully handle missing symbols
Which may happen in case of compiler runtime code on some systems. This
is still fine as we don't need to reorder those specific entries, only
our own.

Co-authored-by: Ole André Vadla Ravnås <[email protected]>
2024-03-08 13:04:48 +00:00
Ole André Vadla Ravnås 3cbefad1cd linux: Fix dangerous casts from void * to uint64
Where sign-extension may occur on 32-bit architectures, depending on the
compiler.
2024-03-08 12:56:29 +00:00
Ole André Vadla Ravnås 7999a19eb4 linux: Fix early instrumentation on certain 32-bit systems
Where the MSB of `r_brk` is set, and the cast from `void *` to `uint64`
results in sign extension.
2024-03-08 12:56:24 +00:00
Ole André Vadla Ravnås cd684d6586 linux: Fix unreliable injection when libc is absent
Such as early in the process lifetime, and in targets without an RTLD.

The range chosen by our ProcessCodeSwapScope could happen to overlap
with the program's ELF header, which we would subsequently parse and
then carry on to fail in spectacular ways.

So for the case when libc is absent, instead of attempting the full
bootstrap right away, only perform mmap() and then return. Since we
now allocate enough for both the bootstrapper and the loader, we can
eliminate the second mmap() in the case when libc is already there.
2024-03-08 12:56:20 +00:00
Ole André Vadla Ravnås 463d69dbdc helpers: Improve Makefile to support isolated build envs 2024-03-08 12:56:12 +00:00
Ole André Vadla Ravnås bb6ba98351 tests: Fix hang on exit
By ensuring that Test.Process.kill() actually kills on system where
we're using GSubprocess.
2024-03-08 12:56:05 +00:00
Ole André Vadla Ravnås 245920be09 tests: Print error message when compiler test fails 2024-03-08 12:56:00 +00:00
Ole André Vadla Ravnås 258c23fb60 tests: Remove fragile assertion about time spent 2024-03-08 12:55:56 +00:00
Ole André Vadla Ravnås 51793d49ba tests: Remove MSVS build system special cases 2024-03-08 12:55:50 +00:00
Ole André Vadla Ravnås 1478112b6c tests: Remove bad assertion in provider_available test 2024-03-08 12:55:41 +00:00
Ole André Vadla Ravnås 6ea9403d33 host-session-service: Fix start() and stop() with zero backends 2024-03-08 12:55:35 +00:00
Ole André Vadla Ravnås 01221fa78d meson: Accept c99 if gnu99 is not available 2024-03-08 12:55:25 +00:00
Ole André Vadla Ravnås c578b1b3d7 resource-compiler: Simplify the toolchain help output 2024-03-08 12:55:22 +00:00
Ole André Vadla Ravnås 0ed777f864 resource-compiler: Quote .incbin paths
So the .S output is usable on Windows, and paths containing quotes won't
result in the code failing to assemble.
2024-03-08 12:55:17 +00:00
Ole André Vadla Ravnås 8020c9506e resource-compiler: Improve machine support
Previously only the MSVS build system made use of --machine, but we
now pass this option in other cases too, to avoid special-casing based
on the toolchain being used.
2024-03-08 12:55:12 +00:00
Ole André Vadla Ravnås 0ebdf63f4d submodules: Bump releng 2024-03-08 12:55:06 +00:00
s1341 319c70ed51 compiler: Bump @types/frida-gum (#502) 2024-03-07 00:09:22 +01:00
Yotam a613f181d6 meson: Add wrap files for more of our dependencies (#440) 2024-03-06 21:54:27 +01:00
Ole André Vadla Ravnås f6be92347c meson: Sync scripts with releng/meson-scripts 2024-02-27 14:45:14 +01:00
Ole André Vadla Ravnås 75698b8b3f submodules: Bump releng 2024-02-27 14:44:30 +01:00
Ole André Vadla Ravnås bf32d2e9bf submodules: Bump releng 2024-02-27 13:33:10 +00:00
Ole André Vadla Ravnås 63d16f57c7 meson: Add missing backend libs when used as a subproject 2024-02-26 23:34:25 +01:00
Ole André Vadla Ravnås 56c8d2d205 compiler: Fix warning when building without backend 2024-02-26 23:10:32 +01:00
Ole André Vadla Ravnås ea3728373b compiler: Support building without its backend
To reduce compilation times when used as a subproject in a consumer that
doesn't need the compiler, such as frida-node.
2024-02-26 22:59:36 +01:00
Ole André Vadla Ravnås 188e9d5605 meson: Add more granular control over built features
- gadget, server, portal, inject: enabled by default unless used as a
  subproject.
- tests: enabled by default unless used as a subproject, or we are
  unable to run host binaries.
2024-02-26 22:56:02 +01:00
Ole André Vadla Ravnås aa52b894fc meson: Rename options file to the new preferred name 2024-02-26 22:04:18 +01:00
Ole André Vadla Ravnås 19e162c282 meson: Require Meson >= 1.1.0 2024-02-26 22:03:54 +01:00
Ole André Vadla Ravnås 3596457983 meson: Remove redundant option default values 2024-02-26 21:44:27 +01:00
Ole André Vadla Ravnås 8aa80adfad meson: Add missing dependencies when used as a subproject 2024-02-26 21:40:58 +01:00
Ole André Vadla Ravnås a075acaf49 meson: Improve the config.h include logic
- Use the full path to avoid ambiguity when used as a subproject.
- Handle MSVC.
2024-02-26 21:28:26 +01:00
Ole André Vadla Ravnås 98bb927618 meson: Add support for being used as a subproject 2024-02-26 16:06:59 +01:00
Ole André Vadla Ravnås cceb78b308 meson: Add wrap for frida-gum 2024-02-26 15:32:30 +01:00
Ole André Vadla Ravnås 869a527a18 build: Add wrapper scripts to simplify building 2024-02-26 15:30:47 +01:00
Ole André Vadla Ravnås 534dee39b2 libc-shim: Add missing _GNU_SOURCE define
Now that we no longer set this define project-wide.
2024-02-22 14:48:24 +00:00
Ole André Vadla Ravnås 52596edbd6 msvs: Re-enable warnings for Vala-generated code
To align with Meson's new behavior.
2024-02-22 14:31:28 +01:00
Ole André Vadla Ravnås de5708cd49 windows: Move off deprecated GLib APIs 2024-02-22 14:20:47 +01:00
Ole André Vadla Ravnås 862df8a116 p2p-glue: Move off deprecated GLib APIs 2024-02-22 14:20:47 +01:00
Ole André Vadla Ravnås eaebc8fcb5 spawn-monitor: Make internal caller TLV static
To avoid running out of resources after many instantiations.
2024-02-21 23:38:07 +01:00
Ole André Vadla Ravnås 6a8fcf501a linux: Remove unused format string parameter 2024-02-21 16:14:00 +01:00
Ole André Vadla Ravnås 28eaf9bd92 meson: Do not define _GNU_SOURCE
The Vala compiler does it for us where needed.
2024-02-21 16:13:25 +01:00
Ole André Vadla Ravnås 7ae6bf3202 socket: Move to the new libsoup 3.2 APIs 2024-02-21 16:12:59 +01:00
Ole André Vadla Ravnås d70321265c Move off deprecated GLib APIs 2024-02-21 16:12:39 +01:00
Ole André Vadla Ravnås 6749b837d3 resource-compiler: Remove unused variable 2024-02-21 16:11:45 +01:00
199 changed files with 4872 additions and 7418 deletions

No files matched your search

+1
View File
@@ -0,0 +1 @@
/.github/workflows/ @oleavr
@@ -0,0 +1,39 @@
name: Set up Apple codesigning certificates
description: Set up certificates needed for codesigning when building for Apple OSes
inputs:
certificates-p12:
required: true
description: The certificates to use for codesigning, as a base64-encoded .p12
certificates-password:
required: true
description: The password for the .p12
keychain-password:
required: true
description: The keychain password to use
runs:
using: composite
steps:
- name: Install the Apple certificates
env:
CERTIFICATES_P12: ${{ inputs.certificates-p12 }}
CERTIFICATES_PASSWORD: ${{ inputs.certificates-password }}
KEYCHAIN_PASSWORD: ${{ inputs.keychain-password }}
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/apple-certificates.p12
KEYCHAIN_PATH=$RUNNER_TEMP/frida-signing.keychain-db
echo -n "$CERTIFICATES_P12" | base64 -d -o $CERTIFICATE_PATH
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security import $CERTIFICATE_PATH -P "$CERTIFICATES_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
rm $CERTIFICATE_PATH
(
MACOS_CERTID=$(security find-identity -v -p codesigning | grep "Developer ID Application: " | awk '{ print $2 }')
IOS_CERTID=$(security find-identity -v -p codesigning | grep "Apple Development: " | awk '{ print $2 }')
echo MACOS_CERTID=$MACOS_CERTID
echo IOS_CERTID=$IOS_CERTID
echo WATCHOS_CERTID=$IOS_CERTID
echo TVOS_CERTID=$IOS_CERTID
) >> $GITHUB_ENV
shell: bash
+230
View File
@@ -0,0 +1,230 @@
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
FRIDA_CORE_OPTIONS: '--with-devkits=core --enable-tests'
jobs:
native:
strategy:
matrix:
include:
- { id: windows-x86_64, runner: '"windows-latest"' }
- { id: windows-x86, runner: '"windows-latest"' }
- { id: macos-x86_64, runner: '"macos-11"' }
- { id: macos-arm64, runner: '"macos-latest"' }
- { id: linux-x86_64, runner: '"ubuntu-latest"' }
- { id: linux-x86, runner: '"ubuntu-latest"' }
- { id: freebsd-arm64, runner: '["self-hosted", "freebsd", "arm64"]' }
fail-fast: false
runs-on: ${{ fromJSON(matrix.runner) }}
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Apple certificates
if: ${{ startsWith(matrix.id, 'macos-') }}
uses: ./.github/actions/setup-apple-certificates
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
- name: Relax macOS security policy to avoid prompts
if: ${{ startsWith(matrix.id, 'macos-') }}
run: sudo security authorizationdb write system.privilege.taskport allow
- name: Install gcc-multilib
if: matrix.id == 'linux-x86'
run: sudo apt-get install gcc-multilib lib32stdc++-11-dev
- name: Build
if: ${{ startsWith(matrix.id, 'windows-') }}
run: |
.\configure ${{ env.FRIDA_CORE_OPTIONS }}
.\make
- name: Build
if: ${{ !startsWith(matrix.id, 'windows-') && matrix.id != 'linux-x86' }}
run: |
./configure ${{ env.FRIDA_CORE_OPTIONS }}
make
- name: Build
if: matrix.id == 'linux-x86'
run: |
CC="gcc -m32" CXX="g++ -m32" STRIP="strip" \
./configure --build=linux-x86 --host=linux-x86 ${{ env.FRIDA_CORE_OPTIONS }}
make
- name: Upload devkit
if: ${{ !startsWith(matrix.id, 'linux-') }}
uses: actions/upload-artifact@v4
with:
name: core-devkit-${{ matrix.id }}
path: build/src/devkit/
- name: Test
if: matrix.id != 'macos-arm64'
run: make test
cross:
strategy:
matrix:
include:
- { id: windows-x86_64-mingw, opts: '--host=x86_64-w64-mingw32 --without-prebuilds=sdk:host', pkg: g++-mingw-w64-x86-64 }
- { id: windows-x86-mingw, opts: '--host=i686-w64-mingw32 --without-prebuilds=sdk:host', pkg: g++-mingw-w64-i686 }
- { id: linux-mips, opts: '--host=mips-linux-gnu', pkg: g++-mips-linux-gnu }
- { id: linux-mipsel, opts: '--host=mipsel-linux-gnu', pkg: g++-mipsel-linux-gnu }
- { id: linux-mips64, opts: '--host=mips64-linux-gnuabi64', pkg: g++-mips64-linux-gnuabi64 }
- { id: linux-mips64el, opts: '--host=mips64el-linux-gnuabi64', pkg: g++-mips64el-linux-gnuabi64 }
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install toolchain
run: sudo apt-get install ${{ matrix.pkg }}
- name: Build
run: |
./configure ${{ matrix.opts }} ${{ env.FRIDA_CORE_OPTIONS }}
make
- name: Upload devkit
if: ${{ !startsWith(matrix.id, 'linux-') }}
uses: actions/upload-artifact@v4
with:
name: core-devkit-${{ matrix.id }}
path: build/src/devkit/
manylinux:
strategy:
matrix:
arch: [x86, x86_64, x86_64-musl, armhf, arm64, arm64-musl, mips, mipsel, mips64, mips64el]
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build
run: |
./configure --host=$XTOOLS_HOST ${{ env.FRIDA_CORE_OPTIONS }}
make
- name: Upload devkit
uses: actions/upload-artifact@v4
with:
name: core-devkit-linux-${{ matrix.arch }}
path: build/src/devkit/
- name: Test
if: matrix.arch == 'x86' || matrix.arch == 'x86_64'
run: make test
mobile:
strategy:
matrix:
id:
- ios-arm64
- android-x86
- android-x86_64
- android-arm
- android-arm64
fail-fast: false
runs-on: ${{ startsWith(matrix.id, 'ios-') && 'macos-latest' || 'ubuntu-latest' }}
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Apple certificates
if: startsWith(matrix.id, 'ios-')
uses: ./.github/actions/setup-apple-certificates
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
- name: Build
run: |
./configure --host=${{ matrix.id }} ${{ env.FRIDA_CORE_OPTIONS }}
make
- name: Upload devkit
uses: actions/upload-artifact@v4
with:
name: core-devkit-${{ matrix.id }}
path: build/src/devkit/
- name: Package tests
run: |
mkdir -p /tmp/pkg
cd build
case ${{ matrix.id }} in
ios-*)
shlibext=.dylib
;;
android-*)
shlibext=.so
;;
esac
cp -a tests/frida-tests tests/labrats lib/agent/frida-agent$shlibext /tmp/pkg/
case ${{ matrix.id }} in
ios-*)
cp -a lib/gadget/frida-gadget.dylib ../tests/test-gadget-standalone.js /tmp/pkg/
;;
esac
tar -C /tmp/pkg -czf /tmp/runner.tar.gz .
- name: Test on Corellium iOS device
if: matrix.id == 'ios-arm64'
uses: frida/corellium-action@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
gateway: corellium.frida.re
device: ios-12.5.7-arm64
upload: /tmp/runner.tar.gz
run: |
cd /usr/local
rm -rf opt/frida
mkdir -p opt/frida
cd opt/frida
tar xf $ASSET_PATH
./frida-tests
- name: Test on Corellium Android device
if: matrix.id == 'android-arm64'
uses: frida/corellium-action@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
gateway: corellium.frida.re
device: android-8.1.0-arm64
upload: /tmp/runner.tar.gz
run: |
cd /data/local/tmp
tar xf $ASSET_PATH
TMPDIR=/data/local/tmp ./frida-tests
qnx-armeabi:
runs-on: ubuntu-latest
container: ghcr.io/frida/qnx-tools:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build
run: |
CFLAGS="--sysroot=$QNX_TARGET/armle-v7" \
./configure --host=arm-unknown-nto-qnx6.5.0eabi ${{ env.FRIDA_CORE_OPTIONS }}
make
- name: Upload devkit
uses: actions/upload-artifact@v4
with:
name: core-devkit-qnx-armeabi
path: build/src/devkit/
- name: Test
run: |
mkdir -p /tmp/pkg
cd build
cp -a tests/frida-tests tests/labrats lib/agent/frida-agent.so /tmp/pkg/
tar -C /tmp/pkg -cf /tmp/runner.tar .
/opt/sabrelite/run.sh /tmp/runner.tar /opt/frida/frida-tests
+3 -4
View File
@@ -1,7 +1,5 @@
*.user
/lib/xnu/build/
/lib/xnu/FridaKernelAgent.xcodeproj/project.xcworkspace/xcuserdata/
/lib/xnu/FridaKernelAgent.xcodeproj/xcuserdata/
/build/
/deps/
/src/barebone/helpers/memory-scanner/target/
/src/barebone/helpers/target/
/src/barebone/node_modules/
@@ -10,3 +8,4 @@
/src/fruity/helpers/build/
/src/linux/helpers/build/
/src/linux/helpers/ext/
/subprojects/*
+3
View File
@@ -0,0 +1,3 @@
[submodule "releng"]
path = releng
url = https://github.com/frida/releng.git
+6
View File
@@ -0,0 +1,6 @@
all: .DEFAULT
.DEFAULT:
@gmake ${.MAKEFLAGS} ${.TARGETS}
.PHONY: all
+16
View File
@@ -0,0 +1,16 @@
PYTHON ?= $(shell which python3 >/dev/null && echo python3 || echo python)
all $(MAKECMDGOALS):
@$(PYTHON) \
-c "import sys; sys.path.insert(0, sys.argv[1]); from releng.meson_make import main; main()" \
"$(shell pwd)" \
./build \
$(MAKECMDGOALS)
git-submodules:
@if [ ! -f releng/meson/meson.py ]; then \
git submodule update --init --recursive --depth 1; \
fi
-include git-submodules
.PHONY: all $(MAKECMDGOALS)
+619
View File
@@ -0,0 +1,619 @@
from __future__ import annotations
import argparse
import base64
from collections import OrderedDict
from dataclasses import dataclass, field
import itertools
import os
from pathlib import Path
import pickle
import platform
import shlex
import shutil
import subprocess
import sys
import tempfile
import traceback
from typing import Any, Literal, Mapping, Optional, Sequence
REPO_ROOT = Path(__file__).resolve().parent.parent
NINJA = os.environ.get("NINJA", "ninja")
Role = Literal["project", "subproject"]
def main(argv):
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
command = subparsers.add_parser("setup", help="setup everything needed to compile")
command.add_argument("role", help="project vs subproject", choices=["project", "subproject"])
command.add_argument("builddir", help="build directory", type=Path)
command.add_argument("top_builddir", help="top build directory", type=Path)
command.add_argument("frida_version", help="the Frida version")
command.add_argument("host_os", help="operating system binaries are being built for")
command.add_argument("host_arch", help="architecture binaries are being built for")
command.add_argument("host_config", help="configuration binaries are being built for")
command.add_argument("compat", help="support for targets with a different architecture",
type=parse_compat_option_value)
command.add_argument("assets", help="whether assets are embedded vs installed and loaded at runtime")
command.add_argument("components", help="which components will be built",
type=parse_array_option_value)
command.add_argument("compilers", help="compiler command arrays", nargs="+")
command.set_defaults(func=lambda args: setup(args.role,
args.builddir,
args.top_builddir,
args.frida_version,
args.host_os,
args.host_arch,
args.host_config if args.host_config else None,
args.compat,
args.assets,
args.components,
parse_compilers(args.compilers)))
command = subparsers.add_parser("compile", help="compile compatibility assets")
command.add_argument("privdir", help="directory to store intermediate files", type=Path)
command.add_argument("state", help="opaque state from the setup step")
command.set_defaults(func=lambda args: compile(args.privdir, pickle.loads(base64.b64decode(args.state))))
args = parser.parse_args()
if "func" in args:
try:
args.func(args)
except subprocess.CalledProcessError as e:
print(e, file=sys.stderr)
print("Output:\n\t| " + "\n\t| ".join(e.output.strip().split("\n")), file=sys.stderr)
sys.exit(1)
else:
parser.print_usage(file=sys.stderr)
sys.exit(1)
def parse_compat_option_value(v: str) -> set[str]:
vals = parse_array_option_value(v)
if len(vals) > 1:
for choice in {"auto", "disabled"}:
if choice in vals:
raise argparse.ArgumentTypeError(f"the compat '{choice}' choice cannot be combined with other choices")
return vals
def parse_array_option_value(v: str) -> set[str]:
return {v.strip() for v in v.split(",")}
def parse_compilers(compilers: list[str]) -> Compilers:
cc = pop_cmd_array_arg(compilers)
cpp = pop_cmd_array_arg(compilers)
return Compilers(cc, cpp)
def pop_cmd_array_arg(args: list[str]) -> list[str]:
result: list[str] = []
first = args.pop(0)
assert first == ">>>"
while True:
cur = args.pop(0)
if cur == "<<<":
break
result.append(cur)
if len(result) == 1 and not result[0]:
return None
return result
def setup(role: Role,
builddir: Path,
top_builddir: Path,
frida_version: str,
host_os: str,
host_arch: str,
host_config: Optional[str],
compat: set[str],
assets: str,
components: set[str],
compilers: Compilers):
try:
outputs: Mapping[str, Sequence[Output]] = OrderedDict()
outputs[OutputGroup(arch=None)] = [Output("arch_support_bundle", "arch-support.bundle", Path("compat"), "")]
releng_location = query_releng_location(role)
ensure_submodules_checked_out(releng_location)
configure_import_path(releng_location)
auto_detect = "auto" in compat
if auto_detect:
if host_os in {"windows", "macos", "linux", "ios", "tvos", "android"}:
summary = f"enabled by default for {host_os}-{host_arch}"
compat = {"native", "emulated"}
else:
summary = f"disabled by default for {host_os}-{host_arch}"
compat = set()
elif "disabled" in compat:
summary = "disabled by user"
compat = set()
else:
summary = "enabled by user"
if "native" in compat:
have_toolchain = True
other_triplet: Optional[str] = None
extra_environ: dict[str, str] = {}
if host_os == "windows" and host_arch == "x86_64" and host_config == "mingw":
other_triplet = "i686-w64-mingw32"
have_toolchain = shutil.which(other_triplet + "-gcc") is not None
elif host_os == "linux" and host_arch == "x86_64" and host_config is None:
other_triplet = "i686-linux-gnu"
have_toolchain = shutil.which(other_triplet + "-gcc") is not None
if not have_toolchain:
with (tempfile.NamedTemporaryFile(mode="w", encoding="utf-8", suffix=".c") as probe_c,
tempfile.NamedTemporaryFile(delete=False) as probe_executable):
try:
probe_c.write("int main (void) { return 0; }")
probe_c.flush()
p = subprocess.run(compilers.cc + ["-m32", probe_c.name, "-o", probe_executable.name],
capture_output=True)
if p.returncode == 0:
extra_environ["CC"] = shlex.join(compilers.cc + ["-m32"])
extra_environ["CXX"] = shlex.join(compilers.cpp + ["-m32"])
have_toolchain = True
finally:
try:
os.unlink(probe_executable.name)
except:
pass
if not have_toolchain:
if not auto_detect:
raise ToolchainNotFoundError(f"unable to locate toolchain for {other_triplet}")
summary = "disabled due to missing toolchain for {other_triplet}"
if host_os == "windows" and host_arch == "x86_64" and have_toolchain:
group = OutputGroup("x86", other_triplet, extra_environ)
outputs[group] = [
Output(identifier="helper_legacy",
name=HELPER_FILE_WINDOWS.name,
file=HELPER_FILE_WINDOWS,
target=HELPER_TARGET),
Output(identifier="agent_legacy",
name=AGENT_FILE_WINDOWS.name,
file=AGENT_FILE_WINDOWS,
target=AGENT_TARGET),
]
if "gadget" in components:
outputs[group] += [
Output(identifier="gadget_legacy",
name=GADGET_FILE_WINDOWS.name,
file=GADGET_FILE_WINDOWS,
target=GADGET_TARGET),
]
if host_os in {"macos", "ios"} and host_arch in {"arm64e", "arm64"} and host_config != "simulator":
if host_arch == "arm64e":
other_arch = "arm64"
kind = "legacy"
else:
other_arch = "arm64e"
kind = "modern"
group = OutputGroup(other_arch)
outputs[group] = [
Output(identifier=f"helper_{kind}",
name=f"frida-helper-{other_arch}",
file=HELPER_FILE_UNIX,
target=HELPER_TARGET),
Output(identifier=f"agent_{kind}",
name=f"frida-agent-{other_arch}.dylib",
file=AGENT_FILE_DARWIN,
target=AGENT_TARGET),
]
if "gadget" in components:
outputs[group] += [
Output(identifier=f"gadget_{kind}",
name=f"frida-gadget-{other_arch}.dylib",
file=GADGET_FILE_DARWIN,
target=GADGET_TARGET),
]
if "server" in components and assets == "installed":
outputs[group] += [
Output(identifier=f"server_{kind}",
name=f"frida-server-{other_arch}",
file=SERVER_FILE_UNIX,
target=SERVER_TARGET),
]
if host_os == "linux" and host_arch == "x86_64" and have_toolchain:
group = OutputGroup("x86", other_triplet, extra_environ)
outputs[group] = [
Output(identifier="helper_legacy",
name=HELPER_FILE_UNIX.name,
file=HELPER_FILE_UNIX,
target=HELPER_TARGET),
Output(identifier="agent_legacy",
name=AGENT_FILE_ELF.name,
file=AGENT_FILE_ELF,
target=AGENT_TARGET),
]
if "gadget" in components:
outputs[group] += [
Output(identifier="gadget_legacy",
name=GADGET_FILE_ELF.name,
file=GADGET_FILE_ELF,
target=GADGET_TARGET),
]
if host_os == "android" and host_arch in {"arm64", "x86_64"}:
group = OutputGroup("arm" if host_arch == "arm64" else "x86")
outputs[group] = [
Output(identifier="helper_legacy",
name=HELPER_FILE_UNIX.name,
file=HELPER_FILE_UNIX,
target=HELPER_TARGET),
Output(identifier="agent_legacy",
name=AGENT_FILE_ELF.name,
file=AGENT_FILE_ELF,
target=AGENT_TARGET),
]
if "gadget" in components:
outputs[group] += [
Output(identifier="gadget_legacy",
name=GADGET_FILE_ELF.name,
file=GADGET_FILE_ELF,
target=GADGET_TARGET),
]
if "emulated" in compat:
if host_os == "android" and host_arch in {"x86_64", "x86"}:
outputs[OutputGroup("arm")] = [
Output(identifier="agent_emulated_legacy",
name="frida-agent-arm.so",
file=AGENT_FILE_ELF,
target=AGENT_TARGET),
]
if host_arch == "x86_64":
outputs[OutputGroup("arm64")] = [
Output(identifier="agent_emulated_modern",
name="frida-agent-arm64.so",
file=AGENT_FILE_ELF,
target=AGENT_TARGET),
]
raw_allowed_prebuilds = os.environ.get("FRIDA_ALLOWED_PREBUILDS")
allowed_prebuilds = set(raw_allowed_prebuilds.split(",")) if raw_allowed_prebuilds is not None else None
state = State(role, builddir, top_builddir, frida_version, host_os, host_config, allowed_prebuilds, outputs)
serialized_state = base64.b64encode(pickle.dumps(state)).decode('ascii')
variable_names, output_names = zip(*[(output.identifier, output.name) \
for output in itertools.chain.from_iterable(outputs.values())])
print("ok")
print(summary)
print(f"{','.join(variable_names)}")
print(f"{','.join(output_names)}")
print(DEPFILE_FILENAME)
print(serialized_state)
except Exception as e:
print(f"error {e}")
print("")
print(traceback.format_exception(e))
class ToolchainNotFoundError(Exception):
pass
@dataclass
class Compilers:
cc: list[str]
cpp: list[str]
@dataclass
class State:
role: Role
builddir: Path
top_builddir: Path
frida_version: str
host_os: str
host_config: Optional[str]
allowed_prebuilds: Optional[set[str]]
outputs: Mapping[OutputGroup, Sequence[Output]]
@dataclass
class OutputGroup:
arch: Optional[str]
triplet: Optional[str] = None
extra_environ: dict[str, str] = field(default_factory=dict)
def __eq__(self, other):
if isinstance(other, OutputGroup):
return other.arch == self.arch
return False
def __hash__(self):
return hash(self.arch)
@dataclass
class Output:
identifier: str
name: str
file: Path
target: str
def compile(privdir: Path, state: State):
releng_location = query_releng_location(state.role)
subprojects = detect_relevant_subprojects(releng_location)
if state.role == "subproject":
grab_subprojects_from_parent(subprojects, releng_location)
configure_import_path(releng_location)
from releng.env import call_meson
from releng.machine_spec import MachineSpec
from releng.meson_configure import configure
from releng.meson_make import make
def call_internal_meson(argv, *args, **kwargs):
if "stdout" not in kwargs and "stderr" not in kwargs:
silenced_kwargs = {
**kwargs,
"stdout": subprocess.PIPE,
"stderr": subprocess.STDOUT,
"encoding": "utf-8",
}
else:
silenced_kwargs = kwargs
return call_meson(argv, *args, **silenced_kwargs)
options: Optional[Sequence[str]] = None
build_env = scrub_environment(os.environ)
build_env["FRIDA_RELENG"] = str(releng_location)
top_builddir = state.top_builddir
depfile_lines = []
for group, outputs in state.outputs.items():
if group.arch is None:
for o in outputs:
(state.builddir / o.name).write_bytes(b"")
continue
workdir = (privdir / group.arch).resolve()
if not (workdir / "build.ninja").exists():
if options is None:
options = load_meson_options(top_builddir, state.role, set(subprojects.keys()))
version_opt = next((opt for opt in options if opt.startswith("-Dfrida_version=")), None)
if version_opt is None:
options += [f"-Dfrida_version={state.frida_version}"]
host_machine = MachineSpec(state.host_os, group.arch, state.host_config, group.triplet)
configure(sourcedir=REPO_ROOT,
builddir=workdir,
host_machine=host_machine,
environ={**build_env, **group.extra_environ},
allowed_prebuilds=state.allowed_prebuilds,
extra_meson_options=[
"-Dhelper_modern=",
"-Dhelper_legacy=",
"-Dagent_modern=",
"-Dagent_legacy=",
"-Dagent_emulated_modern=",
"-Dagent_emulated_legacy=",
*options,
],
call_meson=call_internal_meson,
on_progress=lambda progress: None)
make(sourcedir=REPO_ROOT,
builddir=workdir,
targets=[o.target for o in outputs],
environ=build_env,
call_meson=call_internal_meson)
for o in outputs:
shutil.copy(workdir / o.file, state.builddir / o.name)
output_relpath = (workdir / o.name).relative_to(top_builddir).as_posix()
input_paths = shlex.split(subprocess.run([NINJA, "-t", "inputs", o.file],
cwd=workdir,
capture_output=True,
encoding="utf-8",
check=True).stdout)
input_entries = []
for raw_path in input_paths:
path = Path(raw_path)
if not path.is_absolute():
path = Path(os.path.relpath(workdir / path, top_builddir))
input_entries.append(quote(path.as_posix()))
depfile_lines.append(f"{output_relpath}: {' '.join(input_entries)}")
(state.builddir / DEPFILE_FILENAME).write_text("\n".join(depfile_lines), encoding="utf-8")
def load_meson_options(top_builddir: Path,
role: Role,
subprojects: set[str]) -> Sequence[str]:
from mesonbuild import coredata
return [f"-D{adapt_key(k, role)}={v.value}" for k, v in coredata.load(top_builddir).options.items()
if option_should_be_forwarded(k, v, role, subprojects)]
def adapt_key(k: "OptionKey", role: Role) -> "OptionKey":
if role == "subproject" and k.subproject == "frida-core":
return k.as_root()
return k
def option_should_be_forwarded(k: "OptionKey",
v: "coredata.UserOption[Any]",
role: Role,
subprojects: set[str]) -> bool:
from mesonbuild import coredata
our_project_id = "frida-core" if role == "subproject" else ""
is_for_us = k.subproject == our_project_id
is_for_child = k.subproject in subprojects
if k.is_project():
if is_for_us:
tokens = k.name.split("_")
if tokens[0] in {"helper", "agent"} and tokens[-1] in {"modern", "legacy"}:
return False
if k.subproject and k.machine is not coredata.MachineChoice.HOST:
return False
return is_for_us or is_for_child
if coredata.CoreData.is_per_machine_option(k):
return k.machine is coredata.MachineChoice.BUILD
if k.is_builtin():
if k.name in {"buildtype", "genvslite"}:
return False
if not str(v.value):
return False
if k.module == "python":
if k.name == "install_env" and v.value == "prefix":
return False
if not str(v.value):
return False
return is_for_us or is_for_child
def scrub_environment(env: Mapping[str, str]) -> Mapping[str, str]:
from releng.env import TOOLCHAIN_ENVVARS
clean_env = OrderedDict()
envvars_to_avoid = {*TOOLCHAIN_ENVVARS, *MSVS_ENVVARS}
for k, v in env.items():
if k in envvars_to_avoid:
continue
if k.upper() == "PATH" and platform.system() == "Windows":
v = scrub_windows_devenv_dirs_from_path(v, env)
clean_env[k] = v
return clean_env
def scrub_windows_devenv_dirs_from_path(raw_path: str, env: Mapping[str, str]) -> str:
raw_vcinstalldir = env.get("VCINSTALLDIR")
if raw_vcinstalldir is None:
return raw_path
vcinstalldir = Path(raw_vcinstalldir)
clean_entries = []
for raw_entry in raw_path.split(";"):
entry = Path(raw_entry)
if entry.is_relative_to(vcinstalldir):
continue
if "WINDOWS KITS" in [p.upper() for p in entry.parts]:
continue
clean_entries.append(raw_entry)
return ";".join(clean_entries)
def quote(path: str) -> str:
if " " not in path:
return path
return "\"" + path.replace ("\"", "\\\"") + "\""
def query_releng_location(role: Role) -> Path:
if role == "subproject":
candidate = REPO_ROOT.parent.parent / "releng"
if candidate.exists():
return candidate
return REPO_ROOT / "releng"
def ensure_submodules_checked_out(releng_location: Path):
if not (releng_location / "meson" / "meson.py").exists():
subprocess.run(["git", "submodule", "update", "--init", "--recursive", "--depth", "1", "releng"],
cwd=releng_location.parent,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
encoding="utf-8",
check=True)
def detect_relevant_subprojects(releng_location: Path) -> dict[str, Path]:
subprojects = detect_relevant_subprojects_in(REPO_ROOT, releng_location)
gum_location = subprojects.get("frida-gum")
if gum_location is not None:
subprojects.update(detect_relevant_subprojects_in(gum_location, releng_location))
return subprojects
def detect_relevant_subprojects_in(repo_root: Path, releng_location: Path) -> dict[str, Path]:
result = {}
for f in (repo_root / "subprojects").glob("*.wrap"):
name = f.stem
location = releng_location.parent / "subprojects" / name
if location.exists():
result[name] = location
return result
def grab_subprojects_from_parent(subprojects: dict[str, Path], releng_location: Path):
for name, location in subprojects.items():
subp_here = REPO_ROOT / "subprojects" / name
if subp_here.exists():
continue
try:
subp_here.symlink_to(location, target_is_directory=True)
continue
except OSError as e:
if not getattr(e, "winerror") == 1314:
raise e
subprocess.run(["git", "worktree", "add", subp_here],
cwd=location,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
encoding="utf-8",
check=True)
def configure_import_path(releng_location: Path):
sys.path.insert(0, str(releng_location / "meson"))
sys.path.insert(0, str(releng_location.parent))
STATE_FILENAME = "state.dat"
DEPFILE_FILENAME = "compat.deps"
HELPER_TARGET = "frida-helper"
HELPER_FILE_WINDOWS = Path("src") / "frida-helper.exe"
HELPER_FILE_UNIX = Path("src") / "frida-helper"
AGENT_TARGET = "frida-agent"
AGENT_FILE_WINDOWS = Path("lib") / "agent" / "frida-agent.dll"
AGENT_FILE_DARWIN = Path("lib") / "agent" / "frida-agent.dylib"
AGENT_FILE_ELF = Path("lib") / "agent" / "frida-agent.so"
GADGET_TARGET = "frida-gadget"
GADGET_FILE_WINDOWS = Path("lib") / "gadget" / "frida-gadget.dll"
GADGET_FILE_DARWIN = Path("lib") / "gadget" / "frida-gadget.dylib"
GADGET_FILE_ELF = Path("lib") / "gadget" / "frida-gadget.so"
SERVER_TARGET = "frida-server"
SERVER_FILE_UNIX = Path("server") / "frida-server"
MSVS_ENVVARS = {
"PLATFORM",
"VCINSTALLDIR",
"INCLUDE",
"LIB",
}
if __name__ == "__main__":
main(sys.argv)
+119
View File
@@ -0,0 +1,119 @@
helper_modern = get_option('helper_modern')
helper_legacy = get_option('helper_legacy')
helper_compat = ''
helper_depends = []
agent_modern = get_option('agent_modern')
agent_legacy = get_option('agent_legacy')
agent_compat = ''
agent_emulated_modern = get_option('agent_emulated_modern')
agent_emulated_legacy = get_option('agent_emulated_legacy')
agent_depends = []
gadget_compat = ''
gadget_depends = []
server_compat = ''
server_depends = []
no_overridden_compat_bits = \
helper_modern == 'auto' and helper_legacy == 'auto' \
and agent_modern == 'auto' and agent_legacy == 'auto' \
and agent_emulated_modern == 'auto' and agent_emulated_legacy == 'auto'
if no_overridden_compat_bits
build_py = [python, files('build.py')]
components = []
if build_gadget
components += 'gadget'
endif
if build_server
components += 'server'
endif
setup_result = run_command(build_py,
'setup',
meson.is_subproject() ? 'subproject' : 'project',
meson.current_build_dir(),
meson.global_build_root(),
frida_version,
host_os,
host_abi,
host_config,
','.join(get_option('compat')),
get_option('assets'),
','.join(components),
'--',
'>>>', cc.cmd_array(), '<<<',
'>>>', cpp.cmd_array(), '<<<',
check: true
)
setup_output = setup_result.stdout().strip()
if setup_output.startswith('error ')
error('compat/build.py setup failed:', setup_output.substring(6))
endif
lines = setup_output.split('\n')
assert(lines[0] == 'ok')
compat_summary = lines[1]
varnames = lines[2].split(',')
outputs = lines[3].split(',')
depfile = lines[4]
state = lines[5]
if host_os_family == 'darwin'
install = false
install_dir = asset_dir
else
install = true
install_dir = []
foreach varname : varnames
if varname != 'arch_support_bundle' and (get_option('assets') == 'installed' or varname.startswith('gadget_'))
install_dir += varname.endswith('_modern') ? asset_dir_modern : asset_dir_legacy
else
install_dir += false
endif
endforeach
endif
arch_support = custom_target('arch-support',
output: outputs,
command: [
build_py,
'compile',
'@PRIVATE_DIR@',
state,
],
depfile: depfile,
install: install,
install_dir: install_dir,
)
i = 0
foreach output : arch_support.to_list()
outpath = output.full_path()
varname = varnames[i]
set_variable(varname, outpath)
if varname.startswith('helper_')
helper_compat = outpath
helper_depends += arch_support
elif varname.startswith('agent_')
agent_compat = outpath
agent_depends += arch_support
elif varname.startswith('gadget_')
gadget_compat = outpath
gadget_depends += arch_support
elif varname.startswith('server_')
server_compat = outpath
server_depends += arch_support
elif varname != 'arch_support_bundle'
assert(false, f'unexpected variable name: @varname@')
endif
i += 1
endforeach
else
compat_summary = 'not available due to externally provided helper/agent assets'
endif
Vendored Executable
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
[ -z "$PYTHON" ] && PYTHON=$(which python3 >/dev/null && echo python3 || echo python)
cd $(dirname $0)
srcroot=$(pwd)
if [ ! -f releng/meson/meson.py ]; then
git submodule update --init --recursive --depth 1 || exit $?
fi
cd - >/dev/null
exec "$PYTHON" \
-c "import sys; sys.path.insert(0, sys.argv[1]); from releng.meson_configure import main; main()" \
"$srcroot" \
"$@"
+22
View File
@@ -0,0 +1,22 @@
@setlocal
@echo off
rem:: Based on: https://github.com/microsoft/terminal/issues/217#issuecomment-737594785
goto :_start_
:set_real_dp0
set dp0=%~dp0
set "dp0=%dp0:~0,-1%"
goto :eof
:_start_
call :set_real_dp0
if not exist "%dp0%\releng\meson\meson.py" (
pushd "%dp0%" & git submodule update --init --recursive --depth 1 & popd
if %errorlevel% neq 0 exit /b %errorlevel%
)
endlocal & goto #_undefined_# 2>nul || title %COMSPEC% & python ^
-c "import sys; sys.path.insert(0, sys.argv[1]); from releng.meson_configure import main; main()" ^
"%dp0%" ^
%*
-949
View File
@@ -1,949 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B7DC9B02-A5FF-4AA1-B2A2-DC1653168D44}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)src;$(IntDir)data;$(IntDir)..\frida-base-32;$(IntDir)..\frida-pipe-32;$(IntDir)..\frida-helper-backend-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>frida-base-32.lib;frida-pipe-32.lib;frida-helper-backend-32.lib;$(IntDir)data\frida-data-compiler-blob.obj;$(IntDir)data\frida-data-helper-blob.obj;$(IntDir)data\frida-data-agent-blob.obj;$(IntDir)data\frida-data-barebone-blob.obj;gum-32.lib;gumjs-inspector.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-pipe-32;$(IntDir)..\frida-helper-backend-32;$(IntDir)..\gum-32;$(IntDir)..\gumjs-inspector;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)src;$(IntDir)data;$(IntDir)..\frida-base-32;$(IntDir)..\frida-pipe-32;$(IntDir)..\frida-helper-backend-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>frida-base-32.lib;frida-pipe-32.lib;frida-helper-backend-32.lib;$(IntDir)data\frida-data-compiler-blob.obj;$(IntDir)data\frida-data-helper-blob.obj;$(IntDir)data\frida-data-agent-blob.obj;$(IntDir)data\frida-data-barebone-blob.obj;gum-32.lib;gumjs-inspector.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-pipe-32;$(IntDir)..\frida-helper-backend-32;$(IntDir)..\gum-32;$(IntDir)..\gumjs-inspector;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)src;$(IntDir)data;$(IntDir)..\frida-base-64;$(IntDir)..\frida-pipe-64;$(IntDir)..\frida-helper-backend-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>frida-base-64.lib;frida-pipe-64.lib;frida-helper-backend-64.lib;$(IntDir)data\frida-data-compiler-blob.obj;$(IntDir)data\frida-data-helper-blob.obj;$(IntDir)data\frida-data-agent-blob.obj;$(IntDir)data\frida-data-barebone-blob.obj;gum-64.lib;gumjs-inspector.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-pipe-64;$(IntDir)..\frida-helper-backend-64;$(IntDir)..\gum-64;$(IntDir)..\gumjs-inspector;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)src;$(IntDir)data;$(IntDir)..\frida-base-64;$(IntDir)..\frida-pipe-64;$(IntDir)..\frida-helper-backend-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>frida-base-64.lib;frida-pipe-64.lib;frida-helper-backend-64.lib;$(IntDir)data\frida-data-compiler-blob.obj;$(IntDir)data\frida-data-helper-blob.obj;$(IntDir)data\frida-data-agent-blob.obj;$(IntDir)data\frida-data-barebone-blob.obj;gum-64.lib;gumjs-inspector.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-pipe-64;$(IntDir)..\frida-helper-backend-64;$(IntDir)..\gum-64;$(IntDir)..\gumjs-inspector;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="src\helper.resources">
<FileType>Document</FileType>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Serializing Helper resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\windows.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Serializing Helper resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\windows.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Serializing Helper resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\windows.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Serializing Helper resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\windows.stamp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\helper.resources" -o "$(IntDir)data\frida-data-helper" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe" || exit 1
REM. &gt; "$(IntDir)data\windows.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\helper.resources" -o "$(IntDir)data\frida-data-helper" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe" || exit 1
REM. &gt; "$(IntDir)data\windows.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\helper.resources" -o "$(IntDir)data\frida-data-helper" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe" || exit 1
REM. &gt; "$(IntDir)data\windows.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\helper.resources" -o "$(IntDir)data\frida-data-helper" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-helper-32\frida-helper-32.exe" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-helper-64\frida-helper-64.exe" || exit 1
REM. &gt; "$(IntDir)data\windows.stamp"
</Command>
</CustomBuild>
<CustomBuild Include="src\agent.resources">
<FileType>Document</FileType>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll;$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll;$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll;$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Serializing Agent resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\agent.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Serializing Agent resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\agent.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Serializing Agent resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\agent.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Serializing Agent resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\agent.stamp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\agent.resources" -o "$(IntDir)data\frida-data-agent" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll" || exit 1
REM. &gt; "$(IntDir)data\agent.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\agent.resources" -o "$(IntDir)data\frida-data-agent" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll" || exit 1
REM. &gt; "$(IntDir)data\agent.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\agent.resources" -o "$(IntDir)data\frida-data-agent" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll" || exit 1
REM. &gt; "$(IntDir)data\agent.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\agent.resources" -o "$(IntDir)data\frida-data-agent" "$(SolutionDir)build\tmp-windows\Win32-$(ConfigurationName)\frida-agent-32\frida-agent-32.dll" "$(SolutionDir)build\tmp-windows\x64-$(ConfigurationName)\frida-agent-64\frida-agent-64.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-32.dll" "$(SolutionDir)frida-gum\ext\dbghelp\dbghelp-64.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-32.dll" "$(SolutionDir)frida-gum\ext\symsrv\symsrv-64.dll" || exit 1
REM. &gt; "$(IntDir)data\agent.stamp"
</Command>
</CustomBuild>
<CustomBuild Include="src\frida.vala">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compiling vala code</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mkdir "$(IntDir)data" 2&gt;NUL
mkdir "$(IntDir)src" 2&gt;NUL
"$(ValaCompiler)" src/frida.vala src/control-service.vala src/portal-service.vala src/host-session-service.vala src/agent-container.vala src/gdb.vala src/system.vala src/compiler/compiler.vala src/file-monitor.vala src/async-task.vala src/windows/windows-host-session.vala src/windows/winjector.vala src/windows/frida-helper-process.vala src/socket/socket-host-session.vala src/fruity/fruity-host-session.vala src/fruity/dtx.vala src/fruity/lockdown.vala src/fruity/installation-proxy.vala src/fruity/springboard-services.vala src/fruity/lldb.vala src/fruity/injector.vala src/fruity/usbmux.vala src/fruity/keyed-archive.vala src/fruity/plist.vala src/fruity/plist-service.vala src/droidy/droidy-host-session.vala src/droidy/droidy-client.vala src/droidy/jdwp.vala src/droidy/injector.vala src/droidy/axml.vala src/barebone/barebone-host-session.vala src/barebone/script.vala src/barebone/machine.vala src/barebone/allocator.vala src/barebone/callback.vala src/barebone/memory-scanner.vala src/barebone/interceptor.vala src/barebone/rust-module.vala src/barebone/arch-x86/machine.vala src/barebone/arch-x86_64/machine.vala src/barebone/arch-arm/machine.vala src/barebone/arch-arm64/machine.vala src/barebone/arch-unknown/machine.vala --ccode --directory=$(IntDir) --library=frida-core --gir=Frida-1.0.gir --header=$(IntDir)frida-core.h --symbols=$(IntDir)frida-core.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-pipe-32" --vapidir="$(IntDir)..\frida-pipe-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" --vapidir="$(IntDir)data" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gmodule-2.0 --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=libsoup-3.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-inspector-1.0 --pkg=libbrotlidec --pkg=quickjs --pkg=frida-base --pkg=frida-pipe --pkg=frida-helper-backend --pkg=frida-data-compiler --pkg=frida-data-helper --pkg=frida-data-agent --pkg=frida-data-barebone || exit 1
mkdir "$(IntDir)api" 2&gt;NUL
$(Python) "$(ProjectDir)src\api\generate.py" 1.0 "$(IntDir)frida-core.vapi" "$(IntDir)frida-core.h" "$(IntDir)..\frida-base-32\frida-base.vapi" "$(IntDir)..\frida-base-32\frida-base.h" "$(IntDir)api"
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ValaCompiler);$(ProjectDir)src\control-service.vala;$(ProjectDir)src\portal-service.vala;$(ProjectDir)src\host-session-service.vala;$(ProjectDir)src\agent-container.vala;$(ProjectDir)src\gdb.vala;$(ProjectDir)src\system.vala;$(ProjectDir)src\compiler\compiler.vala;$(ProjectDir)src\file-monitor.vala;$(ProjectDir)src\async-task.vala;$(ProjectDir)src\windows\windows-host-session.vala;$(ProjectDir)src\windows\winjector.vala;$(ProjectDir)src\windows\frida-helper-process.vala;$(ProjectDir)src\socket\socket-host-session.vala;$(ProjectDir)src\fruity\fruity-host-session.vala;$(ProjectDir)src\fruity\dtx.vala;$(ProjectDir)src\fruity\lockdown.vala;$(ProjectDir)src\fruity\installation-proxy.vala;$(ProjectDir)src\fruity\springboard-services.vala;$(ProjectDir)src\fruity\lldb.vala;$(ProjectDir)src\fruity\injector.vala;$(ProjectDir)src\fruity\usbmux.vala;$(ProjectDir)src\fruity\keyed-archive.vala;$(ProjectDir)src\fruity\plist.vala;$(ProjectDir)src\fruity\plist-service.vala;$(ProjectDir)src\droidy\droidy-host-session.vala;$(ProjectDir)src\droidy\droidy-client.vala;$(ProjectDir)src\droidy\jdwp.vala;$(ProjectDir)src\droidy\injector.vala;$(ProjectDir)src\droidy\axml.vala;$(ProjectDir)src\barebone\barebone-host-session.vala;$(ProjectDir)src\barebone\script.vala;$(ProjectDir)src\barebone\machine.vala;$(ProjectDir)src\barebone\allocator.vala;$(ProjectDir)src\barebone\callback.vala;$(ProjectDir)src\barebone\memory-scanner.vala;$(ProjectDir)src\barebone\interceptor.vala;$(ProjectDir)src\barebone\rust-module.vala;$(ProjectDir)src\barebone\arch-x86\machine.vala;$(ProjectDir)src\barebone\arch-x86_64\machine.vala;$(ProjectDir)src\barebone\arch-arm\machine.vala;$(ProjectDir)src\barebone\arch-arm64\machine.vala;$(ProjectDir)src\barebone\arch-unknown\machine.vala;$(IntDir)data\compiler.stamp;$(IntDir)data\windows.stamp;$(IntDir)data\agent.stamp;$(IntDir)data\barebone.stamp;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compiling vala code</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mkdir "$(IntDir)data" 2&gt;NUL
mkdir "$(IntDir)src" 2&gt;NUL
"$(ValaCompiler)" src/frida.vala src/control-service.vala src/portal-service.vala src/host-session-service.vala src/agent-container.vala src/gdb.vala src/system.vala src/compiler/compiler.vala src/file-monitor.vala src/async-task.vala src/windows/windows-host-session.vala src/windows/winjector.vala src/windows/frida-helper-process.vala src/socket/socket-host-session.vala src/fruity/fruity-host-session.vala src/fruity/dtx.vala src/fruity/lockdown.vala src/fruity/installation-proxy.vala src/fruity/springboard-services.vala src/fruity/lldb.vala src/fruity/injector.vala src/fruity/usbmux.vala src/fruity/keyed-archive.vala src/fruity/plist.vala src/fruity/plist-service.vala src/droidy/droidy-host-session.vala src/droidy/droidy-client.vala src/droidy/jdwp.vala src/droidy/injector.vala src/droidy/axml.vala src/barebone/barebone-host-session.vala src/barebone/script.vala src/barebone/machine.vala src/barebone/allocator.vala src/barebone/callback.vala src/barebone/memory-scanner.vala src/barebone/interceptor.vala src/barebone/rust-module.vala src/barebone/arch-x86/machine.vala src/barebone/arch-x86_64/machine.vala src/barebone/arch-arm/machine.vala src/barebone/arch-arm64/machine.vala src/barebone/arch-unknown/machine.vala --ccode --directory=$(IntDir) --library=frida-core --gir=Frida-1.0.gir --header=$(IntDir)frida-core.h --symbols=$(IntDir)frida-core.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-pipe-32" --vapidir="$(IntDir)..\frida-pipe-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" --vapidir="$(IntDir)data" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gmodule-2.0 --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=libsoup-3.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-inspector-1.0 --pkg=libbrotlidec --pkg=quickjs --pkg=frida-base --pkg=frida-pipe --pkg=frida-helper-backend --pkg=frida-data-compiler --pkg=frida-data-helper --pkg=frida-data-agent --pkg=frida-data-barebone || exit 1
mkdir "$(IntDir)api" 2&gt;NUL
$(Python) "$(ProjectDir)src\api\generate.py" 1.0 "$(IntDir)frida-core.vapi" "$(IntDir)frida-core.h" "$(IntDir)..\frida-base-64\frida-base.vapi" "$(IntDir)..\frida-base-64\frida-base.h" "$(IntDir)api"
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ValaCompiler);$(ProjectDir)src\control-service.vala;$(ProjectDir)src\portal-service.vala;$(ProjectDir)src\host-session-service.vala;$(ProjectDir)src\agent-container.vala;$(ProjectDir)src\gdb.vala;$(ProjectDir)src\system.vala;$(ProjectDir)src\compiler\compiler.vala;$(ProjectDir)src\file-monitor.vala;$(ProjectDir)src\async-task.vala;$(ProjectDir)src\windows\windows-host-session.vala;$(ProjectDir)src\windows\winjector.vala;$(ProjectDir)src\windows\frida-helper-process.vala;$(ProjectDir)src\socket\socket-host-session.vala;$(ProjectDir)src\fruity\fruity-host-session.vala;$(ProjectDir)src\fruity\dtx.vala;$(ProjectDir)src\fruity\lockdown.vala;$(ProjectDir)src\fruity\installation-proxy.vala;$(ProjectDir)src\fruity\springboard-services.vala;$(ProjectDir)src\fruity\lldb.vala;$(ProjectDir)src\fruity\injector.vala;$(ProjectDir)src\fruity\usbmux.vala;$(ProjectDir)src\fruity\keyed-archive.vala;$(ProjectDir)src\fruity\plist.vala;$(ProjectDir)src\fruity\plist-service.vala;$(ProjectDir)src\droidy\droidy-host-session.vala;$(ProjectDir)src\droidy\droidy-client.vala;$(ProjectDir)src\droidy\jdwp.vala;$(ProjectDir)src\droidy\injector.vala;$(ProjectDir)src\droidy\axml.vala;$(ProjectDir)src\barebone\barebone-host-session.vala;$(ProjectDir)src\barebone\script.vala;$(ProjectDir)src\barebone\machine.vala;$(ProjectDir)src\barebone\allocator.vala;$(ProjectDir)src\barebone\callback.vala;$(ProjectDir)src\barebone\memory-scanner.vala;$(ProjectDir)src\barebone\interceptor.vala;$(ProjectDir)src\barebone\rust-module.vala;$(ProjectDir)src\barebone\arch-x86\machine.vala;$(ProjectDir)src\barebone\arch-x86_64\machine.vala;$(ProjectDir)src\barebone\arch-arm\machine.vala;$(ProjectDir)src\barebone\arch-arm64\machine.vala;$(ProjectDir)src\barebone\arch-unknown\machine.vala;$(IntDir)data\compiler.stamp;$(IntDir)data\windows.stamp;$(IntDir)data\agent.stamp;$(IntDir)data\barebone.stamp;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compiling vala code</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mkdir "$(IntDir)data" 2&gt;NUL
mkdir "$(IntDir)src" 2&gt;NUL
"$(ValaCompiler)" src/frida.vala src/control-service.vala src/portal-service.vala src/host-session-service.vala src/agent-container.vala src/gdb.vala src/system.vala src/compiler/compiler.vala src/file-monitor.vala src/async-task.vala src/windows/windows-host-session.vala src/windows/winjector.vala src/windows/frida-helper-process.vala src/socket/socket-host-session.vala src/fruity/fruity-host-session.vala src/fruity/dtx.vala src/fruity/lockdown.vala src/fruity/installation-proxy.vala src/fruity/springboard-services.vala src/fruity/lldb.vala src/fruity/injector.vala src/fruity/usbmux.vala src/fruity/keyed-archive.vala src/fruity/plist.vala src/fruity/plist-service.vala src/droidy/droidy-host-session.vala src/droidy/droidy-client.vala src/droidy/jdwp.vala src/droidy/injector.vala src/droidy/axml.vala src/barebone/barebone-host-session.vala src/barebone/script.vala src/barebone/machine.vala src/barebone/allocator.vala src/barebone/callback.vala src/barebone/memory-scanner.vala src/barebone/interceptor.vala src/barebone/rust-module.vala src/barebone/arch-x86/machine.vala src/barebone/arch-x86_64/machine.vala src/barebone/arch-arm/machine.vala src/barebone/arch-arm64/machine.vala src/barebone/arch-unknown/machine.vala --ccode --directory=$(IntDir) --library=frida-core --gir=Frida-1.0.gir --header=$(IntDir)frida-core.h --symbols=$(IntDir)frida-core.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-pipe-32" --vapidir="$(IntDir)..\frida-pipe-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" --vapidir="$(IntDir)data" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gmodule-2.0 --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=libsoup-3.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-inspector-1.0 --pkg=libbrotlidec --pkg=quickjs --pkg=frida-base --pkg=frida-pipe --pkg=frida-helper-backend --pkg=frida-data-compiler --pkg=frida-data-helper --pkg=frida-data-agent --pkg=frida-data-barebone || exit 1
mkdir "$(IntDir)api" 2&gt;NUL
$(Python) "$(ProjectDir)src\api\generate.py" 1.0 "$(IntDir)frida-core.vapi" "$(IntDir)frida-core.h" "$(IntDir)..\frida-base-32\frida-base.vapi" "$(IntDir)..\frida-base-32\frida-base.h" "$(IntDir)api"
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ValaCompiler);$(ProjectDir)src\control-service.vala;$(ProjectDir)src\portal-service.vala;$(ProjectDir)src\host-session-service.vala;$(ProjectDir)src\agent-container.vala;$(ProjectDir)src\gdb.vala;$(ProjectDir)src\system.vala;$(ProjectDir)src\compiler\compiler.vala;$(ProjectDir)src\file-monitor.vala;$(ProjectDir)src\async-task.vala;$(ProjectDir)src\windows\windows-host-session.vala;$(ProjectDir)src\windows\winjector.vala;$(ProjectDir)src\windows\frida-helper-process.vala;$(ProjectDir)src\socket\socket-host-session.vala;$(ProjectDir)src\fruity\fruity-host-session.vala;$(ProjectDir)src\fruity\dtx.vala;$(ProjectDir)src\fruity\lockdown.vala;$(ProjectDir)src\fruity\installation-proxy.vala;$(ProjectDir)src\fruity\springboard-services.vala;$(ProjectDir)src\fruity\lldb.vala;$(ProjectDir)src\fruity\injector.vala;$(ProjectDir)src\fruity\usbmux.vala;$(ProjectDir)src\fruity\keyed-archive.vala;$(ProjectDir)src\fruity\plist.vala;$(ProjectDir)src\fruity\plist-service.vala;$(ProjectDir)src\droidy\droidy-host-session.vala;$(ProjectDir)src\droidy\droidy-client.vala;$(ProjectDir)src\droidy\jdwp.vala;$(ProjectDir)src\droidy\injector.vala;$(ProjectDir)src\droidy\axml.vala;$(ProjectDir)src\barebone\barebone-host-session.vala;$(ProjectDir)src\barebone\script.vala;$(ProjectDir)src\barebone\machine.vala;$(ProjectDir)src\barebone\allocator.vala;$(ProjectDir)src\barebone\callback.vala;$(ProjectDir)src\barebone\memory-scanner.vala;$(ProjectDir)src\barebone\interceptor.vala;$(ProjectDir)src\barebone\rust-module.vala;$(ProjectDir)src\barebone\arch-x86\machine.vala;$(ProjectDir)src\barebone\arch-x86_64\machine.vala;$(ProjectDir)src\barebone\arch-arm\machine.vala;$(ProjectDir)src\barebone\arch-arm64\machine.vala;$(ProjectDir)src\barebone\arch-unknown\machine.vala;$(IntDir)data\compiler.stamp;$(IntDir)data\windows.stamp;$(IntDir)data\agent.stamp;$(IntDir)data\barebone.stamp;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compiling vala code</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mkdir "$(IntDir)data" 2&gt;NUL
mkdir "$(IntDir)src" 2&gt;NUL
"$(ValaCompiler)" src/frida.vala src/control-service.vala src/portal-service.vala src/host-session-service.vala src/agent-container.vala src/gdb.vala src/system.vala src/compiler/compiler.vala src/file-monitor.vala src/async-task.vala src/windows/windows-host-session.vala src/windows/winjector.vala src/windows/frida-helper-process.vala src/socket/socket-host-session.vala src/fruity/fruity-host-session.vala src/fruity/dtx.vala src/fruity/lockdown.vala src/fruity/installation-proxy.vala src/fruity/springboard-services.vala src/fruity/lldb.vala src/fruity/injector.vala src/fruity/usbmux.vala src/fruity/keyed-archive.vala src/fruity/plist.vala src/fruity/plist-service.vala src/droidy/droidy-host-session.vala src/droidy/droidy-client.vala src/droidy/jdwp.vala src/droidy/injector.vala src/droidy/axml.vala src/barebone/barebone-host-session.vala src/barebone/script.vala src/barebone/machine.vala src/barebone/allocator.vala src/barebone/callback.vala src/barebone/memory-scanner.vala src/barebone/interceptor.vala src/barebone/rust-module.vala src/barebone/arch-x86/machine.vala src/barebone/arch-x86_64/machine.vala src/barebone/arch-arm/machine.vala src/barebone/arch-arm64/machine.vala src/barebone/arch-unknown/machine.vala --ccode --directory=$(IntDir) --library=frida-core --gir=Frida-1.0.gir --header=$(IntDir)frida-core.h --symbols=$(IntDir)frida-core.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-pipe-32" --vapidir="$(IntDir)..\frida-pipe-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" --vapidir="$(IntDir)data" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gmodule-2.0 --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=libsoup-3.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-inspector-1.0 --pkg=libbrotlidec --pkg=quickjs --pkg=frida-base --pkg=frida-pipe --pkg=frida-helper-backend --pkg=frida-data-compiler --pkg=frida-data-helper --pkg=frida-data-agent --pkg=frida-data-barebone || exit 1
mkdir "$(IntDir)api" 2&gt;NUL
$(Python) "$(ProjectDir)src\api\generate.py" 1.0 "$(IntDir)frida-core.vapi" "$(IntDir)frida-core.h" "$(IntDir)..\frida-base-64\frida-base.vapi" "$(IntDir)..\frida-base-64\frida-base.h" "$(IntDir)api"
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ValaCompiler);$(ProjectDir)src\control-service.vala;$(ProjectDir)src\portal-service.vala;$(ProjectDir)src\host-session-service.vala;$(ProjectDir)src\agent-container.vala;$(ProjectDir)src\gdb.vala;$(ProjectDir)src\system.vala;$(ProjectDir)src\compiler\compiler.vala;$(ProjectDir)src\file-monitor.vala;$(ProjectDir)src\async-task.vala;$(ProjectDir)src\windows\windows-host-session.vala;$(ProjectDir)src\windows\winjector.vala;$(ProjectDir)src\windows\frida-helper-process.vala;$(ProjectDir)src\socket\socket-host-session.vala;$(ProjectDir)src\fruity\fruity-host-session.vala;$(ProjectDir)src\fruity\dtx.vala;$(ProjectDir)src\fruity\lockdown.vala;$(ProjectDir)src\fruity\installation-proxy.vala;$(ProjectDir)src\fruity\springboard-services.vala;$(ProjectDir)src\fruity\lldb.vala;$(ProjectDir)src\fruity\injector.vala;$(ProjectDir)src\fruity\usbmux.vala;$(ProjectDir)src\fruity\keyed-archive.vala;$(ProjectDir)src\fruity\plist.vala;$(ProjectDir)src\fruity\plist-service.vala;$(ProjectDir)src\droidy\droidy-host-session.vala;$(ProjectDir)src\droidy\droidy-client.vala;$(ProjectDir)src\droidy\jdwp.vala;$(ProjectDir)src\droidy\injector.vala;$(ProjectDir)src\droidy\axml.vala;$(ProjectDir)src\barebone\barebone-host-session.vala;$(ProjectDir)src\barebone\script.vala;$(ProjectDir)src\barebone\machine.vala;$(ProjectDir)src\barebone\allocator.vala;$(ProjectDir)src\barebone\callback.vala;$(ProjectDir)src\barebone\memory-scanner.vala;$(ProjectDir)src\barebone\interceptor.vala;$(ProjectDir)src\barebone\rust-module.vala;$(ProjectDir)src\barebone\arch-x86\machine.vala;$(ProjectDir)src\barebone\arch-x86_64\machine.vala;$(ProjectDir)src\barebone\arch-arm\machine.vala;$(ProjectDir)src\barebone\arch-arm64\machine.vala;$(ProjectDir)src\barebone\arch-unknown\machine.vala;$(IntDir)data\compiler.stamp;$(IntDir)data\windows.stamp;$(IntDir)data\agent.stamp;$(IntDir)data\barebone.stamp;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\compiler\compiler.resources">
<FileType>Document</FileType>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\compiler\generate-agent.py;src\compiler\agent-entrypoint.js;src\compiler\agent-core.ts;src\compiler\agent-warmup.js;src\compiler\package.json;src\compiler\package-lock.json;src\compiler\tsconfig.json;src\compiler\rollup.config.agent-core.ts;src\compiler\rollup.config.typescript.ts;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\compiler\generate-agent.py;src\compiler\agent-entrypoint.js;src\compiler\agent-core.ts;src\compiler\agent-warmup.js;src\compiler\package.json;src\compiler\package-lock.json;src\compiler\tsconfig.json;src\compiler\rollup.config.agent-core.ts;src\compiler\rollup.config.typescript.ts;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\compiler\generate-agent.py;src\compiler\agent-entrypoint.js;src\compiler\agent-core.ts;src\compiler\agent-warmup.js;src\compiler\package.json;src\compiler\package-lock.json;src\compiler\tsconfig.json;src\compiler\rollup.config.agent-core.ts;src\compiler\rollup.config.typescript.ts;%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\compiler\generate-agent.py;src\compiler\agent-entrypoint.js;src\compiler\agent-core.ts;src\compiler\agent-warmup.js;src\compiler\package.json;src\compiler\package-lock.json;src\compiler\tsconfig.json;src\compiler\rollup.config.agent-core.ts;src\compiler\rollup.config.typescript.ts;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Serializing compiler resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\compiler.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Serializing compiler resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\compiler.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Serializing compiler resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\compiler.stamp</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Serializing compiler resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\compiler.stamp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">if $(ProcessorArchitecture)==amd64 (
set host_arch=x64
set cpu_mode=64
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\x64-Release\bin\windows-x86_64\v8-mksnapshot-windows-x86_64.exe
) else (
set host_arch=ia32
set cpu_mode=32
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\Win32-Release\bin\windows-x86\v8-mksnapshot-windows-x86.exe
)
if $(Configuration)==Debug (
set v8_mksnapshot=""
)
$(Python) src\compiler\generate-agent.py src\compiler "$(IntDir)src\compiler" windows %host_arch% %cpu_mode% %v8_mksnapshot% || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\compiler\compiler.resources" -o "$(IntDir)data\frida-data-compiler" "$(IntDir)src\compiler\agent.js" "$(IntDir)src\compiler\snapshot.bin" || exit 1
REM. &gt; "$(IntDir)data\compiler.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">if $(ProcessorArchitecture)==amd64 (
set host_arch=x64
set cpu_mode=64
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\x64-Release\bin\windows-x86_64\v8-mksnapshot-windows-x86_64.exe
) else (
set host_arch=ia32
set cpu_mode=32
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\Win32-Release\bin\windows-x86\v8-mksnapshot-windows-x86.exe
)
if $(Configuration)==Debug (
set v8_mksnapshot=""
)
$(Python) src\compiler\generate-agent.py src\compiler "$(IntDir)src\compiler" windows %host_arch% %cpu_mode% %v8_mksnapshot% || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\compiler\compiler.resources" -o "$(IntDir)data\frida-data-compiler" "$(IntDir)src\compiler\agent.js" "$(IntDir)src\compiler\snapshot.bin" || exit 1
REM. &gt; "$(IntDir)data\compiler.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">if $(ProcessorArchitecture)==amd64 (
set host_arch=x64
set cpu_mode=64
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\x64-Release\bin\windows-x86_64\v8-mksnapshot-windows-x86_64.exe
) else (
set host_arch=ia32
set cpu_mode=32
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\Win32-Release\bin\windows-x86\v8-mksnapshot-windows-x86.exe
)
if $(Configuration)==Debug (
set v8_mksnapshot=""
)
$(Python) src\compiler\generate-agent.py src\compiler "$(IntDir)src\compiler" windows %host_arch% %cpu_mode% %v8_mksnapshot% || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\compiler\compiler.resources" -o "$(IntDir)data\frida-data-compiler" "$(IntDir)src\compiler\agent.js" "$(IntDir)src\compiler\snapshot.bin" || exit 1
REM. &gt; "$(IntDir)data\compiler.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">if $(ProcessorArchitecture)==amd64 (
set host_arch=x64
set cpu_mode=64
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\x64-Release\bin\windows-x86_64\v8-mksnapshot-windows-x86_64.exe
) else (
set host_arch=ia32
set cpu_mode=32
set v8_mksnapshot=$(SolutionDir)build\sdk-windows\Win32-Release\bin\windows-x86\v8-mksnapshot-windows-x86.exe
)
if $(Configuration)==Debug (
set v8_mksnapshot=""
)
$(Python) src\compiler\generate-agent.py src\compiler "$(IntDir)src\compiler" windows %host_arch% %cpu_mode% %v8_mksnapshot% || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\compiler\compiler.resources" -o "$(IntDir)data\frida-data-compiler" "$(IntDir)src\compiler\agent.js" "$(IntDir)src\compiler\snapshot.bin" || exit 1
REM. &gt; "$(IntDir)data\compiler.stamp"
</Command>
</CustomBuild>
<CustomBuild Include="src\barebone\barebone.resources">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Python) src\barebone\generate-script-runtime.py src\barebone "$(IntDir)src\barebone" || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\barebone\barebone.resources" -o "$(IntDir)data\frida-data-barebone" "$(IntDir)src\barebone\script-runtime.js" src\barebone\helpers\memory-scanner-arm64.elf || exit 1
REM. &gt; "$(IntDir)data\barebone.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Python) src\barebone\generate-script-runtime.py src\barebone "$(IntDir)src\barebone" || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\barebone\barebone.resources" -o "$(IntDir)data\frida-data-barebone" "$(IntDir)src\barebone\script-runtime.js" src\barebone\helpers\memory-scanner-arm64.elf || exit 1
REM. &gt; "$(IntDir)data\barebone.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Python) src\barebone\generate-script-runtime.py src\barebone "$(IntDir)src\barebone" || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\barebone\barebone.resources" -o "$(IntDir)data\frida-data-barebone" "$(IntDir)src\barebone\script-runtime.js" src\barebone\helpers\memory-scanner-arm64.elf || exit 1
REM. &gt; "$(IntDir)data\barebone.stamp"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Python) src\barebone\generate-script-runtime.py src\barebone "$(IntDir)src\barebone" || exit 1
mkdir "$(IntDir)data" 2&gt;NUL
"$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe" -m $(PlatformTarget) -c "$(ProjectDir)src\barebone\barebone.resources" -o "$(IntDir)data\frida-data-barebone" "$(IntDir)src\barebone\script-runtime.js" src\barebone\helpers\memory-scanner-arm64.elf || exit 1
REM. &gt; "$(IntDir)data\barebone.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Serializing Barebone resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\barebone.stamp</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\barebone\generate-script-runtime.py;src\barebone\package.json;src\barebone\package-lock.json;src\barebone\script-runtime\console.ts;src\barebone\script-runtime\entrypoint.ts;src\barebone\script-runtime\gdb.ts;src\barebone\script-runtime\hexdump.ts;src\barebone\script-runtime\message-dispatcher.ts;src\barebone\script-runtime\primitives.ts;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Serializing Barebone resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\barebone.stamp</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\barebone\generate-script-runtime.py;src\barebone\package.json;src\barebone\package-lock.json;src\barebone\script-runtime\console.ts;src\barebone\script-runtime\entrypoint.ts;src\barebone\script-runtime\gdb.ts;src\barebone\script-runtime\hexdump.ts;src\barebone\script-runtime\message-dispatcher.ts;src\barebone\script-runtime\primitives.ts;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Serializing Barebone resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\barebone.stamp</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\barebone\generate-script-runtime.py;src\barebone\package.json;src\barebone\package-lock.json;src\barebone\script-runtime\console.ts;src\barebone\script-runtime\entrypoint.ts;src\barebone\script-runtime\gdb.ts;src\barebone\script-runtime\hexdump.ts;src\barebone\script-runtime\message-dispatcher.ts;src\barebone\script-runtime\primitives.ts;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Serializing Barebone resources</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\barebone.stamp</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)..\frida-resource-compiler\frida-resource-compiler.exe;src\barebone\generate-script-runtime.py;src\barebone\package.json;src\barebone\package-lock.json;src\barebone\script-runtime\console.ts;src\barebone\script-runtime\entrypoint.ts;src\barebone\script-runtime\gdb.ts;src\barebone\script-runtime\hexdump.ts;src\barebone\script-runtime\message-dispatcher.ts;src\barebone\script-runtime\primitives.ts;%(AdditionalInputs)</AdditionalInputs>
</CustomBuild>
<None Include="src\control-service.vala" />
<None Include="src\portal-service.vala" />
<None Include="src\host-session-service.vala" />
<None Include="src\agent-container.vala" />
<None Include="src\gdb.vala" />
<None Include="src\system.vala" />
<None Include="src\compiler\compiler.vala" />
<None Include="src\file-monitor.vala" />
<None Include="src\async-task.vala" />
<None Include="src\windows\windows-host-session.vala" />
<None Include="src\windows\winjector.vala" />
<None Include="src\windows\frida-helper-process.vala" />
<None Include="src\socket\socket-host-session.vala" />
<None Include="src\fruity\fruity-host-session.vala" />
<None Include="src\fruity\dtx.vala" />
<None Include="src\fruity\lockdown.vala" />
<None Include="src\fruity\installation-proxy.vala" />
<None Include="src\fruity\springboard-services.vala" />
<None Include="src\fruity\lldb.vala" />
<None Include="src\fruity\injector.vala" />
<None Include="src\fruity\usbmux.vala" />
<None Include="src\fruity\keyed-archive.vala" />
<None Include="src\fruity\plist.vala" />
<None Include="src\fruity\plist-service.vala" />
<None Include="src\droidy\droidy-host-session.vala" />
<None Include="src\droidy\droidy-client.vala" />
<None Include="src\droidy\jdwp.vala" />
<None Include="src\droidy\injector.vala" />
<None Include="src\droidy\axml.vala" />
<None Include="src\barebone\barebone-host-session.vala" />
<None Include="src\barebone\script.vala" />
<None Include="src\barebone\machine.vala" />
<None Include="src\barebone\allocator.vala" />
<None Include="src\barebone\callback.vala" />
<None Include="src\barebone\memory-scanner.vala" />
<None Include="src\barebone\interceptor.vala" />
<None Include="src\barebone\rust-module.vala" />
<None Include="src\barebone\arch-x86\machine.vala" />
<None Include="src\barebone\arch-x86_64\machine.vala" />
<None Include="src\barebone\arch-arm\machine.vala" />
<None Include="src\barebone\arch-arm64\machine.vala" />
<None Include="src\barebone\arch-unknown\machine.vala" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)src\frida.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\frida-glue.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\control-service.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\portal-service.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\host-session-service.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\agent-container.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\gdb.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\system.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\compiler\compiler.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\compiler\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\compiler\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\compiler\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\compiler\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\file-monitor.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\async-task.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\windows\windows-host-session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\windows\frida-helper-process-glue.c" />
<ClCompile Include="src\windows\windows-host-session-glue.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\windows\winjector.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\windows\winjector-glue.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\windows\frida-helper-process.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\windows\access-helpers.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\windows\icon-helpers.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\windows\system-windows.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\windows\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\windows\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\socket\socket-host-session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\socket\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\socket\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\socket\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\socket\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\fruity-host-session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\dtx.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="src\fruity\fruity-host-session-windows.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\lockdown.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\installation-proxy.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\springboard-services.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\lldb.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\injector.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\usbmux.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\keyed-archive.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\plist.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\plist-service.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\fruity\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\fruity\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\droidy-host-session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\droidy\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\droidy-client.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\droidy\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\jdwp.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\droidy\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\injector.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\droidy\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\axml.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\droidy\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\droidy\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\barebone-host-session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\script.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\machine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\allocator.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\callback.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\memory-scanner.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\interceptor.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\rust-module.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-x86\machine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\arch-x86\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\arch-x86\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\arch-x86\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\arch-x86\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-x86_64\machine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\arch-x86_64\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\arch-x86_64\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\arch-x86_64\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\arch-x86_64\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-arm\machine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\arch-arm\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\arch-arm\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\arch-arm\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\arch-arm\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-arm64\machine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\arch-arm64\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\arch-arm64\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\arch-arm64\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\arch-arm64\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-unknown\machine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)src\barebone\arch-unknown\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)src\barebone\arch-unknown\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)src\barebone\arch-unknown\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)src\barebone\arch-unknown\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-compiler.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-helper.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-agent.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\</ObjectFileName>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-barebone.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)data\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)data\</ObjectFileName>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\frida-gum\bindings\gumjs\gumjs-inspector.vcxproj">
<Project>{0b28ec3c-cc22-4067-9f08-6a3fac4fb454}</Project>
<Private>false</Private>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="lib\agent\frida-agent-32.vcxproj">
<Project>{b111ba27-807a-4b16-a4de-a33d7d6d7ce1}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="lib\agent\frida-agent-64.vcxproj">
<Project>{3194ec55-c1e5-423d-820f-13d38409b9d0}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="src\windows\frida-helper-32.vcxproj">
<Project>{e0ac03f2-f077-4ba7-88dd-bbe95b4e4ef0}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="src\windows\frida-helper-64.vcxproj">
<Project>{037e8466-f87b-486d-b6ad-fecb5740ce2c}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="tools\frida-resource-compiler.vcxproj">
<Project>{81b3e411-8676-41eb-84c6-1e5307f0c5ff}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-core.h" />
<ClInclude Include="src\windows\access-helpers.h" />
<ClInclude Include="src\windows\frida-helper-process-glue.h" />
<ClInclude Include="src\windows\icon-helpers.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-430
View File
@@ -1,430 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{5871a71e-92fa-44a7-847f-91d4ad19deb0}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\core">
<UniqueIdentifier>{eef66507-e4a8-4117-87d0-a5b24833ddba}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{0ddd771d-c7e1-405b-a3e6-a4433e9094db}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\windows">
<UniqueIdentifier>{28f8e0ab-f994-4a5b-b62b-edcdcb9d0c34}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\windows">
<UniqueIdentifier>{21f538e1-a14f-441b-9e2e-7303c1465c5b}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\socket">
<UniqueIdentifier>{d4552ab5-00ec-4394-bf75-666ac4f869a1}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\socket">
<UniqueIdentifier>{620f3726-c7dd-4d6f-8f54-ad08f2ff594a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\fruity">
<UniqueIdentifier>{7c397a46-f5dd-401d-b3c8-423615a25619}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\fruity">
<UniqueIdentifier>{2d5a13f8-9bcb-4d70-9f8a-9597707fc771}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\droidy">
<UniqueIdentifier>{7c397a46-f5dd-401d-b3c8-423615a25618}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\droidy">
<UniqueIdentifier>{2d5a13f8-9bcb-4d70-9f8a-9597707fc770}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\data">
<UniqueIdentifier>{e441c3c0-5949-44e4-8617-0483732946e8}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Resource Files\windows">
<UniqueIdentifier>{c619adbc-c722-4220-8c57-9d40ce4e94ee}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\compiler">
<UniqueIdentifier>{440a7aec-8571-44e1-b100-6983d61a26ef}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\compiler">
<UniqueIdentifier>{977f662a-1dea-4141-b63c-a71768cc07cf}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files\compiler">
<UniqueIdentifier>{56aeb7fc-6443-41fd-8bad-d5e3dd174f5c}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\barebone">
<UniqueIdentifier>{8095dacf-9529-4daf-9fa7-124a0dbd8c8c}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\barebone\arch-arm64">
<UniqueIdentifier>{5eb2dd88-94b6-46fb-bb45-04a18223ffa4}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files\barebone">
<UniqueIdentifier>{7543fdf8-bcba-4faf-b776-ba8c60b43ea6}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\barebone">
<UniqueIdentifier>{ee876d25-94c0-4b08-b62e-542701f53a5a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\barebone\arch-arm">
<UniqueIdentifier>{a44b2b16-0f6e-4a59-ace2-5eafb5842cd3}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\barebone\arch-unknown">
<UniqueIdentifier>{732196c7-efbb-467b-9a46-1b893a3ec1cf}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\barebone\arch-x86_64">
<UniqueIdentifier>{890a4566-74ae-4d0a-a479-7e45580171db}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\barebone\arch-arm64">
<UniqueIdentifier>{e062def2-897c-47e2-bde1-74b23a6066a8}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\barebone\arch-x86">
<UniqueIdentifier>{6408ed39-33ab-461c-b887-a8da9e80ba2b}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\barebone\arch-arm">
<UniqueIdentifier>{98bd47cd-d261-4776-942b-1a40a30bc3ff}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\barebone\arch-x86">
<UniqueIdentifier>{fe48f50a-d564-4618-bbd3-813d5b7a79cb}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\barebone\arch-unknown">
<UniqueIdentifier>{0e4c39a3-82f0-4034-af21-3f787d114fe6}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\barebone\arch-x86_64">
<UniqueIdentifier>{abc9ec18-ef36-4200-ac4c-1dcba33f5db5}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="src\helper.resources">
<Filter>Resource Files</Filter>
</CustomBuild>
<CustomBuild Include="src\agent.resources">
<Filter>Resource Files</Filter>
</CustomBuild>
<CustomBuild Include="src\frida.vala">
<Filter>Source Files</Filter>
</CustomBuild>
<None Include="src\host-session-service.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\agent-container.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\gdb.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\system.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\windows\windows-host-session.vala">
<Filter>Source Files\windows</Filter>
</None>
<None Include="src\windows\winjector.vala">
<Filter>Source Files\windows</Filter>
</None>
<None Include="src\windows\frida-helper-process.vala">
<Filter>Source Files\windows</Filter>
</None>
<None Include="src\socket\socket-host-session.vala">
<Filter>Source Files\socket</Filter>
</None>
<None Include="src\fruity\fruity-host-session.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\dtx.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\lockdown.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\installation-proxy.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\lldb.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\injector.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\usbmux.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\keyed-archive.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\plist.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\fruity\plist-service.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\droidy\droidy-host-session.vala">
<Filter>Source Files\droidy</Filter>
</None>
<None Include="src\droidy\droidy-client.vala">
<Filter>Source Files\droidy</Filter>
</None>
<CustomBuild Include="src\compiler\compiler.resources">
<Filter>Resource Files\compiler</Filter>
</CustomBuild>
<CustomBuild Include="src\barebone\barebone.resources">
<Filter>Resource Files\barebone</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-core.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
<ClCompile Include="$(IntDir)src\frida.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="src\frida-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\host-session-service.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\agent-container.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\gdb.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\system.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\windows\windows-host-session.c">
<Filter>Source Files\generated\windows</Filter>
</ClCompile>
<ClCompile Include="src\windows\windows-host-session-glue.c">
<Filter>Source Files\windows</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\windows\winjector.c">
<Filter>Source Files\generated\windows</Filter>
</ClCompile>
<ClCompile Include="src\windows\winjector-glue.c">
<Filter>Source Files\windows</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\windows\frida-helper-process.c">
<Filter>Source Files\generated\windows</Filter>
</ClCompile>
<ClInclude Include="src\windows\access-helpers.h">
<Filter>Source Files\windows</Filter>
</ClInclude>
<ClCompile Include="src\windows\access-helpers.c">
<Filter>Source Files\windows</Filter>
</ClCompile>
<ClInclude Include="src\windows\icon-helpers.h">
<Filter>Source Files\windows</Filter>
</ClInclude>
<ClCompile Include="src\windows\icon-helpers.c">
<Filter>Source Files\windows</Filter>
</ClCompile>
<ClCompile Include="src\windows\system-windows.c">
<Filter>Source Files\windows</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\socket\socket-host-session.c">
<Filter>Source Files\generated\socket</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\fruity-host-session.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\dtx.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="src\fruity\fruity-host-session-windows.c">
<Filter>Source Files\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\lockdown.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\installation-proxy.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\lldb.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\injector.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\usbmux.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\keyed-archive.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\plist.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\plist-service.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\droidy-host-session.c">
<Filter>Source Files\generated\droidy</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\droidy-client.c">
<Filter>Source Files\generated\droidy</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-helper.c">
<Filter>Source Files\generated\data</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-agent.c">
<Filter>Source Files\generated\data</Filter>
</ClCompile>
<ClInclude Include="src\windows\frida-helper-process-glue.h">
<Filter>Source Files\windows</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\windows\frida-helper-process-glue.c">
<Filter>Source Files\windows</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\injector.c">
<Filter>Source Files\generated\droidy</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\axml.c">
<Filter>Source Files\generated\droidy</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\droidy\jdwp.c">
<Filter>Source Files\generated\droidy</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\async-task.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\control-service.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\file-monitor.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\portal-service.c">
<Filter>Source Files\generated\core</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\fruity\springboard-services.c">
<Filter>Source Files\generated\fruity</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\compiler\compiler.c">
<Filter>Source Files\generated\compiler</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-compiler.c">
<Filter>Source Files\generated\data</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\barebone-host-session.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\script.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\machine.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\allocator.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\callback.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\memory-scanner.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\interceptor.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\rust-module.c">
<Filter>Source Files\generated\barebone</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)data\frida-data-barebone.c">
<Filter>Source Files\generated\data</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-arm64\machine.c">
<Filter>Source Files\generated\barebone\arch-arm64</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-arm\machine.c">
<Filter>Source Files\generated\barebone\arch-arm</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-x86\machine.c">
<Filter>Source Files\generated\barebone\arch-x86</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-unknown\machine.c">
<Filter>Source Files\generated\barebone\arch-unknown</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)src\barebone\arch-x86_64\machine.c">
<Filter>Source Files\generated\barebone\arch-x86_64</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="src\droidy\injector.vala">
<Filter>Source Files\droidy</Filter>
</None>
<None Include="src\droidy\jdwp.vala">
<Filter>Source Files\droidy</Filter>
</None>
<None Include="src\async-task.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\control-service.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\file-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\portal-service.vala">
<Filter>Source Files</Filter>
</None>
<None Include="src\fruity\springboard-services.vala">
<Filter>Source Files\fruity</Filter>
</None>
<None Include="src\compiler\compiler.vala">
<Filter>Source Files\compiler</Filter>
</None>
<None Include="src\droidy\axml.vala">
<Filter>Source Files\droidy</Filter>
</None>
<None Include="src\barebone\barebone-host-session.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\script.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\machine.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\allocator.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\callback.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\memory-scanner.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\interceptor.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\rust-module.vala">
<Filter>Source Files\barebone</Filter>
</None>
<None Include="src\barebone\arch-arm64\machine.vala">
<Filter>Source Files\barebone\arch-arm64</Filter>
</None>
<None Include="src\barebone\arch-arm\machine.vala">
<Filter>Source Files\barebone\arch-arm</Filter>
</None>
<None Include="src\barebone\arch-x86\machine.vala">
<Filter>Source Files\barebone\arch-x86</Filter>
</None>
<None Include="src\barebone\arch-unknown\machine.vala">
<Filter>Source Files\barebone\arch-unknown</Filter>
</None>
<None Include="src\barebone\arch-x86_64\machine.vala">
<Filter>Source Files\barebone\arch-x86_64</Filter>
</None>
</ItemGroup>
</Project>
-174
View File
@@ -1,174 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5DBC3541-98D6-4F06-A184-B6116544ED26}</ProjectGuid>
<RootNamespace>frida-gadget</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Link>
<ModuleDefinitionFile>lib\gadget\frida-gadget.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>gum-32.lib;gumjs-32.lib;frida-base-32.lib;frida-payload-32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-payload-32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-payload-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Link>
<ModuleDefinitionFile>lib\gadget\frida-gadget.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalDependencies>gum-64.lib;gumjs-64.lib;frida-base-64.lib;frida-payload-64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-payload-64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-payload-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Link>
<ModuleDefinitionFile>lib\gadget\frida-gadget.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>gum-32.lib;gumjs-32.lib;frida-base-32.lib;frida-payload-32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-payload-32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-payload-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Link>
<ModuleDefinitionFile>lib\gadget\frida-gadget.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalDependencies>gum-64.lib;gumjs-64.lib;frida-base-64.lib;frida-payload-64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-payload-64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-payload-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="lib\gadget\gadget.vala">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(ValaCompiler)" lib/gadget/gadget.vala --ccode --directory=$(IntDir) --library=frida-gadget --header=$(IntDir)frida-gadget.h --symbols=$(IntDir)frida-gadget.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-payload-32" --vapidir="$(IntDir)..\frida-payload-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gee-0.8 --pkg=gio-2.0 --pkg=nice --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-1.0 --pkg=frida-base --pkg=frida-payload || exit 1
echo &gt; "$(IntDir)valacode.stamp"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(ValaCompiler)" lib/gadget/gadget.vala --ccode --directory=$(IntDir) --library=frida-gadget --header=$(IntDir)frida-gadget.h --symbols=$(IntDir)frida-gadget.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-payload-32" --vapidir="$(IntDir)..\frida-payload-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gee-0.8 --pkg=gio-2.0 --pkg=nice --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-1.0 --pkg=frida-base --pkg=frida-payload || exit 1
echo &gt; "$(IntDir)valacode.stamp"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(ValaCompiler)" lib/gadget/gadget.vala --ccode --directory=$(IntDir) --library=frida-gadget --header=$(IntDir)frida-gadget.h --symbols=$(IntDir)frida-gadget.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-payload-32" --vapidir="$(IntDir)..\frida-payload-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gee-0.8 --pkg=gio-2.0 --pkg=nice --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-1.0 --pkg=frida-base --pkg=frida-payload || exit 1
echo &gt; "$(IntDir)valacode.stamp"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(ValaCompiler)" lib/gadget/gadget.vala --ccode --directory=$(IntDir) --library=frida-gadget --header=$(IntDir)frida-gadget.h --symbols=$(IntDir)frida-gadget.symbols --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-payload-32" --vapidir="$(IntDir)..\frida-payload-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gee-0.8 --pkg=gio-2.0 --pkg=nice --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-1.0 --pkg=frida-base --pkg=frida-payload || exit 1
echo &gt; "$(IntDir)valacode.stamp"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)lib\gadget\gadget.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)gadget\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)gadget\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)gadget\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)gadget\</ObjectFileName>
</ClCompile>
<ClCompile Include="lib\gadget\gadget-glue.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-35
View File
@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{f60b305c-bd28-4f2c-9c4c-cbabeb0c2142}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="lib\gadget\gadget-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)lib\gadget\gadget.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="lib\gadget\gadget.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
</Project>
-175
View File
@@ -1,175 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C21A9593-4BE8-4BE5-A7E6-39A1612FA569}</ProjectGuid>
<RootNamespace>frida-portal</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-32;$(IntDir)..\frida-helper-backend-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-64;$(IntDir)..\frida-helper-backend-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-32;$(IntDir)..\frida-helper-backend-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-64;$(IntDir)..\frida-helper-backend-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="portal\portal.vala">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(ValaCompiler)" portal/portal.vala --ccode --directory=$(IntDir) --library=frida-portal --header=$(IntDir)frida-portal.h --symbols=$(IntDir)frida-portal.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(ValaCompiler)" portal/portal.vala --ccode --directory=$(IntDir) --library=frida-portal --header=$(IntDir)frida-portal.h --symbols=$(IntDir)frida-portal.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(ValaCompiler)" portal/portal.vala --ccode --directory=$(IntDir) --library=frida-portal --header=$(IntDir)frida-portal.h --symbols=$(IntDir)frida-portal.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(ValaCompiler)" portal/portal.vala --ccode --directory=$(IntDir) --library=frida-portal --header=$(IntDir)frida-portal.h --symbols=$(IntDir)frida-portal.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gioopenssl --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="frida-core.vcxproj">
<Project>{b7dc9b02-a5ff-4aa1-b2a2-dc1653168d44}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)portal\portal.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)portal\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)portal\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)portal\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)portal\</ObjectFileName>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-30
View File
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{4f6f9d9e-2378-4fde-b1b2-f54395a16475}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="portal\portal.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)portal\portal.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
</ItemGroup>
</Project>
-176
View File
@@ -1,176 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{218DDF16-1726-4492-A92F-DC190397DB44}</ProjectGuid>
<RootNamespace>frida-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-32;$(IntDir)..\frida-helper-backend-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-64;$(IntDir)..\frida-helper-backend-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-32;$(IntDir)..\frida-helper-backend-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Link>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir)..\frida-core;$(IntDir)..\frida-base-64;$(IntDir)..\frida-helper-backend-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="server\server.vala">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(ValaCompiler)" server/server.vala --ccode --directory=$(IntDir) --library=frida-server --header=$(IntDir)frida-server.h --symbols=$(IntDir)frida-server.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ValaCompiler);$(ProjectDir)server\server.vala;%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(ValaCompiler)" server/server.vala --ccode --directory=$(IntDir) --library=frida-server --header=$(IntDir)frida-server.h --symbols=$(IntDir)frida-server.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ValaCompiler);$(ProjectDir)server\server.vala;%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(ValaCompiler)" server/server.vala --ccode --directory=$(IntDir) --library=frida-server --header=$(IntDir)frida-server.h --symbols=$(IntDir)frida-server.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ValaCompiler);$(ProjectDir)server\server.vala;%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(ValaCompiler)" server/server.vala --ccode --directory=$(IntDir) --library=frida-server --header=$(IntDir)frida-server.h --symbols=$(IntDir)frida-server.symbols --vapidir="$(IntDir)..\frida-core" --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-helper-backend-32" --vapidir="$(IntDir)..\frida-helper-backend-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg config --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-core --pkg=frida-base --pkg=frida-helper-backend --pkg=posix || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compiling vala code</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)valacode.stamp;%(Outputs)</Outputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ValaCompiler);$(ProjectDir)server\server.vala;%(AdditionalInputs)</AdditionalInputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="frida-core.vcxproj">
<Project>{b7dc9b02-a5ff-4aa1-b2a2-dc1653168d44}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)server\server.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)server\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)server\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)server\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)server\</ObjectFileName>
</ClCompile>
<ClCompile Include="server\server-glue.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-33
View File
@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{f60b305c-bd28-4f2c-9c4c-cbabeb0c2142}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="server\server.vala">
<Filter>Source Files</Filter>
</CustomBuild>
<ClCompile Include="server\server-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)server\server.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
</ItemGroup>
</Project>
+5 -16
View File
@@ -13,36 +13,25 @@ extra_link_args = []
extra_link_depends = []
if host_os_family == 'darwin'
symlist = 'frida-inject.symbols'
extra_link_args += ['-Wl,-exported_symbols_list,' + join_paths(meson.current_source_dir(), symlist)]
extra_link_args += ['-Wl,-exported_symbols_list,' + meson.current_source_dir() / symlist]
extra_link_depends += [symlist]
elif host_os_family != 'windows'
symscript = 'frida-inject.version'
extra_link_args += ['-Wl,--version-script,' + join_paths(meson.current_source_dir(), symscript)]
extra_link_args += ['-Wl,--version-script,' + meson.current_source_dir() / symscript]
extra_link_depends += [symscript]
endif
raw_inject = executable('frida-inject-raw', inject_sources,
vala_args: system_vala_args,
vala_args: [core_vala_args, system_vala_args],
link_args: extra_link_args,
link_depends: extra_link_depends,
dependencies: [json_glib_dep, core_dep],
)
custom_target('frida-inject',
input: [
raw_inject,
'frida-inject.xcent',
],
input: [raw_inject, 'frida-inject.xcent'],
output: 'frida-inject' + exe_suffix,
command: [
files('post-process.sh'),
'@INPUT@',
'@OUTPUT@',
host_os,
'>>>', strip, '<<<',
get_option('strip').to_string(),
codesign,
],
command: post_process + ['executable', 're.frida.Inject', '@INPUT1@'],
install: true,
install_dir: get_option('bindir'),
)
-70
View File
@@ -1,70 +0,0 @@
#!/usr/bin/env bash
input_inject_path=$1
input_entitlements_path=$2
output_inject_path=$3
host_os=$4
strip_command=()
if [ "$5" = ">>>" ]; then
shift 5
while true; do
cur=$1
shift 1
if [ "$cur" = "<<<" ]; then
break
fi
strip_command+=("$cur")
done
else
echo "Invalid argument" > /dev/stderr
exit 1
fi
strip_enabled=$1
codesign=$2
case $host_os in
macos)
if [ -z "$MACOS_CERTID" ]; then
echo "MACOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
ios)
if [ -z "$IOS_CERTID" ]; then
echo "IOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
tvos)
if [ -z "$TVOS_CERTID" ]; then
echo "TVOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
esac
intermediate_path=$output_inject_path.tmp
rm -f "$intermediate_path"
cp -a "$input_inject_path" "$intermediate_path"
if [ "$strip_enabled" = "true" ]; then
"${strip_command[@]}" "$intermediate_path" || exit 1
fi
case $host_os in
macos|ios|tvos)
case $host_os in
macos)
"$codesign" -f -s "$MACOS_CERTID" -i "re.frida.Inject" "$intermediate_path" || exit 1
;;
ios)
"$codesign" -f -s "$IOS_CERTID" --entitlements "$input_entitlements_path" "$intermediate_path" || exit 1
;;
tvos)
"$codesign" -f -s "$TVOS_CERTID" --entitlements "$input_entitlements_path" "$intermediate_path" || exit 1
;;
esac
;;
esac
mv "$intermediate_path" "$output_inject_path"
+9 -2
View File
@@ -81,7 +81,7 @@ namespace Frida.Agent {
private uint child_gating_subscriber_count = 0;
private ForkMonitor? fork_monitor;
private FileDescriptorGuard fd_guard;
private FileDescriptorGuard? fd_guard;
private ThreadCountCloaker? thread_count_cloaker;
private ThreadListCloaker? thread_list_cloaker;
private FDListCloaker? fd_list_cloaker;
@@ -99,6 +99,7 @@ namespace Frida.Agent {
private Cond transition_cond;
private SpawnMonitor? spawn_monitor;
private ThreadSuspendMonitor? thread_suspend_monitor;
private UnwindSitter? unwind_sitter;
private delegate void CompletionNotify ();
@@ -148,7 +149,6 @@ namespace Frida.Agent {
linjector_state->agent_ctrlfd = -1;
fdt_padder.move_descriptor_if_needed (ref agent_ctrlfd);
Gum.Cloak.add_file_descriptor (agent_ctrlfd);
agent_parameters_with_transport_uri = "socket:%d%s".printf (agent_ctrlfd, agent_parameters);
agent_parameters = agent_parameters_with_transport_uri;
@@ -259,6 +259,7 @@ namespace Frida.Agent {
interceptor.begin_transaction ();
thread_suspend_monitor = null;
unwind_sitter = null;
invalidate_dbus_context ();
@@ -287,6 +288,7 @@ namespace Frida.Agent {
#endif
bool enable_exit_monitor = true;
bool enable_thread_suspend_monitor = true;
bool enable_unwind_sitter = true;
foreach (unowned string option in tokens[1:]) {
if (option == "eternal")
ensure_eternalized ();
@@ -298,6 +300,8 @@ namespace Frida.Agent {
enable_exit_monitor = false;
else if (option == "thread-suspend-monitor:off")
enable_thread_suspend_monitor = false;
else if (option == "unwind-sitter:off")
enable_unwind_sitter = false;
}
if (!enable_exceptor)
@@ -313,6 +317,9 @@ namespace Frida.Agent {
if (enable_thread_suspend_monitor)
thread_suspend_monitor = new ThreadSuspendMonitor (this);
if (enable_unwind_sitter)
unwind_sitter = new UnwindSitter (this);
this.interceptor = interceptor;
this.exceptor = Gum.Exceptor.obtain ();
-112
View File
@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F4F9AF1C-3111-4563-8066-8FAE8CBEFBDC}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-agent-32</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-pipe-32;$(IntDir)..\frida-payload-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<ModuleDefinitionFile>frida-agent.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;$(IntDir)..\frida-pipe-32;$(IntDir)..\frida-payload-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<ModuleDefinitionFile>frida-agent.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<Import Project="frida-agent-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\frida-gum\bindings\gumjs\gumjs-32.vcxproj">
<Project>{8381538f-3cb5-480b-bfa4-960299af6485}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\frida-gum\gum-32.vcxproj">
<Project>{b31c7d42-54b6-49bb-b30c-11745c48b062}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\base\frida-base-32.vcxproj">
<Project>{c4203124-c838-437b-8662-ca477b146655}</Project>
</ProjectReference>
<ProjectReference Include="..\payload\frida-payload-32.vcxproj">
<Project>{26f21663-d1b3-46e4-acb6-115ed9ce086c}</Project>
</ProjectReference>
<ProjectReference Include="..\pipe\frida-pipe-32.vcxproj">
<Project>{4c39c3cf-13e5-4346-b6ae-f73013105936}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-33
View File
@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{0353eb66-cd17-403a-ac99-dcf4a5709318}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)agent.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="agent-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="agent.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
</Project>
-112
View File
@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{D873638D-AA0D-4252-9334-456557A65D95}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-agent-64</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-pipe-64;$(IntDir)..\frida-payload-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<ModuleDefinitionFile>frida-agent.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;$(IntDir)..\frida-pipe-64;$(IntDir)..\frida-payload-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<ModuleDefinitionFile>frida-agent.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<Import Project="frida-agent-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\frida-gum\bindings\gumjs\gumjs-64.vcxproj">
<Project>{0b39885e-731c-4a45-a7de-44cbdbbf0067}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\frida-gum\gum-64.vcxproj">
<Project>{dc30a450-95bc-4476-a2f9-45100562424e}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\base\frida-base-64.vcxproj">
<Project>{a31522d9-715b-4e04-aa57-df7afebe082c}</Project>
</ProjectReference>
<ProjectReference Include="..\payload\frida-payload-64.vcxproj">
<Project>{26ccf317-ace8-4cd6-bdde-ffed1aa2fadd}</Project>
</ProjectReference>
<ProjectReference Include="..\pipe\frida-pipe-64.vcxproj">
<Project>{d50f460f-9c4d-42eb-a8c4-48c0c46cfaaf}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-33
View File
@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{ae68f2cc-7b74-44ad-addd-3d447d9b2a4e}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)agent.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="agent-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="agent.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
</Project>
-31
View File
@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="agent.vala">
<Message>Compiling vala code</Message>
<Command>"$(ValaCompiler)" agent.vala --ccode --directory=$(IntDir) --library=frida-agent --header=$(IntDir)frida-agent.h --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --vapidir="$(IntDir)..\frida-pipe-32" --vapidir="$(IntDir)..\frida-pipe-64" --vapidir="$(IntDir)..\frida-payload-32" --vapidir="$(IntDir)..\frida-payload-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg=glib-2.0 --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-1.0 --pkg=frida-base --pkg=frida-pipe --pkg=frida-payload || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs>$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<Outputs>$(IntDir)valacode.stamp;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)agent.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="agent-glue.c" />
</ItemGroup>
</Project>
+34 -31
View File
@@ -20,14 +20,16 @@ if host_os_family == 'darwin'
endif
if host_os_family == 'windows'
symfile = (host_arch == 'x86') ? 'frida-agent-x86.symbols' : 'frida-agent.symbols'
extra_link_args += '-Wl,--retain-symbols-file,' + (meson.current_source_dir() / symfile)
extra_link_depends += symfile
if host_toolchain != 'microsoft'
symfile = (host_arch == 'x86') ? 'frida-agent-x86.symbols' : 'frida-agent.symbols'
extra_link_args += '-Wl,--retain-symbols-file,' + meson.current_source_dir() / symfile
extra_link_depends += symfile
endif
elif host_os_family == 'darwin'
extra_link_args += '-Wl,-exported_symbol,_frida_agent_main'
else
symscript = 'frida-agent.version'
extra_link_args += '-Wl,--version-script,' + (meson.current_source_dir() / symscript)
extra_link_args += '-Wl,--version-script,' + meson.current_source_dir() / symscript
extra_link_depends += symscript
endif
@@ -36,10 +38,11 @@ if host_os_family in ['linux', 'qnx']
extra_link_args += '-Wl,-Bsymbolic'
endif
raw_agent = shared_library('frida-agent', agent_sources,
raw_agent = shared_library('frida-agent-raw', agent_sources,
name_prefix: 'lib',
c_args: frida_component_cflags,
vala_args: extra_vala_args,
vala_header: 'frida-agent.h',
vala_args: [base_vala_args, payload_vala_args, extra_vala_args],
link_args: extra_link_args,
link_depends: extra_link_depends,
vs_module_defs: 'frida-agent.def',
@@ -51,45 +54,45 @@ operations = ['--move', 'constructor', 'frida_init_memory', 'first']
if host_os_family != 'darwin'
operations += ['--move', 'destructor', 'frida_deinit_memory', 'first']
endif
if host_machine.endian() == 'little'
endian_option = ['--endian', 'little']
else
endian_option = ['--endian', 'big']
endif
modulated_agent = custom_target('frida-agent-modulated',
input: raw_agent,
output: 'libfrida-agent-modulated' + shlib_suffix,
command: [
modulate,
'@INPUT@',
] + operations + endian_option + [
'--output', '@OUTPUT@',
'--nm', nm,
'--readelf', readelf,
'--otool', otool,
],
command: modulate + operations,
)
need_universal_agent = host_os_family == 'darwin' \
and get_option('assets') == 'installed' \
and agent_compat != ''
if host_os_family == 'darwin'
identity = 'FridaAgent'
else
identity = agent_name
endif
agent = custom_target('frida-agent',
input: modulated_agent,
output: agent_name,
command: [
post_process_module,
'@INPUT@',
'@OUTPUT@',
identity,
],
output: need_universal_agent ? f'@agent_name@-@host_abi@' : agent_name,
command: post_process + ['shared-library', identity],
build_by_default: true,
install: get_option('assets') == 'installed',
install: get_option('assets') == 'installed' and not need_universal_agent,
install_dir: asset_dir,
)
agent_dep = declare_dependency(link_with: agent)
if need_universal_agent
custom_target('frida-agent-universal',
input: agent,
output: agent_name,
command: [
lipo,
'@INPUT@',
agent_compat,
'-create',
'-output', meson.current_build_dir() / agent_name,
],
depends: agent_depends,
install: true,
install_dir: asset_dir,
)
endif
+23 -12
View File
@@ -1,11 +1,11 @@
namespace Frida {
public class BufferBuilder : Object {
public uint pointer_size {
public ByteOrder byte_order {
get;
construct;
}
public ByteOrder byte_order {
public uint pointer_size {
get;
construct;
}
@@ -23,10 +23,10 @@ namespace Frida {
private Gee.List<LabelRef>? label_refs;
private Gee.Map<string, uint>? label_defs;
public BufferBuilder (uint pointer_size = (uint) sizeof (size_t), ByteOrder byte_order = HOST) {
public BufferBuilder (ByteOrder byte_order = HOST, uint pointer_size = (uint) sizeof (size_t)) {
Object (
pointer_size: pointer_size,
byte_order: byte_order
byte_order: byte_order,
pointer_size: pointer_size
);
}
@@ -313,12 +313,12 @@ namespace Frida {
construct;
}
public uint pointer_size {
public ByteOrder byte_order {
get;
construct;
}
public ByteOrder byte_order {
public uint pointer_size {
get;
construct;
}
@@ -326,11 +326,11 @@ namespace Frida {
private unowned uint8 * data;
private size_t size;
public Buffer (Bytes bytes, uint pointer_size, ByteOrder byte_order) {
public Buffer (Bytes bytes, ByteOrder byte_order = HOST, uint pointer_size = (uint) sizeof (size_t)) {
Object (
bytes: bytes,
pointer_size: pointer_size,
byte_order: byte_order
byte_order: byte_order,
pointer_size: pointer_size
);
}
@@ -429,9 +429,20 @@ namespace Frida {
}
public string read_string (size_t offset) {
string * val = (string *) get_pointer (offset, sizeof (char));
size_t max_length = size - offset;
return val->substring (0, (long) max_length);
string * val = (string *) get_pointer (offset, sizeof (char));
string * end = memchr (val, 0, max_length);
assert (end != null);
size_t size = end - val;
return val->substring (0, (long) size);
}
[CCode (cname = "memchr", cheader_filename = "string.h")]
private extern static string * memchr (string * s, int c, size_t n);
public string read_fixed_string (size_t offset, size_t size) {
string * val = (string *) get_pointer (offset, size);
return val->substring (0, (long) size);
}
public unowned Buffer write_string (size_t offset, string val) {
-77
View File
@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C4203124-C838-437B-8662-CA477B146655}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-base-32</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="frida-base-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-85
View File
@@ -1,85 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{e96fc7f6-bddd-4322-8836-d9af8b731269}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{ca976c61-371a-4de5-b837-a8bd8857bc13}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)session.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="p2p-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="socket-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)dbus.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)p2p.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)promise.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)rpc.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)socket.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)buffer.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="session-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="session.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-base.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="dbus.vala">
<Filter>Source Files</Filter>
</None>
<None Include="p2p.vala">
<Filter>Source Files</Filter>
</None>
<None Include="promise.vala">
<Filter>Source Files</Filter>
</None>
<None Include="rpc.vala">
<Filter>Source Files</Filter>
</None>
<None Include="socket.vala">
<Filter>Source Files</Filter>
</None>
<None Include="buffer.vala">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
</Project>
-77
View File
@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A31522D9-715B-4E04-AA57-DF7AFEBE082C}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-base-64</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="frida-base-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-85
View File
@@ -1,85 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{6c15c760-cd5b-41c4-ad64-83283571aeaf}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{984e0fc8-e24c-4868-a432-6dd66cc7db4d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)session.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)dbus.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)p2p.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)promise.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)rpc.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)socket.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)buffer.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="p2p-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="socket-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="session-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="session.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-base.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="dbus.vala">
<Filter>Source Files</Filter>
</None>
<None Include="p2p.vala">
<Filter>Source Files</Filter>
</None>
<None Include="promise.vala">
<Filter>Source Files</Filter>
</None>
<None Include="rpc.vala">
<Filter>Source Files</Filter>
</None>
<None Include="socket.vala">
<Filter>Source Files</Filter>
</None>
<None Include="buffer.vala">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
</Project>
-79
View File
@@ -1,79 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(FridaCoreDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="session.vala">
<Message>Compiling vala code</Message>
<Command>"$(ValaCompiler)" session.vala rpc.vala p2p.vala dbus.vala promise.vala socket.vala buffer.vala --ccode --directory=$(IntDir) --library=frida-base --header=$(IntDir)frida-base.h $(ValaFlags) $(FridaCoreValaFlags) --pkg=gio-2.0 --pkg=libsoup-3.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs>$(ValaCompiler);rpc.vala;p2p.vala;dbus.vala;promise.vala;socket.vala;buffer.vala;%(AdditionalInputs)</AdditionalInputs>
<Outputs>$(IntDir)valacode.stamp;%(Outputs)</Outputs>
</CustomBuild>
<None Include="rpc.vala" />
<None Include="p2p.vala" />
<None Include="dbus.vala" />
<None Include="promise.vala" />
<None Include="socket.vala" />
<None Include="buffer.vala" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-base.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="session-glue.c" />
<ClCompile Include="$(IntDir)rpc.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)p2p.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="p2p-glue.c" />
<ClCompile Include="$(IntDir)dbus.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)promise.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)socket.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="socket-glue.c" />
<ClCompile Include="$(IntDir)buffer.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
</ItemGroup>
</Project>
+13 -2
View File
@@ -11,13 +11,21 @@ base_sources = [
'buffer.vala',
]
extra_vala_args = []
extra_deps = []
if host_os_family != 'windows'
extra_deps += [gio_unix_dep]
extra_vala_args += '--pkg=gio-unix-2.0'
extra_deps += gio_unix_dep
endif
base_vala_args = [gum_vala_args, '--pkg=gio-2.0', '--pkg=json-glib-1.0']
if nice_dep.found()
base_vala_args += '--pkg=nice'
endif
base = static_library('frida-base-' + api_version, base_sources,
c_args: frida_component_cflags,
vala_args: [base_vala_args, '--pkg=libsoup-3.0'] + extra_vala_args,
vala_header: 'frida-base.h',
vala_vapi: f'frida-base-@[email protected]',
dependencies: [glib_dep, gobject_dep, gio_dep, libsoup_dep, nice_dep, usrsctp_dep, gee_dep, json_glib_dep, gum_dep, openssl_dep] + extra_deps,
@@ -35,5 +43,8 @@ base_build_dir = meson.current_build_dir()
pkg = import('pkgconfig')
pkg.generate(base,
description: 'Frida base library',
filebase: f'frida-base-@api_version@',
name: 'Frida Base Library',
version: frida_version,
description: 'Basic building blocks',
)
+1 -1
View File
@@ -59,7 +59,7 @@ _frida_generate_certificate (guint8 ** cert_der, gint * cert_der_length, gchar *
bio = BIO_new (BIO_s_mem ());
i2d_X509_bio (bio, x509);
n = BIO_get_mem_data (bio, (guint8 **) &der);
*cert_der = g_memdup (der, n);
*cert_der = g_memdup2 (der, n);
*cert_der_length = n;
BIO_free (g_steal_pointer (&bio));
+2 -2
View File
@@ -447,7 +447,7 @@ namespace Frida {
_pending_io = condition;
foreach (var entry in sources.entries) {
Source source = entry.key;
unowned Source source = entry.key;
IOCondition c = entry.value;
if ((_pending_io & c) != 0)
source.set_ready_time (0);
@@ -825,7 +825,7 @@ namespace Frida {
sctp_events = new_events;
foreach (var entry in sources.entries) {
Source source = entry.key;
unowned Source source = entry.key;
IOCondition c = entry.value;
if ((new_events & c) != 0)
source.set_ready_time (0);
+2
View File
@@ -2,6 +2,8 @@
#if defined (HAVE_WINDOWS)
#include <windows.h>
gchar *
_frida_query_windows_version (void)
{
+22 -3
View File
@@ -150,6 +150,11 @@ namespace Frida {
public signal void new_candidates (string[] candidate_sdps);
public signal void candidate_gathering_done ();
public weak AgentSession agent_session {
get;
construct;
}
public uint persist_timeout {
get;
construct;
@@ -198,8 +203,10 @@ namespace Frida {
INTERRUPTED
}
public AgentMessageTransmitter (uint persist_timeout, MainContext frida_context, MainContext dbus_context) {
public AgentMessageTransmitter (AgentSession agent_session, uint persist_timeout, MainContext frida_context,
MainContext dbus_context) {
Object (
agent_session: agent_session,
persist_timeout: persist_timeout,
frida_context: frida_context,
dbus_context: dbus_context
@@ -500,8 +507,7 @@ namespace Frida {
nice_connection.on_closed.connect (on_nice_connection_closed);
try {
nice_registration_id = nice_connection.register_object (ObjectPath.AGENT_SESSION,
(AgentSession) this);
nice_registration_id = nice_connection.register_object (ObjectPath.AGENT_SESSION, agent_session);
} catch (IOError io_error) {
assert_not_reached ();
}
@@ -2071,4 +2077,17 @@ namespace Frida {
return klass.get_value (val).value_nick;
}
}
namespace Numeric {
public uint uint64_hash (uint64? val) {
uint64 v = val;
return (uint) ((v >> 32) ^ (v & 0xffffffffU));
}
public bool uint64_equal (uint64? val_a, uint64? val_b) {
uint64 a = val_a;
uint64 b = val_b;
return a == b;
}
}
}
+10 -10
View File
@@ -384,7 +384,7 @@ namespace Frida {
File location = endpoint_params.asset_root.resolve_relative_path (path.next_char ());
server.pause_message (msg);
msg.pause ();
handle_asset_request.begin (path, location, msg);
}
@@ -420,7 +420,7 @@ namespace Frida {
stream = yield file.read_async (priority, io_cancellable);
} catch (GLib.Error e) {
msg.set_status (Soup.Status.NOT_FOUND, null);
server.unpause_message (msg);
msg.unpause ();
return;
}
@@ -504,7 +504,7 @@ namespace Frida {
}
} catch (GLib.Error e) {
msg.set_status (Soup.Status.NOT_FOUND, null);
server.unpause_message (msg);
msg.unpause ();
return;
}
@@ -520,7 +520,7 @@ namespace Frida {
msg.set_response ("text/html", Soup.MemoryUse.COPY, listing.str.data);
}
server.unpause_message (msg);
msg.unpause ();
}
private async void handle_file_request (File file, FileInfo info, FileInputStream stream, Soup.ServerMessage msg) {
@@ -531,7 +531,7 @@ namespace Frida {
headers.replace ("Content-Length", info.get_size ().to_string ());
if (msg.get_method () == "HEAD") {
server.unpause_message (msg);
msg.unpause ();
return;
}
@@ -563,7 +563,7 @@ namespace Frida {
body.append_take (buffer[0:n]);
server.unpause_message (msg);
msg.unpause ();
waiting = true;
yield;
@@ -572,13 +572,13 @@ namespace Frida {
if (finished)
break;
server.pause_message (msg);
msg.pause ();
}
} finally {
msg.disconnect (write_handler);
msg.disconnect (finished_handler);
if (!finished)
server.unpause_message (msg);
msg.unpause ();
}
}
@@ -601,7 +601,7 @@ namespace Frida {
msg.set_response ("text/html", Soup.MemoryUse.COPY, body.data);
}
server.unpause_message (msg);
msg.unpause ();
}
private static string guess_mime_type_for (string path) {
@@ -848,7 +848,7 @@ namespace Frida {
_pending_io = new_io;
foreach (var entry in sources.entries) {
Source source = entry.key;
unowned Source source = entry.key;
IOCondition c = entry.value;
if ((new_io & c) != 0)
source.set_ready_time (0);
+2
View File
@@ -841,6 +841,7 @@ namespace Frida.Gadget {
private ExitMonitor exit_monitor;
private ThreadSuspendMonitor thread_suspend_monitor;
private UnwindSitter unwind_sitter;
private Gum.ScriptBackend? qjs_backend;
private Gum.ScriptBackend? v8_backend;
@@ -852,6 +853,7 @@ namespace Frida.Gadget {
construct {
exit_monitor = new ExitMonitor (this, MainContext.default ());
thread_suspend_monitor = new ThreadSuspendMonitor (this);
unwind_sitter = new UnwindSitter (this);
}
public async void start () throws Error, IOError {
+38 -35
View File
@@ -14,11 +14,13 @@ endif
platform_deps = []
extra_vala_args = []
extra_objc_args = []
extra_link_args = []
extra_link_depends = []
if host_os_family != 'windows'
extra_vala_args += '--pkg=gio-unix-2.0'
platform_deps += gio_unix_dep
endif
@@ -28,16 +30,18 @@ if host_os_family == 'darwin'
endif
if host_os_family == 'windows'
symfile = 'frida-gadget.symbols'
extra_link_args += '-Wl,--retain-symbols-file,' + (meson.current_source_dir() / symfile)
extra_link_depends += symfile
if host_toolchain != 'microsoft'
symfile = 'frida-gadget.symbols'
extra_link_args += '-Wl,--retain-symbols-file,' + meson.current_source_dir() / symfile
extra_link_depends += symfile
endif
elif host_os_family == 'darwin'
symlist = 'frida-gadget.symbols'
extra_link_args += '-Wl,-exported_symbols_list,' + (meson.current_source_dir() / symlist)
extra_link_args += '-Wl,-exported_symbols_list,' + meson.current_source_dir() / symlist
extra_link_depends += symlist
else
symscript = 'frida-gadget.version'
extra_link_args += '-Wl,--version-script,' + (meson.current_source_dir() / symscript)
extra_link_args += '-Wl,--version-script,' + meson.current_source_dir() / symscript
extra_link_depends += symscript
endif
@@ -46,8 +50,10 @@ if host_os_family in ['linux', 'qnx']
extra_link_args += ['-Wl,-Bsymbolic']
endif
raw_gadget = shared_library('frida-gadget', gadget_sources,
raw_gadget = shared_library('frida-gadget-raw', gadget_sources,
name_prefix: 'lib',
vala_args: [base_vala_args, payload_vala_args, extra_vala_args],
vala_header: 'frida-gadget.h',
c_args: frida_component_cflags,
objc_args: extra_objc_args,
link_args: extra_link_args,
@@ -67,30 +73,14 @@ if host_os_family != 'darwin'
'--move', 'destructor', 'frida_on_unload', 'last',
]
endif
if get_option('strip')
operations += ['--strip', '>>>', strip, '<<<']
endif
if host_machine.endian() == 'little'
endian_option = ['--endian', 'little']
else
endian_option = ['--endian', 'big']
endif
modulated_gadget = custom_target('frida-gadget-modulated',
input: raw_gadget,
output: 'libfrida-gadget-modulated' + shlib_suffix,
command: [
modulate,
'@INPUT@',
] + operations + endian_option + [
'--output', '@OUTPUT@',
'--nm', nm,
'--readelf', readelf,
'--otool', otool,
],
command: modulate + operations,
)
need_universal_gadget = host_os_family == 'darwin' and gadget_compat != ''
if host_os == 'macos'
identity = '@executable_path/../Frameworks/FridaGadget.dylib'
elif host_os in ['ios', 'tvos']
@@ -98,16 +88,29 @@ elif host_os in ['ios', 'tvos']
else
identity = gadget_name
endif
custom_target('frida-gadget',
gadget_for_host_arch = custom_target('frida-gadget',
input: modulated_gadget,
output: gadget_name,
command: [
post_process_module,
'@INPUT@',
'@OUTPUT@',
identity,
],
install: true,
output: need_universal_gadget ? f'@gadget_name@-@host_abi@' : gadget_name,
command: post_process + ['shared-library', identity],
install: not need_universal_gadget,
install_dir: asset_dir,
)
if need_universal_gadget
gadget = custom_target('frida-gadget-universal',
input: gadget_for_host_arch,
output: gadget_name,
command: [
lipo,
'@INPUT@',
gadget_compat,
'-create',
'-output', meson.current_build_dir() / gadget_name,
],
depends: gadget_depends,
install: true,
install_dir: asset_dir,
)
else
gadget = gadget_for_host_arch
endif
+6 -2
View File
@@ -4,5 +4,9 @@ endif
subdir('base')
subdir('pipe')
subdir('payload')
subdir('agent')
subdir('gadget')
if have_local_backend
subdir('agent')
endif
if build_gadget
subdir('gadget')
endif
+1 -1
View File
@@ -50,7 +50,7 @@ namespace Frida {
script_engine.message_from_script.connect (on_message_from_script);
script_engine.message_from_debugger.connect (on_message_from_debugger);
transmitter = new AgentMessageTransmitter (persist_timeout, frida_context, dbus_context);
transmitter = new AgentMessageTransmitter (this, persist_timeout, frida_context, dbus_context);
transmitter.closed.connect (on_transmitter_closed);
transmitter.new_candidates.connect (on_transmitter_new_candidates);
transmitter.candidate_gathering_done.connect (on_transmitter_candidate_gathering_done);
+8 -8
View File
@@ -216,34 +216,34 @@ namespace Frida {
var open_listener = new OpenDirListener (this);
listeners.add (open_listener);
interceptor.attach (Gum.Module.find_export_by_name (libc, "opendir"), open_listener);
interceptor.attach ((void *) Gum.Module.find_export_by_name (libc, "opendir"), open_listener);
var close_listener = new CloseDirListener (this);
listeners.add (close_listener);
interceptor.attach (Gum.Module.find_export_by_name (libc, "closedir"), close_listener);
interceptor.attach ((void *) Gum.Module.find_export_by_name (libc, "closedir"), close_listener);
var readdir_impl = Gum.Module.find_export_by_name (libc, "readdir");
var readdir_listener = new ReadDirListener (this, LEGACY);
listeners.add (readdir_listener);
interceptor.attach (readdir_impl, readdir_listener);
interceptor.attach ((void *) readdir_impl, readdir_listener);
var readdir64_impl = Gum.Module.find_export_by_name (libc, "readdir64");
if (readdir64_impl != null && readdir64_impl != readdir_impl) {
if (readdir64_impl != 0 && readdir64_impl != readdir_impl) {
var listener = new ReadDirListener (this, MODERN);
listeners.add (listener);
interceptor.attach (readdir64_impl, listener);
interceptor.attach ((void *) readdir64_impl, listener);
}
var readdir_r_impl = Gum.Module.find_export_by_name (libc, "readdir_r");
var readdir_r_listener = new ReadDirRListener (this, LEGACY);
listeners.add (readdir_r_listener);
interceptor.attach (readdir_r_impl, readdir_r_listener);
interceptor.attach ((void *) readdir_r_impl, readdir_r_listener);
var readdir64_r_impl = Gum.Module.find_export_by_name (libc, "readdir64_r");
if (readdir64_r_impl != null && readdir64_r_impl != readdir_r_impl) {
if (readdir64_r_impl != 0 && readdir64_r_impl != readdir_r_impl) {
var listener = new ReadDirRListener (this, MODERN);
listeners.add (listener);
interceptor.attach (readdir64_r_impl, listener);
interceptor.attach ((void *) readdir64_r_impl, listener);
}
}
+2 -2
View File
@@ -32,7 +32,7 @@ namespace Frida {
unowned Gum.InvocationListener listener = this;
#if WINDOWS
interceptor.attach (Gum.Module.find_export_by_name ("kernel32.dll", "ExitProcess"), listener);
interceptor.attach ((void *) Gum.Module.find_export_by_name ("kernel32.dll", "ExitProcess"), listener);
#else
unowned string libc = Gum.Process.query_libc_name ();
const string[] apis = {
@@ -41,7 +41,7 @@ namespace Frida {
"abort",
};
foreach (var symbol in apis) {
interceptor.attach (Gum.Module.find_export_by_name (libc, symbol), listener);
interceptor.attach ((void *) Gum.Module.find_export_by_name (libc, symbol), listener);
}
#endif
}
+1 -1
View File
@@ -28,7 +28,7 @@ namespace Frida {
var close = Gum.Module.find_export_by_name (Gum.Process.query_libc_name (), "close");
close_listener = new CloseListener (this);
interceptor.attach (close, close_listener);
interceptor.attach ((void *) close, close_listener);
}
~FileDescriptorGuard () {
+1 -1
View File
@@ -67,7 +67,7 @@ namespace Frida {
int result = -1;
#if LINUX
do {
result = Linux.dup3 (fd, pair[0], Posix.FD_CLOEXEC);
result = LibcShim.dup3 (fd, pair[0], Posix.FD_CLOEXEC);
} while (result == -1 && Posix.errno == Posix.EINTR);
#else
do {
+4 -4
View File
@@ -46,8 +46,8 @@ namespace Frida {
static construct {
unowned string libc = Gum.Process.query_libc_name ();
fork_impl = Gum.Module.find_export_by_name (libc, "fork");
vfork_impl = Gum.Module.find_export_by_name (libc, "vfork");
fork_impl = (void *) Gum.Module.find_export_by_name (libc, "fork");
vfork_impl = (void *) Gum.Module.find_export_by_name (libc, "vfork");
}
construct {
@@ -61,13 +61,13 @@ namespace Frida {
string cmdline;
FileUtils.get_contents ("/proc/self/cmdline", out cmdline);
if (cmdline == "zygote" || cmdline == "zygote64" || cmdline == "usap32" || cmdline == "usap64") {
var set_argv0 = Gum.Module.find_export_by_name ("libandroid_runtime.so", "_Z27android_os_Process_setArgV0P7_JNIEnvP8_jobjectP8_jstring");
var set_argv0 = (void *) Gum.Module.find_export_by_name ("libandroid_runtime.so", "_Z27android_os_Process_setArgV0P7_JNIEnvP8_jobjectP8_jstring");
if (set_argv0 != null) {
interceptor.attach (set_argv0, listener, (void *) HookId.SET_ARGV0);
child_recovery_behavior = DEFERRED_UNTIL_SET_ARGV0;
}
var setcontext = Gum.Module.find_export_by_name ("libselinux.so", "selinux_android_setcontext");
var setcontext = (void *) Gum.Module.find_export_by_name ("libselinux.so", "selinux_android_setcontext");
if (setcontext != null)
interceptor.attach (setcontext, listener, (void *) HookId.SET_CTX);
}
-90
View File
@@ -1,90 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{26F21663-D1B3-46E4-ACB6-115ED9CE086C}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-payload-32</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="frida-payload-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\frida-gum\bindings\gumjs\gumjs-32.vcxproj">
<Project>{8381538f-3cb5-480b-bfa4-960299af6485}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\frida-gum\gum-32.vcxproj">
<Project>{b31c7d42-54b6-49bb-b30c-11745c48b062}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{e96fc7f6-bddd-4322-8836-d9af8b731269}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{ca976c61-371a-4de5-b837-a8bd8857bc13}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)process.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="process-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="spawn-monitor-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="thread-suspend-monitor-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="libc-shim.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)cloak.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)exit-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)fd-guard.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)fdt-padder.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)fork-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)script-engine.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)spawn-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)thread-suspend-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)base-agent-session.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)portal-client.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="process.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-payload.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="cloak.vala">
<Filter>Source Files</Filter>
</None>
<None Include="exit-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="fd-guard.vala">
<Filter>Source Files</Filter>
</None>
<None Include="fdt-padder.vala">
<Filter>Source Files</Filter>
</None>
<None Include="fork-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="script-engine.vala">
<Filter>Source Files</Filter>
</None>
<None Include="spawn-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="thread-suspend-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="base-agent-session.vala">
<Filter>Source Files</Filter>
</None>
<None Include="portal-client.vala">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
</Project>
-90
View File
@@ -1,90 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{26CCF317-ACE8-4CD6-BDDE-FFED1AA2FADD}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-payload-64</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="frida-payload-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\frida-gum\bindings\gumjs\gumjs-64.vcxproj">
<Project>{0b39885e-731c-4a45-a7de-44cbdbbf0067}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\frida-gum\gum-64.vcxproj">
<Project>{dc30a450-95bc-4476-a2f9-45100562424e}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{6c15c760-cd5b-41c4-ad64-83283571aeaf}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{984e0fc8-e24c-4868-a432-6dd66cc7db4d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)process.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="process-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="spawn-monitor-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="thread-suspend-monitor-glue.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="libc-shim.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)cloak.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)exit-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)fd-guard.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)fdt-padder.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)fork-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)script-engine.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)spawn-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)thread-suspend-monitor.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)base-agent-session.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)portal-client.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="process.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-payload.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="cloak.vala">
<Filter>Source Files</Filter>
</None>
<None Include="exit-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="fd-guard.vala">
<Filter>Source Files</Filter>
</None>
<None Include="fdt-padder.vala">
<Filter>Source Files</Filter>
</None>
<None Include="fork-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="script-engine.vala">
<Filter>Source Files</Filter>
</None>
<None Include="spawn-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="thread-suspend-monitor.vala">
<Filter>Source Files</Filter>
</None>
<None Include="base-agent-session.vala">
<Filter>Source Files</Filter>
</None>
<None Include="portal-client.vala">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
</Project>
-108
View File
@@ -1,108 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="process.vala">
<Message>Compiling vala code</Message>
<Command>"$(ValaCompiler)" process.vala base-agent-session.vala script-engine.vala portal-client.vala fork-monitor.vala spawn-monitor.vala thread-suspend-monitor.vala exit-monitor.vala cloak.vala fd-guard.vala fdt-padder.vala --ccode --directory=$(IntDir) --library=frida-payload --header=$(IntDir)frida-payload.h --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" $(ValaFlags) $(FridaCoreValaFlags) --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-gum-1.0 --pkg=frida-gumjs-1.0 --pkg=frida-base || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs>$(ValaCompiler);base-agent-session.vala;script-engine.vala;portal-client.vala;fork-monitor.vala;spawn-monitor.vala;thread-suspend-monitor.vala;exit-monitor.vala;cloak.vala;fd-guard.vala;fdt-padder.vala;%(AdditionalInputs)</AdditionalInputs>
<Outputs>$(IntDir)valacode.stamp;%(Outputs)</Outputs>
</CustomBuild>
<None Include="base-agent-session.vala" />
<None Include="script-engine.vala" />
<None Include="portal-client.vala" />
<None Include="fork-monitor.vala" />
<None Include="spawn-monitor.vala" />
<None Include="thread-suspend-monitor.vala" />
<None Include="exit-monitor.vala" />
<None Include="cloak.vala" />
<None Include="fd-guard.vala" />
<None Include="fdt-padder.vala" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-payload.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)process.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="process-glue.c" />
<ClCompile Include="$(IntDir)base-agent-session.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)script-engine.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)portal-client.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)fork-monitor.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)spawn-monitor.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="spawn-monitor-glue.c" />
<ClCompile Include="$(IntDir)thread-suspend-monitor.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="thread-suspend-monitor-glue.c" />
<ClCompile Include="$(IntDir)exit-monitor.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)cloak.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)fd-guard.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="$(IntDir)fdt-padder.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="libc-shim.c" />
</ItemGroup>
</Project>
+1
View File
@@ -1,4 +1,5 @@
#define FRIDA_PRINTF_BUFFER_SIZE (512 * 1024)
#define _GNU_SOURCE
#include <errno.h>
#include <gum/gum.h>
+8
View File
@@ -0,0 +1,8 @@
#ifndef __FRIDA_LIBC_SHIM_H__
#define __FRIDA_LIBC_SHIM_H__
#ifdef HAVE_LINUX
int dup3 (int oldfd, int newfd, int flags);
#endif
#endif
+6
View File
@@ -0,0 +1,6 @@
[CCode (cheader_filename = "libc-shim.h", lower_case_cprefix = "", gir_namespace = "FridaLibcShim", gir_version = "1.0")]
namespace Frida.LibcShim {
#if LINUX
public int dup3 (int oldfd, int newfd, int flags);
#endif
}
+19 -3
View File
@@ -9,6 +9,8 @@ payload_sources = [
'spawn-monitor-glue.c',
'thread-suspend-monitor.vala',
'thread-suspend-monitor-glue.c',
'unwind-sitter.vala',
'unwind-sitter-glue.c',
'exit-monitor.vala',
'cloak.vala',
'fd-guard.vala',
@@ -20,20 +22,31 @@ if host_os_family == 'linux'
payload_sources += 'syscall-linux-@[email protected]'.format(host_arch)
endif
extra_c_args = []
extra_vala_args = []
if host_os_family != 'windows'
extra_vala_args += ['--pkg=posix']
endif
if host_os_family == 'darwin'
# FIXME: Remove this once glib-2.0.vapi provides a GLib.Private binding not involving deprecated APIs.
extra_c_args += ['-UGLIB_VERSION_MIN_REQUIRED', '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_30']
extra_vala_args += ['--pkg=frida-gum-darwin-1.0']
endif
if host_os_family == 'linux'
extra_vala_args += ['--pkg=linux']
endif
payload_vala_args = gum_vala_args + gumjs_vala_args
payload = static_library('frida-payload-' + api_version, payload_sources,
c_args: frida_component_cflags,
vala_args: extra_vala_args,
c_args: [frida_component_cflags, extra_c_args],
vala_args: [
'--vapidir=' + meson.current_source_dir(),
'--pkg=libc-shim',
payload_vala_args,
base_vala_args,
extra_vala_args,
],
vala_header: 'frida-payload.h',
vala_vapi: f'frida-payload-@[email protected]',
dependencies: [gio_dep, gee_dep, json_glib_dep, gum_dep, gumjs_dep, base_dep],
@@ -48,5 +61,8 @@ payload_dep = declare_dependency(
pkg = import('pkgconfig')
pkg.generate(payload,
description: 'Frida payload library intended for static linking into payloads',
filebase: f'frida-payload-@api_version@',
name: 'Frida Payload Library',
version: frida_version,
description: 'Building blocks commonly needed to implement payloads',
)
+12 -6
View File
@@ -27,7 +27,7 @@ namespace Frida {
private void * execve;
private Private posix_spawn_caller_is_internal = new Private ();
private static Private posix_spawn_caller_is_internal = new Private ();
#endif
public SpawnMonitor (SpawnHandler handler, MainContext main_context) {
@@ -39,10 +39,10 @@ namespace Frida {
#if WINDOWS
var create_process_internal = Gum.Module.find_export_by_name ("kernelbase.dll", "CreateProcessInternalW");
if (create_process_internal == null)
if (create_process_internal == 0)
create_process_internal = Gum.Module.find_export_by_name ("kernel32.dll", "CreateProcessInternalW");
assert (create_process_internal != null);
interceptor.attach (create_process_internal, this);
assert (create_process_internal != 0);
interceptor.attach ((void *) create_process_internal, this);
#else
unowned string libc = Gum.Process.query_libc_name ();
#if DARWIN
@@ -52,13 +52,19 @@ namespace Frida {
posix_spawnattr_getflags = (PosixSpawnAttrSetFlagsFunc) Gum.Module.find_export_by_name (libc, "posix_spawnattr_getflags");
posix_spawnattr_setflags = (PosixSpawnAttrSetFlagsFunc) Gum.Module.find_export_by_name (libc, "posix_spawnattr_setflags");
execve = Gum.Module.find_export_by_name (libc, "execve");
execve = (void *) Gum.Module.find_export_by_name (libc, "execve");
interceptor.attach ((void *) posix_spawn, this);
interceptor.replace (execve, (void *) replacement_execve, this);
#else
interceptor.attach (Gum.Module.find_export_by_name (libc, "execve"), this);
Gum.Address execve = 0;
#if ANDROID
execve = Gum.Module.find_symbol_by_name (libc, "__execve");
#endif
if (execve == 0)
execve = Gum.Module.find_export_by_name (libc, "execve");
interceptor.attach ((void *) execve, this);
#endif
#endif
}
+8 -3
View File
@@ -84,14 +84,19 @@ namespace Frida {
if (script_backend == null || thread_id == caller_thread_id)
return thread_suspend (thread_id);
int result = 0;
var interceptor = Gum.Interceptor.obtain ();
int result = 0;
while (true) {
script_backend.with_lock_held (() => {
result = thread_suspend (thread_id);
interceptor.with_lock_held (() => {
Gum.Cloak.with_lock_held (() => {
result = thread_suspend (thread_id);
});
});
});
if (result != 0 || !script_backend.is_locked ())
if (result != 0 || (!script_backend.is_locked () && !Gum.Cloak.is_locked () && !interceptor.is_locked ()))
break;
if (thread_resume (thread_id) != 0)
+521
View File
@@ -0,0 +1,521 @@
#include "frida-payload.h"
#ifdef HAVE_DARWIN
#include <capstone.h>
#include <gum/gumdarwin.h>
#include <gum/gummemory.h>
#include <ptrauth.h>
#define FRIDA_MH_MAGIC_64 0xfeedfacf
#define FRIDA_LIBUNWIND_PATH "/usr/lib/system/libunwind.dylib"
#define FRIDA_UNWIND_CURSOR_VTABLE_OFFSET_SET_INFO 0x68
#define FRIDA_UNWIND_CURSOR_VTABLE_OFFSET_GET_REG 0x18
#define FRIDA_FP_TO_SP(fp) (fp + 0x10)
#ifdef HAVE_ARM64
# define FRIDA_UNWIND_CURSOR_unwindInfoMissing 0x268
# define FRIDA_UNWAARCH64_X29 29
# define FRIDA_STRIP_MASK 0x0000007fffffffffULL
#else
# define FRIDA_UNWIND_CURSOR_unwindInfoMissing 0x100
# define FRIDA_UNWX86_64_RBP 6
#endif
typedef struct _FridaFillInfoContext FridaFillInfoContext;
typedef struct _FridaDyldUnwindSections FridaDyldUnwindSections;
typedef struct _FridaCreateArgs FridaCreateArgs;
typedef struct _FridaUnwindHookState FridaUnwindHookState;
struct _FridaFillInfoContext
{
FridaDyldUnwindSections * info;
guint missing_info;
};
struct _FridaDyldUnwindSections
{
const void * mh;
const void * dwarf_section;
uintptr_t dwarf_section_length;
const void * compact_unwind_section;
uintptr_t compact_unwind_section_length;
};
struct _FridaCreateArgs
{
GumAddress range_start;
GumAddress range_end;
};
struct _FridaUnwindHookState
{
gpointer vtable;
gssize shift;
gpointer * set_info_slot;
gpointer set_info_original;
void (* set_info) (gpointer cursor, gint is_return_address);
gpointer (* get_reg) (gpointer cursor, gint reg);
};
#if __has_feature (ptrauth_calls)
# define FRIDA_RESIGN_PTR(x) GSIZE_TO_POINTER (gum_sign_code_address (gum_strip_code_address (GUM_ADDRESS (x))))
#else
# define FRIDA_RESIGN_PTR(x) (x)
#endif
static FridaDyldUnwindSections * frida_get_cached_sections (GumAddress range_start, GumAddress range_end);
static FridaDyldUnwindSections * frida_create_cached_sections (FridaCreateArgs * args);
static gboolean frida_fill_info (const GumDarwinSectionDetails * details, FridaFillInfoContext * ctx);
static void frida_unwind_cursor_set_info_replacement (gpointer cursor, gint is_return_address);
static gpointer frida_find_vtable (void);
static gboolean frida_compute_vtable_shift (gpointer vtable, gssize * shift);
#ifdef HAVE_ARM64
static gboolean frida_find_bss_range (const GumSectionDetails * details, GumMemoryRange * range);
#else
static gboolean frida_is_empty_function (GumAddress address);
static gboolean frida_has_first_match (GumAddress address, gsize size, gboolean * matches);
#endif
static FridaUnwindHookState * state = NULL;
void
_frida_unwind_sitter_fill_unwind_sections (GumAddress invader_start, GumAddress invader_end, void * info)
{
FridaDyldUnwindSections * unwind_sections = info;
FridaDyldUnwindSections * cached;
cached = frida_get_cached_sections (invader_start, invader_end);
if (cached == NULL)
return;
memcpy (unwind_sections, cached, sizeof (FridaDyldUnwindSections));
}
void
_frida_unwind_sitter_hook_libunwind (void)
{
#if GLIB_SIZEOF_VOID_P == 8
gpointer * set_info_slot;
gpointer get_reg_impl;
GumInterceptor * interceptor;
if (state != NULL)
return;
state = g_slice_new0 (FridaUnwindHookState);
if (state == NULL)
return;
state->vtable = frida_find_vtable ();
if (state->vtable == NULL)
goto unsupported_version;
if (!frida_compute_vtable_shift (state->vtable, &state->shift))
goto unsupported_version;
set_info_slot = (gpointer *) (GUM_ADDRESS (state->vtable) + FRIDA_UNWIND_CURSOR_VTABLE_OFFSET_SET_INFO + state->shift);
get_reg_impl = *(gpointer *) (GUM_ADDRESS (state->vtable) + FRIDA_UNWIND_CURSOR_VTABLE_OFFSET_GET_REG + state->shift);
state->set_info_slot = set_info_slot;
state->set_info_original = *set_info_slot;
state->set_info = FRIDA_RESIGN_PTR (state->set_info_original);
state->get_reg = FRIDA_RESIGN_PTR (get_reg_impl);
interceptor = gum_interceptor_obtain ();
if (gum_interceptor_replace (interceptor, state->set_info_original, frida_unwind_cursor_set_info_replacement, NULL, NULL)
!= GUM_REPLACE_OK)
goto unsupported_version;
return;
unsupported_version:
g_slice_free (FridaUnwindHookState, state);
state = NULL;
#endif
}
void
_frida_unwind_sitter_unhook_libunwind (void)
{
GumInterceptor * interceptor;
if (state == NULL)
return;
interceptor = gum_interceptor_obtain ();
gum_interceptor_revert (interceptor, state->set_info_original);
g_slice_free (FridaUnwindHookState, state);
state = NULL;
}
static FridaDyldUnwindSections *
frida_get_cached_sections (GumAddress range_start, GumAddress range_end)
{
static GOnce get_sections_once = G_ONCE_INIT;
FridaCreateArgs args;
args.range_start = range_start;
args.range_end = range_end;
g_once (&get_sections_once, (GThreadFunc) frida_create_cached_sections, &args);
return (FridaDyldUnwindSections *) get_sections_once.retval;
}
static FridaDyldUnwindSections *
frida_create_cached_sections (FridaCreateArgs * args)
{
FridaDyldUnwindSections * cached_sections;
gsize page_size;
gpointer header;
GumPageProtection prot;
GumDarwinModule * module;
FridaFillInfoContext ctx;
page_size = gum_query_page_size ();
header = GSIZE_TO_POINTER (args->range_start);
while ((gum_memory_query_protection (header, &prot) && (prot & GUM_PAGE_READ) == 0) ||
(*(guint32 *) header != FRIDA_MH_MAGIC_64 && header + 4 <= GSIZE_TO_POINTER (args->range_end)))
{
header += page_size;
}
if (*(guint32 *) header != FRIDA_MH_MAGIC_64)
return NULL;
cached_sections = g_slice_new0 (FridaDyldUnwindSections);
cached_sections->mh = header;
module = gum_darwin_module_new_from_memory ("Frida", mach_task_self (), GPOINTER_TO_SIZE (header), GUM_DARWIN_MODULE_FLAGS_NONE, NULL);
if (module == NULL)
return cached_sections;
ctx.info = cached_sections;
ctx.missing_info = 2;
gum_darwin_module_enumerate_sections (module, (GumFoundDarwinSectionFunc) frida_fill_info, &ctx);
g_object_unref (module);
return cached_sections;
}
static gboolean
frida_fill_info (const GumDarwinSectionDetails * details, FridaFillInfoContext * ctx)
{
if (strcmp ("__TEXT", details->segment_name) != 0)
return TRUE;
if (strcmp ("__eh_frame", details->section_name) == 0)
{
ctx->missing_info--;
ctx->info->dwarf_section = GSIZE_TO_POINTER (details->vm_address);
ctx->info->dwarf_section_length = details->size;
}
else if (strcmp ("__unwind_info", details->section_name) == 0)
{
ctx->missing_info--;
ctx->info->compact_unwind_section = GSIZE_TO_POINTER (details->vm_address);
ctx->info->compact_unwind_section_length = details->size;
}
return ctx->missing_info > 0;
}
static void
frida_unwind_cursor_set_info_replacement (gpointer self, gint is_return_address)
{
gboolean missing_info;
GumAddress fp, stored_pc;
gpointer * stored_pc_slot;
#if defined (HAVE_ARM64) && !__has_feature (ptrauth_calls)
gboolean was_signed = FALSE;
#endif
if (state == NULL)
return;
state->set_info (self, is_return_address);
#ifdef HAVE_ARM64
fp = GUM_ADDRESS (state->get_reg (self, FRIDA_UNWAARCH64_X29));
#else
fp = GUM_ADDRESS (state->get_reg (self, FRIDA_UNWX86_64_RBP));
#endif
if (fp == 0 || fp == -1)
return;
missing_info = *((guint8 *) self + FRIDA_UNWIND_CURSOR_unwindInfoMissing);
stored_pc_slot = GSIZE_TO_POINTER (fp + GLIB_SIZEOF_VOID_P);
stored_pc = GUM_ADDRESS (*stored_pc_slot);
#if __has_feature (ptrauth_calls)
stored_pc = gum_strip_code_address (stored_pc);
#elif defined (HAVE_ARM64)
was_signed = (stored_pc & ~FRIDA_STRIP_MASK) != 0ULL;
if (was_signed)
stored_pc &= FRIDA_STRIP_MASK;
#endif
if (!missing_info)
{
GumAddress translated;
translated = GUM_ADDRESS (gum_invocation_stack_translate (gum_interceptor_get_current_stack (), GSIZE_TO_POINTER (stored_pc)));
if (translated != stored_pc)
{
#if __has_feature (ptrauth_calls)
*stored_pc_slot = ptrauth_sign_unauthenticated (
ptrauth_strip (GSIZE_TO_POINTER (translated), ptrauth_key_asia), ptrauth_key_asib, FRIDA_FP_TO_SP (fp));
#elif defined (HAVE_ARM64)
if (was_signed)
{
GumAddress resigned;
asm volatile (
"mov x17, %1\n\t"
"mov x16, %2\n\t"
".byte 0x5f, 0x21, 0x03, 0xd5\n\t" /* pacib1716 */
"mov %0, x17\n\t"
: "=r" (resigned)
: "r" (translated & FRIDA_STRIP_MASK),
"r" (FRIDA_FP_TO_SP (fp))
: "x16", "x17"
);
*stored_pc_slot = GSIZE_TO_POINTER (resigned);
}
else
{
*stored_pc_slot = GSIZE_TO_POINTER (translated);
}
#else
*stored_pc_slot = GSIZE_TO_POINTER (translated);
#endif
}
}
}
static gpointer
frida_find_vtable (void)
{
GumAddress result = 0;
GumAddress export;
uint64_t address;
G_GNUC_UNUSED cs_err err;
csh capstone;
cs_insn * insn = NULL;
const uint8_t * code;
size_t size;
const size_t max_size = 2048;
export = gum_module_find_export_by_name (FRIDA_LIBUNWIND_PATH, "unw_init_local");
if (export == 0)
export = gum_module_find_export_by_name (FRIDA_LIBUNWIND_PATH, "_Unwind_RaiseException");
if (export == 0)
return NULL;
export = gum_strip_code_address (export);
address = export;
#ifdef HAVE_ARM64
cs_arch_register_arm64 ();
err = cs_open (CS_ARCH_ARM64, CS_MODE_LITTLE_ENDIAN, &capstone);
#else
cs_arch_register_x86 ();
err = cs_open (CS_ARCH_X86, CS_MODE_64, &capstone);
#endif
g_assert (err == CS_ERR_OK);
err = cs_option (capstone, CS_OPT_DETAIL, CS_OPT_ON);
g_assert (err == CS_ERR_OK);
insn = cs_malloc (capstone);
code = GSIZE_TO_POINTER (export);
size = max_size;
#ifdef HAVE_ARM64
{
GumAddress last_adrp;
guint last_adrp_reg;
GumMemoryRange bss_range;
bss_range.base_address = 0;
gum_module_enumerate_sections (FRIDA_LIBUNWIND_PATH, (GumFoundSectionFunc) frida_find_bss_range, &bss_range);
while (cs_disasm_iter (capstone, &code, &size, &address, insn))
{
if (insn->id == ARM64_INS_RET || insn->id == ARM64_INS_RETAA || insn->id == ARM64_INS_RETAB)
break;
if (insn->id == ARM64_INS_ADRP)
{
if (result != 0)
break;
last_adrp = (GumAddress) insn->detail->arm64.operands[1].imm;
last_adrp_reg = insn->detail->arm64.operands[0].reg;
}
else if (insn->id == ARM64_INS_ADD && insn->detail->arm64.operands[0].reg == last_adrp_reg)
{
GumAddress candidate;
gboolean is_bss;
candidate = last_adrp + (GumAddress) insn->detail->arm64.operands[2].imm;
is_bss = bss_range.base_address != 0 &&
bss_range.base_address <= candidate &&
candidate < bss_range.base_address + bss_range.size;
if (!is_bss)
{
if (result == 0)
{
result = candidate;
last_adrp = candidate;
}
else
{
result = candidate;
break;
}
}
}
else if (result != 0)
{
break;
}
}
}
#else
while (cs_disasm_iter (capstone, &code, &size, &address, insn))
{
if (insn->id == X86_INS_RET)
break;
if (insn->id == X86_INS_LEA)
{
const cs_x86_op * op = &insn->detail->x86.operands[1];
if (op->type == X86_OP_MEM && op->mem.base == X86_REG_RIP)
{
result = address + op->mem.disp * op->mem.scale;
break;
}
}
}
#endif
if (insn != NULL)
cs_free (insn, 1);
cs_close (&capstone);
return GSIZE_TO_POINTER (result);
}
#ifdef HAVE_ARM64
static gboolean
frida_find_bss_range (const GumSectionDetails * details, GumMemoryRange * range)
{
if (strcmp (details->name, "__bss") == 0)
{
range->base_address = details->address;
range->size = details->size;
return FALSE;
}
return TRUE;
}
static gboolean
frida_compute_vtable_shift (gpointer vtable, gssize * shift)
{
gboolean result = FALSE;
G_GNUC_UNUSED cs_err err;
csh capstone;
cs_insn * insn = NULL;
const uint8_t * code;
uint64_t address;
size_t size = 4;
cs_arch_register_arm64 ();
err = cs_open (CS_ARCH_ARM64, CS_MODE_LITTLE_ENDIAN, &capstone);
g_assert (err == CS_ERR_OK);
insn = cs_malloc (capstone);
code = gum_strip_code_pointer (*(gpointer *) vtable);
address = GPOINTER_TO_SIZE (code);
if (cs_disasm_iter (capstone, &code, &size, &address, insn))
{
if (insn->id == ARM64_INS_RET || insn->id == ARM64_INS_RETAA || insn->id == ARM64_INS_RETAB)
*shift = 0;
else
*shift = -2 * GLIB_SIZEOF_VOID_P;
result = TRUE;
}
if (insn != NULL)
cs_free (insn, 1);
cs_close (&capstone);
return result;
}
#else
static gboolean
frida_compute_vtable_shift (gpointer vtable, gssize * shift)
{
GumAddress cursor = GPOINTER_TO_SIZE (vtable);
GumAddress error = cursor + 16 * GLIB_SIZEOF_VOID_P;
while (cursor < error && *(gpointer *) GSIZE_TO_POINTER (cursor) == NULL)
cursor += GLIB_SIZEOF_VOID_P;
if (cursor == error)
return FALSE;
if (frida_is_empty_function (GUM_ADDRESS (*(gpointer *) GSIZE_TO_POINTER (cursor))) &&
frida_is_empty_function (GUM_ADDRESS (*(gpointer *) GSIZE_TO_POINTER (cursor + GLIB_SIZEOF_VOID_P))))
{
*shift = cursor - GPOINTER_TO_SIZE (vtable);
}
else
{
*shift = cursor - GPOINTER_TO_SIZE (vtable) - 2 * GLIB_SIZEOF_VOID_P;
}
return TRUE;
}
static gboolean
frida_is_empty_function (GumAddress address)
{
gboolean matches = FALSE;
GumMemoryRange range;
GumMatchPattern * pattern;
range.base_address = address;
range.size = 6;
/*
* 55 push rbp
* 4889e5 mov rbp, rsp
* 5d pop rbp
* c3 ret
*/
pattern = gum_match_pattern_new_from_string ("55 48 89 e5 5d c3");
gum_memory_scan (&range, pattern, (GumMemoryScanMatchFunc) frida_has_first_match, &matches);
gum_match_pattern_unref (pattern);
return matches;
}
static gboolean
frida_has_first_match (GumAddress address, gsize size, gboolean * matches)
{
*matches = TRUE;
return FALSE;
}
#endif
#endif
+76
View File
@@ -0,0 +1,76 @@
namespace Frida {
#if DARWIN
public class UnwindSitter : Object {
public weak ProcessInvader invader {
get;
construct;
}
private DyldFindUnwindSectionsFunc dyld_find_unwind_sections;
private const string LIBDYLD = "/usr/lib/system/libdyld.dylib";
[CCode (has_target = false)]
private delegate int DyldFindUnwindSectionsFunc (void * addr, void * info);
public UnwindSitter (ProcessInvader invader) {
Object (invader: invader);
}
construct {
var interceptor = Gum.Interceptor.obtain ();
dyld_find_unwind_sections = (DyldFindUnwindSectionsFunc)
Gum.Module.find_export_by_name (LIBDYLD, "_dyld_find_unwind_sections");
interceptor.replace ((void *) dyld_find_unwind_sections, (void *) replacement_dyld_find_unwind_sections, this);
_hook_libunwind ();
}
public override void dispose () {
var interceptor = Gum.Interceptor.obtain ();
_unhook_libunwind ();
interceptor.revert ((void *) dyld_find_unwind_sections);
base.dispose ();
}
private static int replacement_dyld_find_unwind_sections (void * addr, void * info) {
unowned Gum.InvocationContext context = Gum.Interceptor.get_current_invocation ();
unowned UnwindSitter sitter = (UnwindSitter) context.get_replacement_data ();
Gum.MemoryRange range = sitter.invader.get_memory_range ();
var range_end = range.base_address + range.size;
var address = Gum.Address.from_pointer (addr);
#if ARM64
address &= 0x7ffffffffULL;
#endif
var is_ours = address >= range.base_address && address < range_end;
if (!is_ours)
return sitter.dyld_find_unwind_sections (addr, info);
_fill_unwind_sections (range.base_address, range_end, info);
return 1;
}
public extern static void _fill_unwind_sections (Gum.Address invader_start, Gum.Address invader_end, void * info);
public extern static void _hook_libunwind ();
public extern static void _unhook_libunwind ();
}
#else
public class UnwindSitter : Object {
public weak ProcessInvader invader {
get;
construct;
}
public UnwindSitter (ProcessInvader invader) {
Object (invader: invader);
}
}
#endif
}
-84
View File
@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4C39C3CF-13E5-4346-B6AE-F73013105936}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-pipe-32</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="frida-pipe-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\base\frida-base-32.vcxproj">
<Project>{c4203124-c838-437b-8662-ca477b146655}</Project>
<Private>false</Private>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-50
View File
@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{e96fc7f6-bddd-4322-8836-d9af8b731269}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{ca976c61-371a-4de5-b837-a8bd8857bc13}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pipe-windows.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)pipe.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="pipe-sddl.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="pipe.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-pipe.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
<ClInclude Include="pipe-glue.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="pipe-sddl.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
-84
View File
@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{D50F460F-9C4D-42EB-A8C4-48C0C46CFAAF}</ProjectGuid>
<RootNamespace>frida</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>frida-pipe-64</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(SolutionDir)releng\frida-toolchain.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)releng\frida-$(Configuration).props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)build\tmp-windows\$(Platform)-$(Configuration)\$(ProjectName)\</OutDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(IntDir)..\frida-base-64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>$(FridaComponentDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="frida-pipe-common.props" />
<ItemGroup>
<ProjectReference Include="..\..\..\releng\frida-deps.vcxproj">
<Project>{4afce7c4-6d9a-4663-b43c-d2e518486910}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\base\frida-base-64.vcxproj">
<Project>{a31522d9-715b-4e04-aa57-df7afebe082c}</Project>
<Private>false</Private>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-50
View File
@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Source Files\generated">
<UniqueIdentifier>{6c15c760-cd5b-41c4-ad64-83283571aeaf}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated">
<UniqueIdentifier>{984e0fc8-e24c-4868-a432-6dd66cc7db4d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pipe-windows.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)pipe.c">
<Filter>Source Files\generated</Filter>
</ClCompile>
<ClCompile Include="pipe-sddl.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="pipe.vala">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-pipe.h">
<Filter>Header Files\generated</Filter>
</ClInclude>
<ClInclude Include="pipe-glue.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="pipe-sddl.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
-38
View File
@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>$(FridaCoreDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<CustomBuild Include="pipe.vala">
<Message>Compiling vala code</Message>
<Command>"$(ValaCompiler)" pipe.vala --ccode --directory=$(IntDir) --library=frida-pipe --header=$(IntDir)frida-pipe.h $(ValaFlags) $(FridaCoreValaFlags) --vapidir="$(IntDir)..\frida-base-32" --vapidir="$(IntDir)..\frida-base-64" --pkg=gio-2.0 --pkg=nice --pkg=gee-0.8 --pkg=json-glib-1.0 --pkg=frida-base || exit 1
echo &gt; "$(IntDir)valacode.stamp"
</Command>
<AdditionalInputs>$(ValaCompiler);%(AdditionalInputs)</AdditionalInputs>
<Outputs>$(IntDir)valacode.stamp;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IntDir)frida-pipe.h" />
<ClInclude Include="pipe-glue.h" />
<ClInclude Include="pipe-sddl.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IntDir)pipe.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="pipe-windows.c" />
<ClCompile Include="pipe-sddl.c" />
</ItemGroup>
</Project>
+11 -11
View File
@@ -3,7 +3,7 @@ pipe_sources = [
]
system_deps = []
vala_args = []
extra_vala_args = []
if host_os_family == 'windows'
pipe_sources += [
@@ -11,25 +11,25 @@ if host_os_family == 'windows'
'pipe-sddl.c',
]
elif host_os in ['macos', 'ios', 'tvos']
pipe_sources += ['pipe-darwin.c']
system_deps += [gio_unix_dep]
vala_args += ['--pkg=frida-gum-darwin-1.0', '--pkg=posix']
pipe_sources += 'pipe-darwin.c'
extra_vala_args += '--pkg=frida-gum-darwin-1.0'
else
pipe_sources += ['pipe-unix.c']
pipe_sources += 'pipe-unix.c'
endif
system_deps += [gio_unix_dep]
vala_args += ['--pkg=posix']
if host_os_family != 'windows'
system_deps += gio_unix_dep
extra_vala_args += ['--pkg=gio-unix-2.0', '--pkg=posix']
endif
if host_os == 'android'
system_deps += [frida_selinux_dep]
vala_args += frida_selinux_vala_args
system_deps += libselinux_dep
extra_vala_args += '--pkg=libselinux'
endif
pipe = static_library('frida-pipe', pipe_sources,
c_args: frida_component_cflags,
vala_args: vala_args,
vala_args: base_vala_args + extra_vala_args,
vala_header: 'frida-pipe.h',
dependencies: [glib_dep, gobject_dep, gio_dep, gee_dep, base_dep] + system_deps,
)
+3 -2
View File
@@ -1,10 +1,11 @@
frida_selinux_incdir = include_directories('.')
install_headers('frida-selinux.h', subdir: 'frida-' + api_version)
frida_selinux_h = files('frida-selinux.h')
install_headers(frida_selinux_h, subdir: 'frida-' + api_version)
frida_selinux = static_library('frida-selinux', 'patch.c',
c_args: frida_component_cflags,
dependencies: [glib_dep, libselinux_dep, libsepol_dep],
dependencies: [glib_dep, gio_dep, libselinux_dep, libsepol_dep],
)
frida_selinux_dep = declare_dependency(
+23
View File
@@ -0,0 +1,23 @@
@setlocal
@echo off
rem:: Based on: https://github.com/microsoft/terminal/issues/217#issuecomment-737594785
goto :_start_
:set_real_dp0
set dp0=%~dp0
set "dp0=%dp0:~0,-1%"
goto :eof
:_start_
call :set_real_dp0
if not exist "%dp0%\releng\meson\meson.py" (
pushd "%dp0%" & git submodule update --init --recursive --depth 1 & popd
if %errorlevel% neq 0 exit /b %errorlevel%
)
endlocal & goto #_undefined_# 2>nul || title %COMSPEC% & python ^
-c "import sys; sys.path.insert(0, sys.argv[1]); from releng.meson_make import main; main()" ^
"%dp0%" ^
.\build ^
%*
+341 -100
View File
@@ -1,12 +1,49 @@
project('frida-core', 'vala', 'c', 'cpp',
version: '1.0.0',
meson_version: '>=0.58.0',
default_options: ['c_std=gnu99', 'cpp_std=c++11'],
version: run_command(find_program('python3'), files('tools' / 'detect-version.py'),
capture: true,
check: true).stdout().strip(),
meson_version: '>=1.1.0',
default_options: ['c_std=gnu99,c99', 'cpp_std=c++17'],
)
if not meson.get_compiler('vala').version().endswith('-frida')
error('''Incompatible Vala compiler detected.
Frida currently relies on features not yet upstream. Grab the Frida-optimized
Vala compiler from:
https://github.com/frida/vala''')
endif
c_languages = ['c', 'cpp']
cc = meson.get_compiler('c')
cpp = meson.get_compiler('cpp')
releng = meson.global_source_root() / 'releng'
if not import('fs').exists(releng)
releng = meson.project_source_root() / 'releng'
endif
frida_version = get_option('frida_version')
if frida_version == ''
frida_version = run_command(releng / 'frida_version.py', meson.project_source_root(), check: true).stdout().strip()
endif
tokens = frida_version.split('.')
frida_major_version = tokens[0].to_int()
frida_minor_version = tokens[1].to_int()
if tokens.length() == 4
frida_micro_version = tokens[2].split('-')[0].to_int() - 1
frida_nano_version = tokens[3].to_int() + 1
else
assert(tokens.length() == 3)
frida_micro_version = tokens[2].to_int()
frida_nano_version = 0
endif
frida_profile = (frida_version != '0.0.0' and frida_nano_version == 0) ? 'prod' : 'dev'
api_version = '1.0'
header_install_dir = get_option('includedir') / 'frida-' + api_version
header_install_dir = get_option('includedir') / f'frida-@api_version@'
build_os = build_machine.system()
if build_os == 'android'
@@ -14,13 +51,23 @@ if build_os == 'android'
else
build_os_family = build_os
endif
host_os = host_machine.system()
if host_os == 'android'
host_os_family = host_machine.system()
if host_os_family == 'android'
host_os_family = 'linux'
else
host_os_family = host_os
endif
host_is_64bit = host_machine.cpu_family().endswith('64')
tokens = host_machine.subsystem().split('-')
host_os = tokens[0]
if tokens.length() == 2
host_config = tokens[1]
elif host_os_family == 'windows'
if cc.get_argument_syntax() == 'msvc'
host_config = get_option('b_vscrt')
else
host_config = 'mingw'
endif
else
host_config = ''
endif
if host_machine.cpu_family() == 'arm'
host_arch = 'arm'
host_abi = 'arm'
@@ -45,26 +92,33 @@ else
host_arch = host_machine.cpu_family()
host_abi = host_arch
endif
host_toolchain = (host_os_family == 'darwin') ? 'apple' : 'gnu'
gumjs_archs = {
'x86': 'ia32',
'x86_64': 'x64',
}
host_arch_gumjs = gumjs_archs.get(host_arch, host_arch)
c_languages = ['c', 'cpp']
if host_os_family == 'darwin'
c_languages += ['objc', 'objcpp']
add_languages('objc', 'objcpp', native: false)
endif
cc = meson.get_compiler('c')
python = import('python').find_installation()
if cc.get_argument_syntax() == 'msvc'
host_toolchain = 'microsoft'
resource_blob_extension = '.obj'
else
host_toolchain = (host_os_family == 'darwin') ? 'apple' : 'gnu'
resource_blob_extension = '.S'
endif
vala_flags = []
frida_component_cflags = []
ndebug = get_option('b_ndebug')
if ndebug == 'true' or (ndebug == 'if-release' and not get_option('debug'))
optimize_for_prod = ndebug == 'true' or (ndebug == 'if-release' and not get_option('debug'))
if optimize_for_prod
frida_component_cflags += [
'-DG_DISABLE_ASSERT',
'-DG_DISABLE_CHECKS',
@@ -84,30 +138,6 @@ if host_arch == 'arm'
endif
if host_os_family == 'darwin'
apple_os_flavors = [
['macOS', 'OSX'],
['iOS', 'IOS'],
['watchOS', 'WATCH'],
['tvOS', 'TV'],
]
foreach candidate : apple_os_flavors
name = candidate[0]
constant = candidate[1]
if cc.compiles('''
#include <TargetConditionals.h>
#if !TARGET_OS_@0@
# error Nope
#endif
'''.format(constant),
name: f'compiling for @name@')
host_os = name.to_lower()
break
endif
endforeach
if host_os == 'darwin'
error('Unable to detect Apple OS flavor')
endif
have_ptrauth_src = '''
#ifdef __clang__
# if __has_feature (ptrauth_calls)
@@ -126,28 +156,31 @@ if host_os_family == 'darwin'
endif
endif
if host_os_family == 'linux' and cc.has_header('android/api-level.h')
host_os = 'android'
endif
if cc.sizeof('void *') == 8
host_cpu_mode = '64'
else
host_cpu_mode = '32'
endif
cdata = configuration_data()
if cc.get_define('FRIDA_VERSION') == ''
version = meson.project_version()
tokens = version.split('.')
cdata.set_quoted('FRIDA_VERSION', version)
cdata.set('FRIDA_MAJOR_VERSION', tokens[0].to_int())
cdata.set('FRIDA_MINOR_VERSION', tokens[1].to_int())
cdata.set('FRIDA_MICRO_VERSION', tokens[2].to_int())
cdata.set('FRIDA_NANO_VERSION', 0)
if host_os_family == 'darwin' and host_arch == 'arm64'
host_is_modern = host_abi == 'arm64e'
else
host_is_modern = host_cpu_mode == '64'
endif
cdata.set_quoted('FRIDA_PREFIX', get_option('prefix'))
cdata = configuration_data()
cdata.set_quoted('FRIDA_VERSION', frida_version)
cdata.set('FRIDA_MAJOR_VERSION', frida_major_version)
cdata.set('FRIDA_MINOR_VERSION', frida_minor_version)
cdata.set('FRIDA_MICRO_VERSION', frida_micro_version)
cdata.set('FRIDA_NANO_VERSION', frida_nano_version)
escaped_prefix = get_option('prefix')
if host_os_family == 'windows'
escaped_prefix = escaped_prefix.replace('\\', '\\\\')
endif
cdata.set_quoted('FRIDA_PREFIX', escaped_prefix)
exe_suffix = (host_os_family == 'windows') ? '.exe' : ''
if host_os_family == 'windows'
@@ -162,11 +195,14 @@ helper_name = 'frida-helper' + exe_suffix
agent_name = 'frida-agent' + shlib_suffix
gadget_name = 'frida-gadget' + shlib_suffix
root_asset_dir = get_option('libdir') / 'frida'
if host_os_family == 'darwin'
asset_dir = get_option('libdir') / 'frida'
asset_dir = root_asset_dir
default_asset_path_template = get_option('prefix') / get_option('libdir') / 'frida'
else
asset_dir = get_option('libdir') / 'frida' / host_cpu_mode
asset_dir = root_asset_dir / host_cpu_mode
asset_dir_modern = root_asset_dir / '64'
asset_dir_legacy = root_asset_dir / '32'
default_asset_path_template = get_option('prefix') / get_option('libdir') / 'frida' / '<arch>'
endif
@@ -240,18 +276,151 @@ if get_option('b_sanitize') == 'address'
cdata.set('HAVE_ASAN', 1)
endif
glib_dep = dependency('glib-2.0', version: '>=2.74')
gum_dep = dependency('frida-gum-1.0', default_options: [
f'frida_version=@frida_version@',
'gumjs=enabled',
])
gumjs_dep = dependency('frida-gumjs-1.0')
gumjs_inspector_dep = dependency('frida-gumjs-inspector-1.0')
glib_options = [
'cocoa=disabled',
'selinux=disabled',
'xattr=false',
'libmount=disabled',
'tests=false',
'nls=disabled',
]
if optimize_for_prod
glib_options += [
'glib_debug=disabled',
'glib_assert=false',
'glib_checks=false',
]
endif
gee_options = [
'disable-introspection=true',
]
if optimize_for_prod
gee_options += 'disable-internal-asserts=true'
endif
glib_dep = dependency('glib-2.0', version: '>=2.72', default_options: glib_options)
gobject_dep = dependency('gobject-2.0')
gmodule_dep = dependency('gmodule-2.0')
gio_dep = dependency('gio-2.0')
gee_dep = dependency('gee-0.8')
json_glib_dep = dependency('json-glib-1.0')
libsoup_dep = dependency('libsoup-3.0')
gum_dep = dependency('frida-gum-1.0')
gumjs_dep = dependency('frida-gumjs-1.0')
gumjs_inspector_dep = dependency('frida-gumjs-inspector-1.0')
quickjs_dep = dependency('quickjs', required: false)
gee_dep = dependency('gee-0.8', default_options: gee_options)
json_glib_dep = dependency('json-glib-1.0', default_options: [
'introspection=disabled',
'gtk_doc=disabled',
'tests=false',
])
libsoup_dep = dependency('libsoup-3.0', default_options: [
'gssapi=disabled',
'ntlm=disabled',
'brotli=disabled',
'tls_check=false',
'introspection=disabled',
'vapi=disabled',
'docs=disabled',
'examples=disabled',
'tests=false',
'sysprof=disabled',
])
brotlidec_dep = dependency('libbrotlidec')
quickjs_dep = dependency('quickjs', required: get_option('barebone_backend'), default_options: [
'libc=false',
'bignum=true',
'atomics=disabled',
'stack_check=disabled',
])
native_glib_dep = dependency('glib-2.0', version: '>=2.74', native: true, default_options: glib_options)
native_gio_dep = dependency('gio-2.0', native: true)
native_gee_dep = dependency('gee-0.8', native: true, default_options: gee_options)
native_brotlienc_dep = dependency('libbrotlienc', native: true)
if host_os_family == 'windows'
gio_windows_dep = dependency('gio-windows-2.0')
else
gio_unix_dep = dependency('gio-unix-2.0')
endif
have_local_backend = get_option('local_backend').allowed()
have_fruity_backend = get_option('fruity_backend').allowed()
have_droidy_backend = get_option('droidy_backend').allowed()
have_socket_backend = get_option('socket_backend').allowed()
have_barebone_backend = quickjs_dep.found()
have_compiler_backend = get_option('compiler_backend') \
.disable_if(not have_local_backend, error_message: 'compiler backend requires the local backend for script execution') \
.disable_auto_if(host_os == 'watchos') \
.allowed()
build_gadget = get_option('gadget') \
.disable_auto_if(meson.is_subproject()) \
.allowed()
build_server = get_option('server') \
.disable_if(not have_local_backend, error_message: 'frida-server requires the local backend to be included') \
.disable_if(host_os == 'watchos', error_message: 'frida-server not yet supported on watchOS') \
.disable_auto_if(meson.is_subproject()) \
.allowed()
build_portal = get_option('portal') \
.disable_if(host_os == 'watchos', error_message: 'frida-portal not yet supported on watchOS') \
.disable_auto_if(meson.is_subproject()) \
.allowed()
build_inject = get_option('inject') \
.disable_if(not have_local_backend, error_message: 'frida-inject requires the local backend to be included') \
.disable_if(host_os == 'watchos', error_message: 'frida-inject not yet supported on watchOS') \
.disable_auto_if(meson.is_subproject()) \
.allowed()
build_tests = get_option('tests') \
.disable_if(host_os == 'watchos', error_message: 'tests not yet supported on watchOS') \
.disable_auto_if(meson.is_subproject() or not meson.can_run_host_binaries()) \
.allowed()
foreach b : [['local', have_local_backend],
['fruity', have_fruity_backend],
['droidy', have_droidy_backend],
['socket', have_socket_backend],
['barebone', have_barebone_backend],
['compiler', have_compiler_backend]]
if b[1]
vala_flags += '--define=HAVE_@0@_BACKEND'.format(b[0].to_upper())
endif
endforeach
if have_barebone_backend or have_compiler_backend
node = find_program('node', version: '>=18.0.0', native: true, required: false)
if not node.found()
error('Need Node.js >= 18.0.0 to process JavaScript code at build time')
endif
npm = find_program('npm', native: true, required: false)
if not npm.found()
error('Need npm to process JavaScript code at build time')
endif
endif
gi_dep = dependency('gobject-introspection-1.0', required: false)
if gi_dep.found()
girdir = gi_dep.get_variable('girdir')
else
girdir = get_option('prefix') / get_option('datadir') / 'gir-1.0'
endif
uninstalled_girdir = meson.current_build_dir() / 'src'
vapidir = get_option('datadir') / 'vala' / 'vapi'
gum_vala_args = [
'--pkg=frida-gum-1.0',
'--vapidir=' + gum_dep.get_variable('frida_vapidir'),
]
gumjs_vala_args = ['--pkg=frida-gumjs-1.0', '--pkg=gio-2.0', gum_vala_args]
gumjs_inspector_vala_args = ['--pkg=frida-gumjs-inspector-1.0', gum_vala_args]
have_v8 = gumjs_dep.get_variable('gumjs_v8') == 'enabled'
if have_v8
@@ -264,22 +433,13 @@ else
v8_mksnapshot = ''
endif
native_glib_dep = dependency('glib-2.0', version: '>=2.74', native: true)
native_gio_dep = dependency('gio-2.0', native: true)
native_gee_dep = dependency('gee-0.8', native: true)
native_brotlienc_dep = dependency('libbrotlienc', native: true)
if host_os_family == 'windows'
gio_windows_dep = dependency('gio-windows-2.0')
else
gio_unix_dep = dependency('gio-unix-2.0')
endif
backend_deps_private = []
backend_reqs_private = []
backend_libs_private = []
if quickjs_dep.found()
backend_deps_private += quickjs_dep
backend_reqs_private += 'quickjs'
endif
if host_os_family == 'linux' and cc.has_function('openpty', prefix: '#include <pty.h>')
@@ -287,9 +447,13 @@ if host_os_family == 'linux' and cc.has_function('openpty', prefix: '#include <p
endif
if host_os == 'android'
termux_elf_cleaner = find_program('termux-elf-cleaner', native: true)
libselinux_dep = dependency('libselinux', version: '>=3.0')
libsepol_dep = dependency('libsepol', version: '>=3.0')
backend_deps_private += [libselinux_dep, libsepol_dep]
backend_reqs_private += ['libselinux', 'libsepol']
else
termux_elf_cleaner = []
endif
tls_provider_dep = dependency('gioopenssl', required: get_option('connectivity'))
@@ -297,20 +461,31 @@ if tls_provider_dep.found()
cdata.set('HAVE_GIOOPENSSL', 1)
vala_flags += ['--define=HAVE_GIOOPENSSL']
backend_deps_private += tls_provider_dep
backend_reqs_private += 'gioopenssl'
endif
nice_dep = dependency('nice', required: get_option('connectivity'))
nice_dep = dependency('nice', required: get_option('connectivity'), default_options: [
'gupnp=disabled',
'gstreamer=disabled',
'crypto-library=openssl',
'examples=disabled',
'tests=disabled',
'introspection=disabled',
])
if nice_dep.found()
openssl_dep = dependency('openssl')
usrsctp_dep = dependency('usrsctp')
usrsctp_dep = dependency('usrsctp', default_options: [
'sctp_inet=false',
'sctp_inet6=false',
'sctp_build_programs=false',
])
cdata.set('HAVE_NICE', 1)
vala_flags += ['--define=HAVE_NICE']
backend_deps_private += [nice_dep, openssl_dep, usrsctp_dep]
backend_reqs_private += ['nice', 'openssl', 'usrsctp']
if cc.has_member('struct sockaddr_conn', 'sconn_len',
dependencies: [usrsctp_dep],
prefix: '#include <usrsctp.h>')
if host_os_family in ['darwin', 'freebsd', 'qnx']
cdata.set('HAVE_SCONN_LEN', 1)
endif
else
@@ -331,8 +506,17 @@ if host_os in ['ios', 'tvos']
backend_libs_private += ['-Wl,-framework,CoreGraphics', '-Wl,-framework,UIKit']
endif
ar = find_program('ar')
nm = find_program('nm')
if host_toolchain == 'microsoft'
lib = find_program('lib')
ar = ''
nm = ''
strip = ''
else
lib = ''
ar = find_program('ar')
nm = find_program('nm')
strip = find_program('strip')
endif
if host_os_family != 'windows'
if host_os_family == 'darwin'
readelf = ''
@@ -348,7 +532,6 @@ else
otool = ''
libtool = ''
endif
strip = find_program('strip')
if host_os_family == 'darwin'
install_name_tool = find_program('install_name_tool')
lipo = find_program('lipo')
@@ -359,14 +542,61 @@ else
codesign = ''
endif
modulate = files('tools/modulate.py')
post_process_module = [
files('tools/post-process-module.sh'),
if get_option('devkits').length() != 0
if get_option('default_library') != 'static'
error('Devkits can only be generated from static libraries')
endif
mkdevkit = [python, releng / 'mkdevkit.py']
uninstalled_dir = meson.global_build_root() / 'meson-uninstalled'
devkit_options = [
'--cc', '>>>', cc.cmd_array(), '<<<',
'--c-args', '>>>', get_option('c_args'), '<<<',
'--pkg-config', '>>>', find_program('pkg-config'), '<<<',
'--pkg-config-path', '>>>', uninstalled_dir, get_option('pkg_config_path'), '<<<',
]
if host_toolchain == 'microsoft'
static_lib_prefix = ''
static_lib_suffix = '.lib'
devkit_options += ['--lib', '>>>', lib, '<<<']
else
static_lib_prefix = 'lib'
static_lib_suffix = '.a'
devkit_options += [
'--ar', '>>>', ar, '<<<',
'--nm', '>>>', nm, '<<<',
]
objcopy = find_program('objcopy', required: false)
if objcopy.found()
devkit_options += ['--objcopy', '>>>', objcopy, '<<<']
endif
endif
if host_os_family == 'darwin'
devkit_options += ['--libtool', '>>>', libtool, '<<<']
endif
endif
modulate = [
python,
files('tools' / 'modulate.py'),
'--endian', host_machine.endian(),
'--nm', '>>>', nm, '<<<',
'--readelf', '>>>', readelf, '<<<',
'--otool', '>>>', otool, '<<<',
'--output', '@OUTPUT@',
'@INPUT@',
]
post_process = [
python,
files('tools' / 'post-process.py'),
host_os,
host_abi,
'>>>', strip, '<<<',
get_option('strip').to_string(),
install_name_tool,
codesign,
'>>>', install_name_tool, '<<<',
'>>>', codesign, '<<<',
'>>>', termux_elf_cleaner, '<<<',
'@OUTPUT@',
'@INPUT0@',
]
mapper_opt = get_option('mapper')
@@ -384,14 +614,17 @@ configure_file(
configuration: cdata)
add_project_arguments(
'-include', 'config.h',
(cc.get_argument_syntax() == 'msvc') ? '/FI' : '-include', meson.current_build_dir() / 'config.h',
'-DG_LOG_DOMAIN="Frida"',
'-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56',
'-DG_DISABLE_DEPRECATED',
language: c_languages)
if host_os_family == 'linux'
add_project_arguments('-D_GNU_SOURCE=1', language: c_languages)
# Our Vala compiler emits warnings pragmas for GCC >= 5, so for older versions we'll need to
# suppress them through GCC's command-line options. It would be better to only do this for
# Vala-generated sources, but this will have to do for now.
if cc.get_id() == 'gcc' and cc.compiles('#if __GNUC__ >= 5\n#error NOTNEEDED\n#endif')
add_project_arguments('-w', language: 'c')
endif
vala_flags += [
@@ -407,25 +640,33 @@ vala_flags += ['--define=' + host_arch.to_upper()]
if host_abi != host_arch
vala_flags += ['--define=' + host_abi.to_upper()]
endif
if get_option('agent_legacy') != ''
vala_flags += ['--define=CROSS_ARCH']
endif
add_project_arguments(vala_flags, language: ['vala'])
add_project_arguments(vala_flags, language: 'vala')
native_vala_flags = [
'--vapidir=' + meson.current_source_dir() / 'vapi',
]
add_project_arguments(native_vala_flags, language: ['vala'], native: true)
add_project_arguments(native_vala_flags, language: 'vala', native: true)
subdir('compat')
subdir('tools')
subdir('lib')
subdir('src')
if host_os != 'watchos'
if build_server
subdir('server')
subdir('portal')
subdir('inject')
if get_option('tests')
subdir('tests')
endif
endif
if build_portal
subdir('portal')
endif
if build_inject
subdir('inject')
endif
if build_tests
subdir('tests')
endif
summary(
{
'compat': compat_summary,
},
section: 'Features',
)
+92 -15
View File
@@ -1,3 +1,51 @@
option('frida_version',
type: 'string',
value: '',
description: 'Frida version, such as 16.2.2 or 16.2.2-dev.27',
)
option('local_backend',
type: 'feature',
value: 'auto',
description: 'Include backend for the local system',
)
option('fruity_backend',
type: 'feature',
value: 'auto',
description: 'Include the Fruity backend',
)
option('droidy_backend',
type: 'feature',
value: 'auto',
description: 'Include the Droidy backend',
)
option('socket_backend',
type: 'feature',
value: 'auto',
description: 'Include the Socket backend',
)
option('barebone_backend',
type: 'feature',
value: 'auto',
description: 'Include the Barebone backend',
)
option('compiler_backend',
type: 'feature',
value: 'auto',
description: 'Include frida-compile backend powered by GumJS',
)
option('compiler_snapshot',
type: 'feature',
value: 'auto',
description: 'Speed up compiler startup by using a snapshot'
)
option('assets',
type: 'combo',
choices: ['embedded', 'installed'],
@@ -7,58 +55,86 @@ option('assets',
option('asset_path_template',
type: 'string',
value: '',
description: 'Override the default installed asset path template'
)
option('compat',
type: 'array',
choices: ['auto', 'disabled', 'native', 'emulated'],
value: ['auto'],
description: 'Support for targets with a different architecture',
)
option('helper_modern',
type: 'string',
value: '',
value: 'auto',
description: 'Prebuilt frida-helper to embed for use on modern systems'
)
option('helper_legacy',
type: 'string',
value: '',
value: 'auto',
description: 'Prebuilt frida-helper to embed for use on legacy systems'
)
option('agent_modern',
type: 'string',
value: '',
value: 'auto',
description: 'Prebuilt agent to embed for use on modern targets'
)
option('agent_legacy',
type: 'string',
value: '',
value: 'auto',
description: 'Prebuilt agent to embed for use on legacy targets'
)
option('agent_emulated_modern',
type: 'string',
value: '',
value: 'auto',
description: 'Prebuilt agent to embed for use on modern emulated targets'
)
option('agent_emulated_legacy',
type: 'string',
value: '',
value: 'auto',
description: 'Prebuilt agent to embed for use on legacy emulated targets'
)
option('agent_dbghelp_prefix',
type: 'string',
value: '',
description: 'Location of DbgHelp binaries to embed alongside agent (Windows only)'
)
option('agent_symsrv_prefix',
type: 'string',
value: '',
description: 'Location of SymSrv binaries to embed alongside agent (Windows only)'
)
option('gadget',
type: 'feature',
value: 'auto',
description: 'Build frida-gadget',
)
option('server',
type: 'feature',
value: 'auto',
description: 'Build frida-server',
)
option('portal',
type: 'feature',
value: 'auto',
description: 'Build frida-portal',
)
option('inject',
type: 'feature',
value: 'auto',
description: 'Build frida-inject',
)
option('connectivity',
type: 'feature',
value: 'auto',
@@ -71,14 +147,15 @@ option('mapper',
description: 'Use our own out-of-process dynamic linker for injection on i/macOS'
)
option('compiler_snapshot',
type: 'feature',
value: 'auto',
description: 'Speed up compiler startup by using a snapshot'
option('devkits',
type: 'array',
choices: ['core'],
value: [],
description: 'Devkits to build'
)
option('tests',
type: 'boolean',
value: true,
type: 'feature',
value: 'auto',
description: 'Build tests'
)
+5 -16
View File
@@ -6,11 +6,11 @@ extra_link_args = []
extra_link_depends = []
if host_os_family == 'darwin'
symlist = 'frida-portal.symbols'
extra_link_args += ['-Wl,-exported_symbols_list,' + join_paths(meson.current_source_dir(), symlist)]
extra_link_args += ['-Wl,-exported_symbols_list,' + meson.current_source_dir() / symlist]
extra_link_depends += [symlist]
elif host_os_family != 'windows'
symscript = 'frida-portal.version'
extra_link_args += ['-Wl,--version-script,' + join_paths(meson.current_source_dir(), symscript)]
extra_link_args += ['-Wl,--version-script,' + meson.current_source_dir() / symscript]
extra_link_depends += [symscript]
endif
@@ -20,27 +20,16 @@ if tls_provider_dep.found()
endif
raw_portal = executable('frida-portal-raw', portal_sources,
vala_args: ['--pkg=posix'],
vala_args: [core_vala_args, '--pkg=posix'],
link_args: extra_link_args,
link_depends: extra_link_depends,
dependencies: [core_dep] + extra_deps,
)
custom_target('frida-portal',
input: [
raw_portal,
'frida-portal.xcent',
],
input: [raw_portal, 'frida-portal.xcent'],
output: 'frida-portal' + exe_suffix,
command: [
files('post-process.sh'),
'@INPUT@',
'@OUTPUT@',
host_os,
'>>>', strip, '<<<',
get_option('strip').to_string(),
codesign,
],
command: post_process + ['executable', 're.frida.Portal', '@INPUT1@'],
install: true,
install_dir: get_option('bindir'),
)
-70
View File
@@ -1,70 +0,0 @@
#!/usr/bin/env bash
input_portal_path=$1
input_entitlements_path=$2
output_portal_path=$3
host_os=$4
strip_command=()
if [ "$5" = ">>>" ]; then
shift 5
while true; do
cur=$1
shift 1
if [ "$cur" = "<<<" ]; then
break
fi
strip_command+=("$cur")
done
else
echo "Invalid argument" > /dev/stderr
exit 1
fi
strip_enabled=$1
codesign=$2
case $host_os in
macos)
if [ -z "$MACOS_CERTID" ]; then
echo "MACOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
ios)
if [ -z "$IOS_CERTID" ]; then
echo "IOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
tvos)
if [ -z "$TVOS_CERTID" ]; then
echo "TVOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
esac
intermediate_path=$output_portal_path.tmp
rm -f "$intermediate_path"
cp -a "$input_portal_path" "$intermediate_path"
if [ "$strip_enabled" = "true" ]; then
"${strip_command[@]}" "$intermediate_path" || exit 1
fi
case $host_os in
macos|ios|tvos)
case $host_os in
macos)
"$codesign" -f -s "$MACOS_CERTID" -i "re.frida.Portal" "$intermediate_path" || exit 1
;;
ios)
"$codesign" -f -s "$IOS_CERTID" --entitlements "$input_entitlements_path" "$intermediate_path" || exit 1
;;
tvos)
"$codesign" -f -s "$TVOS_CERTID" --entitlements "$input_entitlements_path" "$intermediate_path" || exit 1
;;
esac
;;
esac
mv "$intermediate_path" "$output_portal_path"
Submodule
+1
Submodule releng added at 56b262207c.
+28 -19
View File
@@ -16,41 +16,50 @@ extra_link_args = []
extra_link_depends = []
if host_os_family == 'darwin'
symlist = 'frida-server.symbols'
extra_link_args += ['-Wl,-exported_symbols_list,' + join_paths(meson.current_source_dir(), symlist)]
extra_link_args += ['-Wl,-exported_symbols_list,' + meson.current_source_dir() / symlist]
extra_link_depends += [symlist]
elif host_os_family != 'windows'
symscript = 'frida-server.version'
extra_link_args += ['-Wl,--version-script,' + join_paths(meson.current_source_dir(), symscript)]
extra_link_args += ['-Wl,--version-script,' + meson.current_source_dir() / symscript]
extra_link_depends += [symscript]
endif
if host_os == 'macos'
server_plist = 'frida-server.plist'
extra_link_args += ['-Wl,-sectcreate,__TEXT,__info_plist,' + join_paths(meson.current_source_dir(), server_plist)]
extra_link_args += ['-Wl,-sectcreate,__TEXT,__info_plist,' + meson.current_source_dir() / server_plist]
extra_link_depends += [server_plist]
endif
raw_server = executable('frida-server-raw', server_sources,
vala_args: ['--pkg=posix'],
vala_args: [core_vala_args, '--pkg=posix'],
link_args: extra_link_args,
link_depends: extra_link_depends,
dependencies: [core_dep],
)
custom_target('frida-server',
input: [
raw_server,
'frida-server.xcent',
],
output: 'frida-server' + exe_suffix,
command: [
files('post-process.sh'),
'@INPUT@',
'@OUTPUT@',
host_os,
'>>>', strip, '<<<',
get_option('strip').to_string(),
codesign,
],
server_name = 'frida-server' + exe_suffix
need_universal_server = get_option('assets') == 'installed' and server_compat != ''
server = custom_target('frida-server',
input: [raw_server, 'frida-server.xcent'],
output: need_universal_server ? f'@server_name@-@host_abi@' : server_name,
command: post_process + ['executable', 're.frida.Server', '@INPUT1@'],
install: true,
install_dir: get_option('bindir'),
)
if need_universal_server
custom_target('frida-server-universal',
input: server,
output: server_name,
command: [
lipo,
'@INPUT@',
server_compat,
'-create',
'-output', meson.current_build_dir() / server_name
],
depends: server_depends,
install: true,
install_dir: get_option('bindir'),
)
endif
-70
View File
@@ -1,70 +0,0 @@
#!/usr/bin/env bash
input_server_path=$1
input_entitlements_path=$2
output_server_path=$3
host_os=$4
strip_command=()
if [ "$5" = ">>>" ]; then
shift 5
while true; do
cur=$1
shift 1
if [ "$cur" = "<<<" ]; then
break
fi
strip_command+=("$cur")
done
else
echo "Invalid argument" > /dev/stderr
exit 1
fi
strip_enabled=$1
codesign=$2
case $host_os in
macos)
if [ -z "$MACOS_CERTID" ]; then
echo "MACOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
ios)
if [ -z "$IOS_CERTID" ]; then
echo "IOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
tvos)
if [ -z "$TVOS_CERTID" ]; then
echo "TVOS_CERTID not set, see https://github.com/frida/frida#apple-oses"
exit 1
fi
;;
esac
intermediate_path=$output_server_path.tmp
rm -f "$intermediate_path"
cp -a "$input_server_path" "$intermediate_path"
if [ "$strip_enabled" = "true" ]; then
"${strip_command[@]}" "$intermediate_path" || exit 1
fi
case $host_os in
macos|ios|tvos)
case $host_os in
macos)
"$codesign" -f -s "$MACOS_CERTID" -i "re.frida.Server" "$intermediate_path" || exit 1
;;
ios)
"$codesign" -f -s "$IOS_CERTID" --entitlements "$input_entitlements_path" "$intermediate_path" || exit 1
;;
tvos)
"$codesign" -f -s "$TVOS_CERTID" --entitlements "$input_entitlements_path" "$intermediate_path" || exit 1
;;
esac
;;
esac
mv "$intermediate_path" "$output_server_path"
+5 -2
View File
@@ -21,8 +21,11 @@ namespace Frida {
public static async AgentContainer create (string agent_filename, Cancellable? cancellable) throws Error, IOError {
var container = new AgentContainer ();
container.module = Module.open (agent_filename, 0);
assert (container.module != null);
try {
container.module = new Module (agent_filename, 0);
} catch (ModuleError e) {
throw new Error.PERMISSION_DENIED ("%s", e.message);
}
void * main_func_symbol;
var main_func_found = container.module.symbol ("frida_agent_main", out main_func_symbol);
Executable → Regular
+12 -4
View File
@@ -1,5 +1,3 @@
#!/usr/bin/env python3
import argparse
import os
from pathlib import Path
@@ -9,8 +7,9 @@ import sys
def main():
parser = argparse.ArgumentParser(description="Generate refined Frida API definitions")
parser.add_argument('--output', dest='output_type', choices=['bundle', 'header', 'vapi'], default='bundle')
parser.add_argument('--output', dest='output_type', choices=['bundle', 'header', 'gir', 'vapi', 'vapi-stamp'], default='bundle')
parser.add_argument('api_version', metavar='api-version', type=str)
parser.add_argument('core_gir', metavar='/path/to/Frida-x.y.gir', type=argparse.FileType('r', encoding='utf-8'))
parser.add_argument('core_vapi', metavar='/path/to/frida-core.vapi', type=argparse.FileType('r', encoding='utf-8'))
parser.add_argument('core_header', metavar='/path/to/frida-core.h', type=argparse.FileType('r', encoding='utf-8'))
parser.add_argument('base_vapi', metavar='/path/to/frida-base.vapi', type=argparse.FileType('r', encoding='utf-8'))
@@ -19,13 +18,23 @@ def main():
args = parser.parse_args()
output_type = args.output_type
api_version = args.api_version
core_gir = args.core_gir.read()
core_vapi = args.core_vapi.read()
core_header = args.core_header.read()
base_vapi = args.base_vapi.read()
base_header = args.base_header.read()
output_dir = Path(args.output_dir)
if output_type == 'gir':
(output_dir / f"Frida-{api_version}.gir").write_text(core_gir, encoding='utf-8')
return
if output_type == 'vapi-stamp':
(output_dir / f"frida-core-{api_version}.vapi.stamp").write_bytes(b"")
return
toplevel_names = [
"frida.vala",
"control-service.vala",
@@ -42,7 +51,6 @@ def main():
enable_header = False
enable_vapi = False
output_type = args.output_type
if output_type == 'bundle':
enable_header = True
enable_vapi = True
+33
View File
@@ -0,0 +1,33 @@
from pathlib import Path
import shutil
import subprocess
import sys
def main(argv):
lib_binary, libtool_binary, ar_binary = [Path(p) if p else None for p in argv[1:4]]
build_dir = Path(argv[4])
output_lib = Path(argv[5])
input_libs = [Path(p) for p in argv[6:]]
if lib_binary is not None:
subprocess.run([lib_binary, "/nologo", f"/out:{output_lib}"] + input_libs,
check=True)
elif libtool_binary is not None:
subprocess.run([libtool_binary, "-static", "-o", output_lib] + input_libs,
check=True)
else:
mri_lines = [f"create {output_lib}"]
for lib in input_libs:
command = "addlib" if lib.suffix == ".a" else "addmod"
mri_lines += [f"{command} {lib}"]
mri_lines += ["save", "end"]
subprocess.run([ar_binary, "-M"],
input="\n".join(mri_lines),
encoding="utf-8",
check=True)
if __name__ == "__main__":
main(sys.argv)
-32
View File
@@ -1,32 +0,0 @@
#!/usr/bin/env bash
ar_binary="$1"
libtool_binary="$2"
build_dir="$3"
output_lib="$4"
shift 4
if [ -n "$libtool_binary" ]; then
exec "$libtool_binary" -static -o "$output_lib" "$@"
else
priv_dir="$build_dir/frida-core-library@mrg"
mri_script="$priv_dir/merge.mri"
mkdir -p "$priv_dir"
echo "create $output_lib" > "$mri_script"
while [[ $# > 0 ]]; do
ext=${1##*.}
if [[ "$ext" == 'a' ]]; then
echo "addlib $1" >> "$mri_script"
else
# $1 is *.o or *.so
echo "addmod $1" >> "$mri_script"
fi
shift
done
echo "save" >> "$mri_script"
echo "end" >> "$mri_script"
exec "$ar_binary" -M < "$mri_script"
fi
+97 -33
View File
@@ -1,50 +1,73 @@
generate_api = files('generate.py')
generate_api = [python, files('generate.py')]
core_vapi = join_paths(core_build_dir, 'frida-core.vapi')
core_header = join_paths(core_build_dir, 'frida-core.h')
base_vapi = join_paths(base_build_dir, f'frida-base-@[email protected]')
base_header = join_paths(base_build_dir, 'frida-base.h')
generate_api_args = [
api_version,
core_build_dir / core_gir_name,
core_build_dir / 'frida-core.vapi',
core_build_dir / 'frida-core.h',
base_build_dir / f'frida-base-@[email protected]',
base_build_dir / 'frida-base.h',
meson.current_build_dir(),
]
custom_target('frida-core-header',
core_public_h = custom_target('frida-core-header',
input: [core, base],
output: ['frida-core.h'],
command: [
generate_api,
'--output=header',
api_version,
core_vapi, core_header,
base_vapi, base_header,
meson.current_build_dir(),
generate_api_args,
],
install: true,
install_dir: header_install_dir,
)
custom_target('frida-core-vapi',
core_public_gir = custom_target('frida-core-gir',
input: [core, base],
output: [core_gir_name],
command: [
generate_api,
'--output=gir',
generate_api_args,
],
install: true,
install_dir: girdir,
)
core_public_vapi = custom_target('frida-core-vapi',
input: [core, base],
output: [
'frida-core-@[email protected]'.format(api_version),
'frida-core-@[email protected]'.format(api_version)
f'frida-core-@[email protected]',
f'frida-core-@[email protected]',
],
command: [
generate_api,
'--output=vapi',
api_version,
core_vapi, core_header,
base_vapi, base_header,
meson.current_build_dir(),
generate_api_args,
],
install: true,
install_dir: join_paths(get_option('datadir'), 'vala', 'vapi'),
install_dir: vapidir,
)
custom_target('frida-core-library',
input: [core] + internal_libs,
output: 'libfrida-core-@[email protected]'.format(api_version),
core_public_vapi_stamp = custom_target('frida-core-vapi-stamp',
input: core_public_vapi,
output: f'frida-core-@[email protected]',
command: [
files('merge.sh'),
ar,
generate_api,
'--output=vapi-stamp',
generate_api_args,
],
)
core_public_lib = custom_target('frida-core-library',
input: [core] + internal_libs,
output: f'libfrida-core-@[email protected]',
command: [
python,
files('merge.py'),
lib,
libtool,
ar,
meson.current_build_dir(),
'@OUTPUT@',
'@INPUT@'
@@ -53,14 +76,55 @@ custom_target('frida-core-library',
install_dir: get_option('libdir'),
)
pkg = import('pkgconfig')
pkg.generate(filebase: 'frida-core-' + api_version,
name: 'Frida Core',
version: meson.project_version(),
description: 'Frida core library intended for static linking into bindings',
requires: ['glib-2.0', 'gobject-2.0', 'gio-2.0', 'json-glib-1.0'],
requires_private: ['gmodule-2.0', 'gee-0.8', libsoup_dep, 'frida-gum-1.0', 'frida-gumjs-inspector-1.0', 'libbrotlidec'] + backend_deps_private,
subdirs: 'frida-' + api_version,
libraries: ['-L${libdir}', '-lfrida-core-' + api_version],
libraries_private: backend_libs_private,
fs = import('fs')
core_public_extra_headers = []
if host_os == 'android'
core_public_extra_headers += fs.copyfile(frida_selinux_h)
endif
if build_machine.system() == 'windows'
uninstalled_incdir = fs.as_posix(meson.current_build_dir())
else
uninstalled_incdir = meson.current_build_dir()
endif
uninstalled_vapidir = uninstalled_incdir
core_public_dep = declare_dependency(
sources: [core_public_h, core_public_gir, core_public_vapi_stamp, core_public_extra_headers],
include_directories: include_directories('.'),
link_args: backend_libs_private,
link_with: core_public_lib,
dependencies: core_deps,
variables: {
'frida_includedir': uninstalled_incdir,
'frida_girdir': uninstalled_girdir,
'frida_vapidir': uninstalled_vapidir,
},
)
pkg = import('pkgconfig')
pkg.generate(
filebase: f'frida-core-@api_version@',
name: 'Frida Core Library',
version: frida_version,
description: 'Instrumentation toolkit for developers, reverse-engineers, and security researchers',
requires: ['glib-2.0', 'gobject-2.0', 'gio-2.0', 'json-glib-1.0'],
requires_private: ['gmodule-2.0', 'gee-0.8', 'libsoup-3.0', 'frida-gum-1.0', 'frida-gumjs-inspector-1.0', 'libbrotlidec'] + backend_reqs_private,
subdirs: f'frida-@api_version@',
libraries: core_public_lib,
libraries_private: backend_libs_private,
extra_cflags: ['-I${frida_includedir}'],
variables: {
'frida_includedir': '${includedir}',
'frida_girdir': girdir,
'frida_vapidir': vapidir,
},
uninstalled_variables: {
'frida_includedir': uninstalled_incdir,
'frida_girdir': uninstalled_girdir,
'frida_vapidir': uninstalled_vapidir,
},
)
meson.override_dependency(f'frida-core-@api_version@', core_public_dep)
+1 -12
View File
@@ -343,7 +343,7 @@ namespace Frida {
assert (frida_context != null);
assert (dbus_context != null);
transmitter = new AgentMessageTransmitter (persist_timeout, frida_context, dbus_context);
transmitter = new AgentMessageTransmitter (this, persist_timeout, frida_context, dbus_context);
transmitter.closed.connect (on_transmitter_closed);
transmitter.new_candidates.connect (on_transmitter_new_candidates);
transmitter.candidate_gathering_done.connect (on_transmitter_candidate_gathering_done);
@@ -555,15 +555,4 @@ namespace Frida {
private static void throw_not_supported () throws Error {
throw new Error.NOT_SUPPORTED ("Not yet supported");
}
private static uint uint64_hash (uint64? val) {
uint64 v = val;
return (uint) ((v >> 32) ^ (v & 0xffffffffU));
}
private static bool uint64_equal (uint64? val_a, uint64? val_b) {
uint64 a = val_a;
uint64 b = val_b;
return a == b;
}
}
+18 -36
View File
@@ -1,54 +1,36 @@
#!/usr/bin/env python3
import os
from pathlib import Path
import platform
import shutil
import subprocess
import sys
def generate_runtime(input_dir, output_dir):
output_dir.mkdir(parents=True, exist_ok=True)
def main(argv):
output_dir, priv_dir, input_dir, npm = [Path(d).resolve() for d in argv[1:]]
shutil.copy(input_dir / "package.json", output_dir)
shutil.copy(input_dir / "package-lock.json", output_dir)
try:
generate_runtime(output_dir, priv_dir, input_dir, npm)
except Exception as e:
print(e, file=sys.stderr)
sys.exit(1)
def generate_runtime(output_dir, priv_dir, input_dir, npm):
priv_dir.mkdir(exist_ok=True)
shutil.copy(input_dir / "package.json", priv_dir)
shutil.copy(input_dir / "package-lock.json", priv_dir)
runtime_reldir = Path("script-runtime")
runtime_srcdir = input_dir / runtime_reldir
runtime_intdir = output_dir / runtime_reldir
runtime_intdir = priv_dir / runtime_reldir
if runtime_intdir.exists():
shutil.rmtree(runtime_intdir)
shutil.copytree(runtime_srcdir, runtime_intdir)
npm = os.environ.get("NPM", make_script_filename("npm"))
try:
subprocess.run([npm, "install"], capture_output=True, cwd=output_dir, check=True)
except Exception as e:
message = "\n".join([
"",
"***",
"Failed to bootstrap the Barebone backend script runtime:",
"\t" + str(e),
"It appears Node.js is not installed.",
"We need it for processing JavaScript code at build-time.",
"Check PATH or set NPM to the absolute path of your npm binary.",
"***\n",
])
raise EnvironmentError(message)
subprocess.run([npm, "install"], capture_output=True, cwd=priv_dir, check=True)
def make_script_filename(name):
build_os = platform.system().lower()
extension = ".cmd" if build_os == "windows" else ""
return name + extension
shutil.copy(priv_dir / "script-runtime.js", output_dir)
if __name__ == "__main__":
input_dir, output_dir = [Path(d).resolve() for d in sys.argv[1:3]]
try:
generate_runtime(input_dir, output_dir)
except Exception as e:
print(e, file=sys.stderr)
sys.exit(1)
main(sys.argv)
+4 -3
View File
@@ -20,12 +20,13 @@ namespace Frida.Barebone {
private GDB.Client gdb;
private Gee.Map<uint64?, BreakpointEntry> breakpoint_entries =
new Gee.HashMap<uint64?, BreakpointEntry> (uint64_hash, uint64_equal);
new Gee.HashMap<uint64?, BreakpointEntry> (Numeric.uint64_hash, Numeric.uint64_equal);
private Gee.Map<string, CallStack> call_stacks = new Gee.HashMap<string, CallStack> ();
private Gee.MultiMap<uint64?, CallStack> pending_returns =
new Gee.HashMultiMap<uint64?, CallStack> (uint64_hash, uint64_equal);
new Gee.HashMultiMap<uint64?, CallStack> (Numeric.uint64_hash, Numeric.uint64_equal);
private Gee.Map<uint64?, InlineHook> inline_hooks = new Gee.HashMap<uint64?, InlineHook> (uint64_hash, uint64_equal);
private Gee.Map<uint64?, InlineHook> inline_hooks =
new Gee.HashMap<uint64?, InlineHook> (Numeric.uint64_hash, Numeric.uint64_equal);
private Cancellable io_cancellable = new Cancellable ();
+1 -2
View File
@@ -36,8 +36,7 @@ namespace Frida.Barebone {
return true;
});
var relocated_buf = new Buffer (
new Bytes (module.get_file_data ()[file_start:file_end]), gdb.pointer_size, gdb.byte_order);
var relocated_buf = gdb.make_buffer (new Bytes (module.get_file_data ()[file_start:file_end]));
Error? pending_error = null;
module.enumerate_relocations (r => {
unowned string parent_section = (r.parent != null) ? r.parent.name : "";
+61 -62
View File
@@ -1,63 +1,62 @@
barebone_sources = []
backend_sources += files(
'barebone-host-session.vala',
'script.vala',
'machine.vala',
'allocator.vala',
'callback.vala',
'memory-scanner.vala',
'interceptor.vala',
'rust-module.vala',
'arch-x86' / 'machine.vala',
'arch-x86_64' / 'machine.vala',
'arch-arm' / 'machine.vala',
'arch-arm64' / 'machine.vala',
'arch-unknown' / 'machine.vala',
)
barebone_script_runtime = custom_target('frida-barebone-script-runtime',
input: [
'package.json',
'package-lock.json',
'script-runtime' / 'console.ts',
'script-runtime' / 'entrypoint.ts',
'script-runtime' / 'gdb.ts',
'script-runtime' / 'hexdump.ts',
'script-runtime' / 'message-dispatcher.ts',
'script-runtime' / 'primitives.ts',
],
output: [
'script-runtime.js',
],
command: [
python,
files('generate-script-runtime.py'),
meson.current_build_dir(),
'@PRIVATE_DIR@',
meson.current_source_dir(),
npm,
],
)
backend_sources += custom_target('frida-data-barebone',
input: [
'barebone.resources',
barebone_script_runtime,
'helpers/memory-scanner-arm64.elf',
],
output: [
'frida-data-barebone.vapi',
'frida-data-barebone.h',
'frida-data-barebone.c',
'frida-data-barebone-blob' + resource_blob_extension,
],
command: [
resource_compiler_cmd_array,
'-c', '@INPUT0@',
'-o', meson.current_build_dir() / 'frida-data-barebone',
'@INPUT1@',
'@INPUT2@',
],
)
if quickjs_dep.found()
barebone_sources += files(
'barebone-host-session.vala',
'script.vala',
'machine.vala',
'allocator.vala',
'callback.vala',
'memory-scanner.vala',
'interceptor.vala',
'rust-module.vala',
'arch-x86/machine.vala',
'arch-x86_64/machine.vala',
'arch-arm/machine.vala',
'arch-arm64/machine.vala',
'arch-unknown/machine.vala',
)
barebone_script_runtime = custom_target('frida-barebone-script-runtime',
input: [
'package.json',
'package-lock.json',
'script-runtime/console.ts',
'script-runtime/entrypoint.ts',
'script-runtime/gdb.ts',
'script-runtime/hexdump.ts',
'script-runtime/message-dispatcher.ts',
'script-runtime/primitives.ts',
],
output: [
'script-runtime.js',
],
command: [
find_program('generate-script-runtime.py'),
meson.current_source_dir(),
meson.current_build_dir(),
],
)
barebone_data = custom_target('frida-data-barebone',
input: [
'barebone.resources',
barebone_script_runtime,
'helpers/memory-scanner-arm64.elf',
],
output: [
'frida-data-barebone.vapi',
'frida-data-barebone.h',
'frida-data-barebone.c',
'frida-data-barebone-blob.S',
],
command: [
resource_compiler,
'--toolchain=' + host_toolchain,
'-c', '@INPUT0@',
'-o', join_paths(meson.current_build_dir(), 'frida-data-barebone'),
'@INPUT1@',
'@INPUT2@',
],
)
barebone_sources += barebone_data
backend_deps += quickjs_dep
endif
backend_vala_args += gum_vala_args
backend_vala_args_private += '--pkg=quickjs'
backend_deps += quickjs_dep
+3
View File
@@ -0,0 +1,3 @@
[resource-compiler]
namespace = Frida.Data.Compiler
compress = *.js:text:7; *.bin:generic:7
File renamed without changes.
+21
View File
@@ -10,17 +10,20 @@ namespace Frida {
construct;
}
#if HAVE_COMPILER_BACKEND
private Promise<Agent>? load_request;
private Gee.Map<uint, MonitorEntry> monitors = new Gee.HashMap<uint, MonitorEntry> ();
private Gee.Set<MonitorEntry> dirty_monitors = new Gee.HashSet<MonitorEntry> ();
private TimeoutSource? monitor_flush_timer;
private Cancellable io_cancellable = new Cancellable ();
#endif
public Compiler (DeviceManager manager) {
Object (manager: manager);
}
#if HAVE_COMPILER_BACKEND
public override void dispose () {
if (load_request != null)
close.begin ();
@@ -45,9 +48,11 @@ namespace Frida {
detach_monitor_entry (entry);
monitors.clear ();
}
#endif
public async string build (string entrypoint, BuildOptions? options = null, Cancellable? cancellable = null)
throws Error, IOError {
#if HAVE_COMPILER_BACKEND
var agent = yield get_agent (cancellable);
starting ();
@@ -60,6 +65,9 @@ namespace Frida {
} finally {
finished ();
}
#else
throw_not_supported ();
#endif
}
public string build_sync (string entrypoint, BuildOptions? options = null, Cancellable? cancellable = null)
@@ -81,9 +89,13 @@ namespace Frida {
public async void watch (string entrypoint, WatchOptions? options = null, Cancellable? cancellable = null)
throws Error, IOError {
#if HAVE_COMPILER_BACKEND
var agent = yield get_agent (cancellable);
yield agent.watch (entrypoint, options, cancellable);
#else
throw_not_supported ();
#endif
}
public void watch_sync (string entrypoint, WatchOptions? options = null, Cancellable? cancellable = null)
@@ -103,6 +115,7 @@ namespace Frida {
}
}
#if HAVE_COMPILER_BACKEND
private void on_watch_add (uint id, string path, string type, int64 polling_interval) {
var file = File.parse_name (path);
@@ -197,6 +210,12 @@ namespace Frida {
load_request = null;
}
}
#else
[NoReturn]
private void throw_not_supported () throws Error {
throw new Error.NOT_SUPPORTED ("Compiler backend disabled at build-time");
}
#endif
private T create<T> () {
return Object.new (typeof (T), parent: this);
@@ -209,6 +228,7 @@ namespace Frida {
}
}
#if HAVE_COMPILER_BACKEND
private class Agent : InternalAgent {
public weak Compiler parent {
get;
@@ -423,6 +443,7 @@ namespace Frida {
MODIFIED,
DELETED,
}
#endif
}
public class CompilerOptions : Object {
Executable → Regular
+44 -55
View File
@@ -1,8 +1,4 @@
#!/usr/bin/env python3
import os
from pathlib import Path
import platform
import shutil
import subprocess
import sys
@@ -20,43 +16,52 @@ INPUTS = [
]
def generate_agent(input_dir, output_dir, host_os_family, host_arch, host_cpu_mode, v8_mksnapshot):
npm = os.environ.get("NPM", make_script_filename("npm"))
def main(argv):
output_dir, priv_dir, input_dir, npm, v8_mksnapshot = [Path(d).resolve() if d else None for d in argv[1:6]]
host_os_family, host_arch, host_cpu_mode = argv[6:9]
try:
generate_agent(output_dir, priv_dir, input_dir, npm, v8_mksnapshot, host_os_family, host_arch, host_cpu_mode)
except subprocess.CalledProcessError as e:
print(e, file=sys.stderr)
print("Output:\n\t| " + "\n\t| ".join(e.output.strip().split("\n")), file=sys.stderr)
sys.exit(2)
except Exception as e:
print(e, file=sys.stderr)
sys.exit(1)
def generate_agent(output_dir, priv_dir, input_dir, npm, v8_mksnapshot, host_os_family, host_arch, host_cpu_mode):
entrypoint = input_dir / "agent-entrypoint.js"
output_dir.mkdir(parents=True, exist_ok=True)
priv_dir.mkdir(exist_ok=True)
for name in INPUTS:
if name == "agent-entrypoint.js":
continue
shutil.copyfile(input_dir / name, output_dir / name)
shutil.copy(input_dir / name, priv_dir / name)
try:
subprocess.run([npm, "install"], capture_output=True, cwd=output_dir, check=True)
#subprocess.run([npm, "link", "/Users/oleavr/src/frida-compile"], capture_output=True, cwd=output_dir, check=True)
except Exception as e:
message = "\n".join([
"",
"***",
"Failed to bootstrap the compiler agent:",
"\t" + str(e),
"It appears Node.js is not installed.",
"We need it for processing JavaScript code at build-time.",
"Check PATH or set NPM to the absolute path of your npm binary.",
"***\n",
])
raise EnvironmentError(message)
run_kwargs = {
"cwd": priv_dir,
"stdout": subprocess.PIPE,
"stderr": subprocess.STDOUT,
"encoding": "utf-8",
"check": True,
}
subprocess.run([npm, "install"], **run_kwargs)
#subprocess.run([npm, "link", "/Users/oleavr/src/frida-compile"], **run_kwargs)
components = ["typescript", "agent-core"]
for component in components:
subprocess.run([
npm, "run", "build:" + component,
"--",
"--environment", f"FRIDA_HOST_OS_FAMILY:{host_os_family},FRIDA_HOST_ARCH:{host_arch},FRIDA_HOST_CPU_MODE:{host_cpu_mode}",
"--silent",
], cwd=output_dir, check=True)
npm, "run", "build:" + component,
"--",
"--environment", f"FRIDA_HOST_OS_FAMILY:{host_os_family},FRIDA_HOST_ARCH:{host_arch},FRIDA_HOST_CPU_MODE:{host_cpu_mode}",
"--silent",
],
**run_kwargs)
chunks = []
for component in components:
script = (output_dir / f"{component}.js").read_text(encoding="utf-8")
script = (priv_dir / f"{component}.js").read_text(encoding="utf-8")
chunks.append(script)
components_source = "\n".join(chunks)
@@ -64,15 +69,16 @@ def generate_agent(input_dir, output_dir, host_os_family, host_arch, host_cpu_mo
snapshot = output_dir / "snapshot.bin"
if v8_mksnapshot is not None:
shutil.copyfile(entrypoint, agent)
(output_dir / "embed.js").write_text(components_source, encoding="utf-8")
shutil.copy(entrypoint, agent)
(priv_dir / "embed.js").write_text(components_source, encoding="utf-8")
subprocess.run([
v8_mksnapshot,
"--turbo-instruction-scheduling",
"--startup-blob=snapshot.bin",
"embed.js",
input_dir / "agent-warmup.js",
], cwd=output_dir, check=True)
v8_mksnapshot,
"--turbo-instruction-scheduling",
f"--startup-blob={snapshot}",
"embed.js",
input_dir / "agent-warmup.js",
],
**run_kwargs)
else:
agent.write_text("\n".join([
components_source,
@@ -80,23 +86,6 @@ def generate_agent(input_dir, output_dir, host_os_family, host_arch, host_cpu_mo
]), encoding="utf-8")
snapshot.write_bytes(b"")
def make_script_filename(name):
build_os = platform.system().lower()
extension = ".cmd" if build_os == "windows" else ""
return name + extension
if __name__ == "__main__":
input_dir, output_dir = [Path(d).resolve() for d in sys.argv[1:3]]
host_os_family, host_arch, host_cpu_mode = sys.argv[3:6]
v8_mksnapshot = sys.argv[6]
if v8_mksnapshot != "":
v8_mksnapshot = Path(v8_mksnapshot)
else:
v8_mksnapshot = None
try:
generate_agent(input_dir, output_dir, host_os_family, host_arch, host_cpu_mode, v8_mksnapshot)
except Exception as e:
print(e, file=sys.stderr)
sys.exit(1)
main(sys.argv)
+62 -53
View File
@@ -2,57 +2,66 @@ compiler_sources = files(
'compiler.vala',
)
if get_option('compiler_snapshot').auto()
# Generating our snapshot with V8's CPU simulator takes a very long time.
use_snapshot = meson.can_run_host_binaries()
else
use_snapshot = get_option('compiler_snapshot').enabled()
endif
compiler_mksnapshot = use_snapshot ? v8_mksnapshot : ''
if have_compiler_backend
if get_option('compiler_snapshot').auto()
# Generating our snapshot with V8's CPU simulator takes a very long time.
use_snapshot = meson.can_run_host_binaries()
else
use_snapshot = get_option('compiler_snapshot').enabled()
endif
compiler_mksnapshot = use_snapshot ? v8_mksnapshot : ''
compiler_agent = custom_target('frida-compiler-agent',
input: [
'agent-entrypoint.js',
'agent-core.ts',
'agent-warmup.js',
'package.json',
'package-lock.json',
'tsconfig.json',
'rollup.config.agent-core.ts',
'rollup.config.typescript.ts',
],
output: [
'agent.js',
'snapshot.bin',
],
command: [
find_program('generate-agent.py'),
meson.current_source_dir(),
meson.current_build_dir(),
host_os_family,
host_arch_gumjs,
host_cpu_mode,
compiler_mksnapshot,
],
)
compiler_data = custom_target('frida-data-compiler',
input: [
'compiler.resources',
compiler_agent,
],
output: [
'frida-data-compiler.vapi',
'frida-data-compiler.h',
'frida-data-compiler.c',
'frida-data-compiler-blob.S',
],
command: [
resource_compiler,
'--toolchain=' + host_toolchain,
'-c', '@INPUT0@',
'-o', join_paths(meson.current_build_dir(), 'frida-data-compiler'),
'@INPUT1@',
'@INPUT2@',
],
)
compiler_sources += compiler_data
compiler_agent = custom_target('frida-compiler-agent',
input: [
'agent-entrypoint.js',
'agent-core.ts',
'agent-warmup.js',
'package.json',
'package-lock.json',
'tsconfig.json',
'rollup.config.agent-core.ts',
'rollup.config.typescript.ts',
],
output: [
'agent.js',
'snapshot.bin',
],
command: [
python,
files('generate-agent.py'),
meson.current_build_dir(),
'@PRIVATE_DIR@',
meson.current_source_dir(),
npm,
compiler_mksnapshot,
host_os_family,
host_arch_gumjs,
host_cpu_mode,
],
)
compiler_data = custom_target('frida-data-compiler',
input: [
'compiler.resources.' + frida_profile,
compiler_agent,
],
output: [
'frida-data-compiler.vapi',
'frida-data-compiler.h',
'frida-data-compiler.c',
'frida-data-compiler-blob' + resource_blob_extension,
'frida-data-compiler-agent.js.br',
'frida-data-compiler-snapshot.bin.br',
],
command: [
resource_compiler_cmd_array,
'-c', '@INPUT0@',
'-o', meson.current_build_dir() / 'frida-data-compiler',
'@INPUT1@',
'@INPUT2@',
],
)
compiler_sources += compiler_data
backend_vala_args_private += '--pkg=libbrotlidec'
backend_deps_private += brotlidec_dep
endif
+7 -7
View File
@@ -17,7 +17,7 @@
"@rollup/plugin-node-resolve": "^14.1.0",
"@rollup/plugin-replace": "^4.0.0",
"@rollup/plugin-typescript": "^8.3.4",
"@types/frida-gum": "18.6.0",
"@types/frida-gum": "18.7.0",
"@types/glob": "^8.0.0",
"@types/node": "18.7.23",
"glob": "^8.0.3",
@@ -468,9 +468,9 @@
"dev": true
},
"node_modules/@types/frida-gum": {
"version": "18.6.0",
"resolved": "https://registry.npmjs.org/@types/frida-gum/-/frida-gum-18.6.0.tgz",
"integrity": "sha512-ormuA2e76JqIzqLyuwrHphsCTUdo+ATnH+lQf6INKFn3BpZVex7BQgNUMTSHpmAK38peOMBLzR+DgJUkqTgaKw==",
"version": "18.7.0",
"resolved": "https://registry.npmjs.org/@types/frida-gum/-/frida-gum-18.7.0.tgz",
"integrity": "sha512-HhBomXE23fLDAWXEKi3BjJLrlH9wAv9IEQNfO/PaYHQNNbh0Bi06gx6JbXTspVpbqlbVqkWAuU7n6HaS9B6yXA==",
"dev": true
},
"node_modules/@types/glob": {
@@ -1465,9 +1465,9 @@
"dev": true
},
"@types/frida-gum": {
"version": "18.6.0",
"resolved": "https://registry.npmjs.org/@types/frida-gum/-/frida-gum-18.6.0.tgz",
"integrity": "sha512-ormuA2e76JqIzqLyuwrHphsCTUdo+ATnH+lQf6INKFn3BpZVex7BQgNUMTSHpmAK38peOMBLzR+DgJUkqTgaKw==",
"version": "18.7.0",
"resolved": "https://registry.npmjs.org/@types/frida-gum/-/frida-gum-18.7.0.tgz",
"integrity": "sha512-HhBomXE23fLDAWXEKi3BjJLrlH9wAv9IEQNfO/PaYHQNNbh0Bi06gx6JbXTspVpbqlbVqkWAuU7n6HaS9B6yXA==",
"dev": true
},
"@types/glob": {
+1 -1
View File
@@ -17,7 +17,7 @@
"@rollup/plugin-node-resolve": "^14.1.0",
"@rollup/plugin-replace": "^4.0.0",
"@rollup/plugin-typescript": "^8.3.4",
"@types/frida-gum": "18.6.0",
"@types/frida-gum": "18.7.0",
"@types/glob": "^8.0.0",
"@types/node": "18.7.23",
"glob": "^8.0.3",
+49
View File
@@ -1,4 +1,5 @@
namespace Frida {
#if HAVE_LOCAL_BACKEND
public class ControlService : Object {
public HostSession host_session {
get;
@@ -858,6 +859,54 @@ namespace Frida {
}
}
}
#else
public class ControlService : Object {
public ControlService (EndpointParameters endpoint_params, ControlServiceOptions? options = null) {
}
public ControlService.with_host_session (HostSession host_session, EndpointParameters endpoint_params,
ControlServiceOptions? options = null) {
}
public async void start (Cancellable? cancellable = null) throws Error, IOError {
throw new Error.NOT_SUPPORTED ("Local backend not available");
}
public void start_sync (Cancellable? cancellable = null) throws Error, IOError {
create<StartTask> ().execute (cancellable);
}
private class StartTask : ControlServiceTask<void> {
protected override async void perform_operation () throws Error, IOError {
yield parent.start (cancellable);
}
}
public async void stop (Cancellable? cancellable = null) throws Error, IOError {
}
public void stop_sync (Cancellable? cancellable = null) throws Error, IOError {
create<StopTask> ().execute (cancellable);
}
private class StopTask : ControlServiceTask<void> {
protected override async void perform_operation () throws Error, IOError {
yield parent.stop (cancellable);
}
}
private T create<T> () {
return Object.new (typeof (T), parent: this);
}
private abstract class ControlServiceTask<T> : AsyncTask<T> {
public weak ControlService parent {
get;
construct;
}
}
}
#endif
public class ControlServiceOptions : Object {
public string? sysroot {
+39 -9
View File
@@ -378,6 +378,7 @@ static FridaSpawnInstance * frida_spawn_instance_new (FridaDarwinHelperBackend *
static void frida_spawn_instance_free (FridaSpawnInstance * instance);
static void frida_spawn_instance_resume (FridaSpawnInstance * self);
static void frida_spawn_instance_on_server_cancel (void * context);
static void frida_spawn_instance_on_server_recv (void * context);
static gboolean frida_spawn_instance_handle_breakpoint (FridaSpawnInstance * self, FridaBreakpoint * breakpoint, GumDarwinUnifiedThreadState * state);
static gboolean frida_spawn_instance_handle_dyld_restart (FridaSpawnInstance * self);
@@ -412,6 +413,7 @@ static void frida_inject_instance_free (FridaInjectInstance * instance);
static gboolean frida_inject_instance_task_did_not_exec (FridaInjectInstance * instance);
static gboolean frida_inject_instance_start_thread (FridaInjectInstance * self, GError ** error);
static void frida_inject_instance_on_thread_monitor_cancel (void * context);
static void frida_inject_instance_on_mach_thread_dead (void * context);
static void frida_inject_instance_join_posix_thread (FridaInjectInstance * self, mach_port_t posix_thread);
static void frida_inject_instance_on_posix_thread_dead (void * context);
@@ -2120,11 +2122,7 @@ _frida_darwin_helper_backend_prepare_spawn_instance_for_injection (FridaDarwinHe
previous_ports = &instance->previous_ports;
kr = thread_swap_exception_ports (child_thread,
#if __has_feature (ptrauth_calls)
EXC_MASK_BAD_ACCESS | EXC_MASK_BREAKPOINT,
#else
EXC_MASK_BREAKPOINT,
#endif
EXC_MASK_ALL,
instance->server_port,
EXCEPTION_DEFAULT,
state_flavor,
@@ -2138,6 +2136,7 @@ _frida_darwin_helper_backend_prepare_spawn_instance_for_injection (FridaDarwinHe
source = dispatch_source_create (DISPATCH_SOURCE_TYPE_MACH_RECV, instance->server_port, 0, ctx->dispatch_queue);
instance->server_recv_source = source;
dispatch_set_context (source, instance);
dispatch_source_set_cancel_handler_f (source, frida_spawn_instance_on_server_cancel);
dispatch_source_set_event_handler_f (source, frida_spawn_instance_on_server_recv);
dispatch_resume (source);
@@ -2598,6 +2597,7 @@ frida_inject_instance_start_thread (FridaInjectInstance * self, GError ** error)
source = dispatch_source_create (DISPATCH_SOURCE_TYPE_MACH_SEND, self->thread, DISPATCH_MACH_SEND_DEAD, ctx->dispatch_queue);
self->thread_monitor_source = source;
dispatch_set_context (source, self);
dispatch_source_set_cancel_handler_f (source, frida_inject_instance_on_thread_monitor_cancel);
dispatch_source_set_event_handler_f (source, frida_inject_instance_on_mach_thread_dead);
dispatch_resume (source);
@@ -2623,6 +2623,15 @@ beach:
}
}
static void
frida_inject_instance_on_thread_monitor_cancel (void * context)
{
FridaInjectInstance * self = context;
dispatch_release (g_steal_pointer (&self->thread_monitor_source));
frida_inject_instance_free (self);
}
static void
frida_inject_instance_on_mach_thread_dead (void * context)
{
@@ -2692,6 +2701,7 @@ frida_inject_instance_join_posix_thread (FridaInjectInstance * self, mach_port_t
source = dispatch_source_create (DISPATCH_SOURCE_TYPE_MACH_SEND, self->thread, DISPATCH_MACH_SEND_DEAD, ctx->dispatch_queue);
self->thread_monitor_source = source;
dispatch_set_context (source, self);
dispatch_source_set_cancel_handler_f (source, frida_inject_instance_on_thread_monitor_cancel);
dispatch_source_set_event_handler_f (source, frida_inject_instance_on_posix_thread_dead);
dispatch_resume (source);
}
@@ -2756,6 +2766,12 @@ frida_spawn_instance_free (FridaSpawnInstance * instance)
FridaExceptionPortSet * previous_ports;
mach_msg_type_number_t port_index;
if (instance->server_recv_source != NULL)
{
dispatch_source_cancel (instance->server_recv_source);
return;
}
self_task = mach_task_self ();
if (instance->do_modinit_strcmp_checks != NULL)
@@ -2768,8 +2784,6 @@ frida_spawn_instance_free (FridaSpawnInstance * instance)
{
mach_port_deallocate (self_task, previous_ports->ports[port_index]);
}
if (instance->server_recv_source != NULL)
dispatch_release (instance->server_recv_source);
if (instance->server_port != MACH_PORT_NULL)
{
mach_port_mod_refs (self_task, instance->server_port, MACH_PORT_RIGHT_SEND, -1);
@@ -2821,6 +2835,15 @@ frida_spawn_instance_resume (FridaSpawnInstance * self)
frida_spawn_instance_send_breakpoint_response (self);
}
static void
frida_spawn_instance_on_server_cancel (void * context)
{
FridaSpawnInstance * self = context;
dispatch_release (g_steal_pointer (&self->server_recv_source));
frida_spawn_instance_free (self);
}
static void
frida_spawn_instance_on_server_recv (void * context)
{
@@ -2881,6 +2904,9 @@ frida_spawn_instance_on_server_recv (void * context)
pc = state.ts_32.__pc;
#endif
if (request->exception != EXC_BREAKPOINT)
goto unexpected_exception;
if (self->single_stepping >= 0)
{
FridaBreakpoint * bp = &self->breakpoints[self->single_stepping];
@@ -4096,10 +4122,14 @@ frida_inject_instance_free (FridaInjectInstance * instance)
task_t self_task;
gboolean can_deallocate_payload;
if (instance->thread_monitor_source != NULL)
{
dispatch_source_cancel (instance->thread_monitor_source);
return;
}
self_task = mach_task_self ();
if (instance->thread_monitor_source != NULL)
dispatch_release (instance->thread_monitor_source);
if (instance->thread != MACH_PORT_NULL)
mach_port_deallocate (self_task, instance->thread);
+33 -19
View File
@@ -61,7 +61,7 @@ namespace Frida {
try {
yield helper.enable_spawn_gating (cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -70,7 +70,7 @@ namespace Frida {
try {
yield helper.disable_spawn_gating (cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -79,7 +79,7 @@ namespace Frida {
try {
return yield helper.enumerate_pending_spawn (cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -88,7 +88,7 @@ namespace Frida {
try {
return yield helper.spawn (path, options, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -97,7 +97,7 @@ namespace Frida {
try {
yield helper.launch (identifier, options, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -106,7 +106,7 @@ namespace Frida {
try {
yield helper.notify_launch_completed (identifier, pid, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -115,7 +115,7 @@ namespace Frida {
try {
yield helper.notify_exec_completed (pid, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -124,7 +124,7 @@ namespace Frida {
try {
yield helper.wait_until_suspended (pid, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -133,7 +133,7 @@ namespace Frida {
try {
yield helper.cancel_pending_waits (pid, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -142,7 +142,7 @@ namespace Frida {
try {
yield helper.input (pid, data, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -151,7 +151,7 @@ namespace Frida {
try {
yield helper.resume (pid, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -160,7 +160,7 @@ namespace Frida {
try {
yield helper.kill_process (pid, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -169,7 +169,7 @@ namespace Frida {
try {
yield helper.kill_application (identifier, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -179,7 +179,7 @@ namespace Frida {
try {
return yield helper.inject_library_file (pid, path, entrypoint, data, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -189,7 +189,7 @@ namespace Frida {
try {
return yield helper.inject_library_blob (pid, name, blob, entrypoint, data, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -198,7 +198,7 @@ namespace Frida {
try {
yield helper.demonitor (id, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -207,7 +207,7 @@ namespace Frida {
try {
return yield helper.demonitor_and_clone_injectee_state (id, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -216,7 +216,7 @@ namespace Frida {
try {
yield helper.recreate_injectee_thread (pid, id, cancellable);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
}
@@ -246,12 +246,26 @@ namespace Frida {
try {
yield helper.transfer_socket (remote_pid, remote_socket, cancellable, out remote_address);
} catch (GLib.Error e) {
throw_dbus_error (e);
throw_helper_error (e);
}
return result.future;
}
[NoReturn]
private static void throw_helper_error (GLib.Error e) throws Error, IOError {
#if MACOS
if (e is IOError.CLOSED) {
throw new Error.PERMISSION_DENIED ("Oops, frida-helper appears to have crashed. It may have been killed " +
"by the system while trying to access a hardened process. If this is the case, try setting these " +
"boot arguments: `sudo nvram boot-args=\"-arm64e_preview_abi thid_should_crash=0 " +
"tss_should_crash=0\"`. For more information, see: https://github.com/frida/frida-core/issues/524");
}
#endif
throw_dbus_error (e);
}
public async MappedLibraryBlob? try_mmap (Bytes blob, Cancellable? cancellable) throws Error, IOError {
return null;
}
+5 -2
View File
@@ -193,8 +193,11 @@ namespace Frida {
private uint connection;
construct {
libjailbreak = Module.open (LIBJAILBREAK_PATH, LAZY);
assert (libjailbreak != null);
try {
libjailbreak = new Module (LIBJAILBREAK_PATH, LAZY);
} catch (ModuleError e) {
assert_not_reached ();
}
jbd_call = resolve_symbol ("jbd_call");
assert (jbd_call != null);
+26
View File
@@ -0,0 +1,26 @@
devkit_outputs = [
'frida-core.h',
static_lib_prefix + 'frida-core' + static_lib_suffix,
'frida-core-example.c',
]
if host_toolchain == 'microsoft'
devkit_outputs += [
'frida-core-example.sln',
'frida-core-example.vcxproj',
'frida-core-example.vcxproj.filters',
]
endif
custom_target('core-devkit',
input: [core_public_h, core_public_vapi, core_public_lib],
output: devkit_outputs,
command: [
mkdevkit,
'frida-core',
f'@host_os@-@host_arch@',
meson.current_build_dir(),
] + devkit_options,
install: true,
install_dir: get_option('libdir') / 'frida' / 'devkits' / 'core'
)
+5 -3
View File
@@ -810,10 +810,12 @@ namespace Frida.Droidy {
}
}
#if !WINDOWS
else if (socket_type == "local" || socket_type == "localfilesystem")
else if (socket_type == "local" || socket_type == "localfilesystem") {
connectable = new UnixSocketAddress (socket_address);
else if (socket_type == "localabstract" && UnixSocketAddress.abstract_names_supported ())
connectable = new UnixSocketAddress.as_abstract (socket_address, socket_address.length);
} else if (socket_type == "localabstract" && UnixSocketAddress.abstract_names_supported ()) {
connectable = new UnixSocketAddress.with_type (socket_address, socket_address.length,
ABSTRACT_PADDED);
}
#endif
}
} else if (env_server_address != null && env_server_port != null) {
Loaded 100 of 199 files, more files were not shown because too many files have changed in this diff. Show more