8000 platform: add support for VisionOS by demonguy · Pull Request #1186 · frida/frida-core · GitHub
[go: up one dir, main page]

Skip to content

platform: add support for VisionOS - #1186

Merged
oleavr merged 1 commit into
frida:mainfrom
demonguy:main
Aug 2, 2025
Merged

oleavr merged 1 commit into
frida:mainfrom
demonguy:main

Conversation

@demonguy
Copy link
Copy Markdown
Contributor

I’m attempting to compile frida-gadget for visionOS 26. So far, I’ve modified the releng, frida-core, and frida-gum projects and submitted pull requests for them.

Since I’m not very familiar with Vala and Meson, I took a rather straightforward approach by simply adding XROS wherever the IOS macro was used. I also made minor changes to libffi (although I believe a better solution would be to upgrade it).

At the moment, the build completes successfully, and an Xcode visionOS app can also compile without issues. However, the app crashes at runtime. Below is the call stack.

I’m not very familiar with Frida’s internal mechanisms, so I may need some help.

dyld`__abort_with_payload:
    0x19af9d010 <+0>:  mov    x16, #0x209               ; =521 
    0x19af9d014 <+4>:  svc    #0x80
->  0x19af9d018 <+8>:  b.lo   0x19af9d038               ; <+40>
    0x19af9d01c <+12>: pacibsp 
    0x19af9d020 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x19af9d024 <+20>: mov    x29, sp
    0x19af9d028 <+24>: bl     0x19b01ab74               ; cerror_nocancel
    0x19af9d02c <+28>: mov    sp, x29
    0x19af9d030 <+32>: ldp    x29, x30, [sp], #0x10
    0x19af9d034 <+36>: retab  
    0x19af9d038 <+40>: ret    



dyld`abort_with_payload_wrapper_internal:
    0x19b01e818 <+0>:   pacibsp 
    0x19b01e81c <+4>:   sub    sp, sp, #0x50
    0x19b01e820 <+8>:   stp    x24, x23, [sp, #0x10]
    0x19b01e824 <+12>:  stp    x22, x21, [sp, #0x20]
    0x19b01e828 <+16>:  stp    x20, x19, [sp, #0x30]
    0x19b01e82c <+20>:  stp    x29, x30, [sp, #0x40]
    0x19b01e830 <+24>:  add    x29, sp, #0x40
    0x19b01e834 <+28>:  mov    x19, x5
    0x19b01e838 <+32>:  mov    x20, x4
    0x19b01e83c <+36>:  mov    x21, x3
    0x19b01e840 <+40>:  mov    x22, x2
    0x19b01e844 <+44>:  mov    x23, x1
    0x19b01e848 <+48>:  mov    x24, x0
    0x19b01e84c <+52>:  mov    w8, #0x20                 ; =32 
    0x19b01e850 <+56>:  str    w8, [sp, #0xc]
    0x19b01e854 <+60>:  add    x1, sp, #0xc
    0x19b01e858 <+64>:  mov    w0, #0x2                  ; =2 
    0x19b01e85c <+68>:  mov    x2, #0x0                  ; =0 
    0x19b01e860 <+72>:  bl     0x19af9df00               ; sigprocmask
    0x19b01e864 <+76>:  mov    x0, x24
    0x19b01e868 <+80>:  mov    x1, x23
    0x19b01e86c <+84>:  mov    x2, x22
    0x19b01e870 <+88>:  mov    x3, x21
    0x19b01e874 <+92>:  mov    x4, x20
    0x19b01e878 <+96>:  mov    x5, x19
    0x19b01e87c <+100>: bl     0x19af9d010               ; __abort_with_payload
->  0x19b01e880 <+104>: bl     0x19af9d278               ; __getpid
    0x19b01e884 <+108>: orr    x6, x19, #0x200
    0x19b01e888 <+112>: mov    x1, x24
    0x19b01e88c <+116>: mov    x2, x23
    0x19b01e890 <+120>: mov    x3, x22
    0x19b01e894 <+124>: mov    x4, x21
    0x19b01e898 <+128>: mov    x5, x20
    0x19b01e89c <+132>: bl     0x19b01ae28               ; terminate_with_payload
    0x19b01e8a0 <+136>: brk    #0x1


dyld`abort_with_payload:
    0x19b01e8a4 <+0>:  pacibsp 
    0x19b01e8a8 <+4>:  stp    x29, x30, [sp, #-0x10]!
    0x19b01e8ac <+8>:  mov    x29, sp
    0x19b01e8b0 <+12>: bl     0x19b01e818               ; abort_with_payload_wrapper_internal


dyld`dyld4::halt:
    0x19afa4710 <+0>:   pacibsp 
    0x19afa4714 <+4>:   stp    x28, x27, [sp, #-0x40]!
    0x19afa4718 <+8>:   stp    x22, x21, [sp, #0x10]
    0x19afa471c <+12>:  stp    x20, x19, [sp, #0x20]
    0x19afa4720 <+16>:  stp    x29, x30, [sp, #0x30]
    0x19afa4724 <+20>:  add    x29, sp, #0x30
    0x19afa4728 <+24>:  sub    sp, sp, #0xc10
    0x19afa472c <+28>:  mov    x21, x1
    0x19afa4730 <+32>:  mov    x19, x0
    0x19afa4734 <+36>:  add    x22, sp, #0x410
    0x19afa4738 <+40>:  adrp   x20, 452983
    0x19afa473c <+44>:  add    x20, x20, #0xff0          ; dyld4::error_string
    0x19afa4740 <+48>:  mov    x0, x20
    0x19afa4744 <+52>:  mov    x1, x19
    0x19afa4748 <+56>:  mov    w2, #0x400                ; =1024 
    0x19afa474c <+60>:  bl     0x19b00bde8               ; strlcpy
    0x19afa4750 <+64>:  adrp   x8, 452983
    0x19afa4754 <+68>:  str    x20, [x8, #0x5b0]
    0x19afa4758 <+72>:  str    x19, [sp]
    0x19afa475c <+76>:  adrp   x0, 124

dyld`dyld4::prepare:
    0x19afa1958 <+3732>: mov    x0, x20
    0x19afa195c <+3736>: bl     0x19afae950               ; dyld4::RuntimeState::notifyDebuggerLoad(std::__1::span<dyld4::Loader const*, 18446744073709551615ul> const&)
    0x19afa1960 <+3740>: ldr    x0, [x20, #0x268]
    0x19afa1964 <+3744>: mov    w1, #0x20                 ; =32 
    0x19afa1968 <+3748>: bl     0x19afea390               ; dyld4::ExternallyViewableState::setDyldState(unsigned char)
    0x19afa196c <+3752>: ldr    x0, [x20, #0x268]
    0x19afa1970 <+3756>: bl     0x19afec8ac               ; dyld4::ExternallyViewableState::disableCrashReportBacktrace()
    0x19afa1974 <+3760>: add    x0, x19, #0x130
    0x19afa1978 <+3764>: bl     0x19afffcc0               ; Diagnostics::errorMessage() const
    0x19afa197c <+3768>: add    x1, x20, #0x290
    0x19afa1980 <+3772>: bl     0x19afa4710               ; dyld4::halt(char const*, dyld4::StructuredError const*)
->  0x19afa1984 <+3776>: ldr    x0, [x20, #0x68]
    0x19afa1988 <+3780>: mov    x1, x20
    0x19afa198c <+3784>: bl     0x19afb8a4c               ; dyld4::Loader::path(dyld4::RuntimeState const&) const
    0x19afa1990 <+3788>: ldr    x8, [x20, #0x8]
    0x19afa1994 <+3792>: ldr    x8, [x8, #0x80]
    0x19afa1998 <+3796>: stp    x0, x8, [sp, #-0x10]!
    0x19afa199c <+3800>: adrp   x1, 127
    0x19afa19a0 <+3804>: add    x1, x1, #0xe4c            ; "'%s' not compatible with '%s'"
    0x19afa19a4 <+3808>: add    x0, x19, #0x20
    0x19afa19a8 <+3812>: bl     0x19b00f07c               ; mach_o::Error::Error(char const*, ...)

dyld`start:
    0x19afa0298 <+6212>: bl     0x19afcf3a0               ; lsl::MemoryManager::memoryManager()
    0x19afa029c <+6216>: ldr    x8, [sp, #0x1d0]
    0x19afa02a0 <+6220>: add    x1, x8, #0x468
    0x19afa02a4 <+6224>: bl     0x19afcf550               ; lsl::MemoryManager::setProtectedStack(lsl::ProtectedStack&)
    0x19afa02a8 <+6228>: ldr    x0, [sp, #0x50]
    0x19afa02ac <+6232>: ldr    x1, [sp, #0x1d0]
    0x19afa02b0 <+6236>: str    x0, [x1, #0x268]
    0x19afa02b4 <+6240>: bl     0x19afec9a4               ; dyld4::ExternallyViewableState::setRuntimeState(dyld4::RuntimeState*)
    0x19afa02b8 <+6244>: ldr    x0, [sp, #0x1d0]
    0x19afa02bc <+6248>: ldr    x1, [sp, #0x18]
    0x19afa02c0 <+6252>: bl     0x19afa0ac4               ; dyld4::prepare(dyld4::APIs&, mach_o::Header const*)
->  0x19afa02c4 <+6256>: str    x0, [sp, #0x38]
    0x19afa02c8 <+6260>: add    x8, sp, #0x1f0
    0x19afa02cc <+6264>: mov    x0, x20
    0x19afa02d0 <+6268>: bl     0x19afcf6b0               ; lsl::MemoryManager::lockGuard()
    0x19afa02d4 <+6272>: ldr    x8, [x20, #0x18]
    0x19afa02d8 <+6276>: subs   x8, x8, #0x1
    0x19afa02dc <+6280>: str    x8, [x20, #0x18]
    0x19afa02e0 <+6284>: b.ne   0x19afa02f0               ; <+6300>
    0x19afa02e4 <+6288>: mov    x0, x20
    0x19afa02e8 <+6292>: mov    w1, #0x1                  ; =1 

@oleavr
oleavr merged commit 820b9f0 into frida:main Aug 2, 2025
@oleavr
oleavr commented Aug 2, 2025
Copy link
Copy Markdown
Member

Thanks! 🙌

8000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0