Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] iOS 17 support #171

Open
Schlaubischlump opened this issue Jun 13, 2023 · 108 comments
Open

[Feature] iOS 17 support #171

Schlaubischlump opened this issue Jun 13, 2023 · 108 comments
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@Schlaubischlump
Copy link
Owner

Schlaubischlump commented Jun 13, 2023

iOS 17 is currently not supported. I can give no ETA when it will be supported.

Problem:
Automatic download and mounting of Developer Disk Images will not work with iOS 17. LocationSimulator should still work, if you mount the Personalized Developer Disk Image with Xcode first.

According to this issue and that iOS 17 changes how Developer Disk Images are handled. It is not clear if libimobiledevice will support these changes. It is also not clear if I will be able to support these changes and implement this new mechanism in LocationSimulator.

Please do not open multiple issues or ask for an eta in regards to iOS 17 support. I can only start working on this if libimobiledevice is updated to support iOS 17, which (if it happens at all) will be the case in September, when iOS 17 is out of beta and released to the public.

What can you do in the meantime ?

At the moment there is no workaround..

1. Install Xcode (Beta).
2. Setup your device as development device.
3. Let Xcode handle the new Personalized Developer Disk Image stuff automatically.
4. Start using LocationSimulator. LocationSimulator should hopefully detect that a Developer Disk Image was already mounted by Xcode. That way, LocationSimulator does not need to handle the mounting of the Developer Disk Image itself.

Edit:
I might consider migrating to MobileDevice.framework. That way I could support iOS 17 before libimobiledevice is updated. Although I might need to drop Catalina support in this case ? --- Does not work, because MobileDevice.framework does not support iOS 17 and CoreDevice is written in Swift and hard to reverse engineer.

Edit:
Pymobiledevice3 works for iOS 17, but only over USB. Also using python in Swift is cumbersome and really slow, because python is slow by nature.

Edit 13.02.2024:
There seems to be some progress going on over at go-ios. I think if they manage to finish adding iOS 17 support I can probably migrate my backend to use it with Gomobile. I keep an eye on that and still actively search for solutions to support iOS 17.

Edit 19.04.2024:
There is an open pull request at danielpaulus/go-ios#332. Once this is merged I should be able to work on iOS 17 support.

@Schlaubischlump Schlaubischlump added enhancement New feature or request bug Something isn't working documentation Improvements or additions to documentation and removed bug Something isn't working labels Jun 13, 2023
@Geczy
Copy link

Geczy commented Jun 14, 2023

ty for instructions, was just looking for why it wasn't working with any tool i tried

@Geczy
Copy link

Geczy commented Jun 14, 2023

confused though. i even got hello world running on xcode 15 beta to prove my device is setup as a development device. where's my personalized image?

i went to the path /Applications/Xcode-beta.app/Contents/Resources/CoreDeviceDDIs that the issue you linked provides and i do see my img there, but the app is still not recognizing it

i cant add it to the app cause it requires a signature which i dont have?

CleanShot 2023-06-14 at 18 22 07@2x CleanShot 2023-06-14 at 18 20 31@2x CleanShot 2023-06-14 at 18 16 41@2x CleanShot 2023-06-14 at 18 16 53@2x CleanShot 2023-06-14 at 18 17 10@2x CleanShot 2023-06-14 at 18 19 31@2x

@Schlaubischlump
Copy link
Owner Author

Schlaubischlump commented Jun 15, 2023

Then I'll probably need to update LocationSimulator to recognize the new mounted image properly. Sadly I can only do this when libimobiledevice is updated :/

I had hoped, that the mechanism to detect the mounted image did not change, but this seems to not be the case ...

I can probably hack LocationSimulator to just not check if the image is mounted. I can try to upload a build on the weekend, that disables automatic DeveloperDiskImage downloads. Then you can check, if it is working with this build

Edit: Try this build. It is unsigned so you probably have to open it with a right click and confirm some warnings. This build just assumes, that the developer disk image is always mounted.

LocationSimulator.app.zip

@v-u-n
Copy link

v-u-n commented Jun 15, 2023

I tried this and I get this error
image

@Schlaubischlump
Copy link
Owner Author

Schlaubischlump commented Jun 15, 2023

Have you mounted the DeveloperDiskImage with Xcode by installing some app ?

If so, then apple changed the API. In this case, I can not address this error until September

@Geczy
Copy link

Geczy commented Jun 15, 2023

same issue here even after mounting via xcode btw

@Geczy
Copy link

Geczy commented Jun 15, 2023

even using the personalized dev signature + dev image exported from here doesn't make locationsimulator work libimobiledevice/libimobiledevice#1452

CleanShot 2023-06-15 at 12 00 53

@Schlaubischlump
Copy link
Owner Author

Schlaubischlump commented Jun 15, 2023

Thanks for all the testing.

Unfortunately, that means Apple broke more than just the developer disk image mounting. They also changed the API for changing the location or the way to interact with it. In every case this sounds like a major rewrite is required and libimobiledevice needs to be update first, which in my experience takes quite some time.

So for everyone reading this: It will take a long time until iOS 17 is supported. If you can, stay on iOS 16 if you want to keep using this app.

@Geczy
Copy link

Geczy commented Jun 15, 2023

if you can use https://github.com/doronz88/pymobiledevice3 i think you'll receive location spoof support on ios 17 much sooner, because it already added some support for 17

@Schlaubischlump
Copy link
Owner Author

Theoretically swift does support python bindings, but this would require an even bigger rewrite of LocationSimulator. At this point it would be easier to throw the app away and write a new one.

If pymobiledevice has done all the necessary research it should be much easier to port the changes to libimobiledevice. I might even be able to do this myself if I find the time.

Note to myself: Keep an eye on the issue to see if the repo of pymobiledevice with the images comes online.

@Schlaubischlump
Copy link
Owner Author

@Geczy

Since you got the Xcode beta up and running, could you maybe test if the location simulation is still working for the iOS Simulator?

@Geczy
Copy link

Geczy commented Jun 15, 2023

@Geczy

Since you got the Xcode beta up and running, could you maybe test if the location simulation is still working for the iOS Simulator?

yeah it works

CleanShot 2023-06-15 at 14 40 17

@Schlaubischlump
Copy link
Owner Author

Perfect, thank you for verifying this ! One thing I don't have to fix. That means, I have more time to fix the iOS support.

@Dliix66
Copy link

Dliix66 commented Jul 16, 2023

Hello ! thanks for all the clarification, I am also down to help if you need further tests while working on this, I'm on iOS 17 + Sonoma + xCode Beta

@shadowh4ck3r
Copy link

Perfect, thank you for verifying this ! One thing I don't have to fix. That means, I have more time to fix the iOS support.

We need your magik out there 😀🙏

@Schlaubischlump
Copy link
Owner Author

Still waiting for an updated version of libimobiledevice...

Sadly nothing happened over there yet. I don't have the time to update it myself at the moment :/ Lets hope that someone updates it soon.

It seems like pymobiledevice3 is already updated, so the heavy lifting in regards to reverse engineering apples changes is already done.

@shadowh4ck3r
Copy link

Thanks. We stay Hopeful then!

@Schlaubischlump
Copy link
Owner Author

Looks like there is some progress. iFakeLocation implemented support to mount personalized DeveloperDiskImages using libimobiledevice. pymobiledevice3 already provides a repo with personalized developerDiskImages for iOS 17 (Note to myself: Update the old links for iOS Version < 17 to this repo as well). I might be able to add support to mount personalized DeveloperDiskImages images based on the implementation in iFakeLocation. This would be a first step. Even if I manage to mount the DeveloperDiskImages for iOS 17, location simulation would still not work, since all of this stuff was changed by Apple as well.

That being said, I can not start working on this yet, since I do not have a device to test anything on. Apple dropped support for my iPad in iOS 17. Therefore, I'm left with my primary iPhone as my main development device. Since I need my iPhone on a daily basis I can not risk updating it to a beta version. I'll probably start working on this when iOS 17 is out of beta.

@Schlaubischlump
Copy link
Owner Author

Schlaubischlump commented Aug 22, 2023

Quick update:
I updated the LocationSimulator user interface and the download handling source code. It is now possible to add and download personalized DeveloperDiskImages.

It is still not possible to:

  1. Mount a personalized DeveloperDiskImage
  2. Spoof the location of an iOS 17 device

@marvinjoa
Copy link

That being said, I can not start working on this yet, since I do not have a device to test anything on. Apple dropped support for my iPad in iOS 17. Therefore, I'm left with my primary iPhone as my main development device. Since I need my iPhone on a daily basis I can not risk updating it to a beta version. I'll probably start working on this when iOS 17 is out of beta.

I had the beta since the beginning and it safe to install the beta now. Critical apps like Sparkasse and other banking apps have worked since beta 1.

@gabruconcepts
Copy link

Thanks for your hard-work so far.

@Schlaubischlump
Copy link
Owner Author

Some information about the new way iOS devices communicate with macOS starting with iOS 17.

https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md

@shadowh4ck3r
Copy link

Some information about the new way iOS devices communicate with macOS starting with iOS 17.

https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md

Apple did this refactoring thinking they could beat the curve of Tweaks and jailbreaks... No matter how they try, there will always be a vulnerability that serves as a loophole for us to keep using our tools, The iOS 17 is full of bugs and keeps contradicting some AppStore apps... thanks @Schlaubischlump for this educative explanation... ❤️🚀

@Schlaubischlump
Copy link
Owner Author

Thank you for the kind words, but I merely collect the information here. doronz88 has done the hard work of reverse engineering the new protocol.

Most likely apple rewrote the developer tools to get rid of the overhead incurred by usbmuxd. It makes sense, but it is shitty for all existing tools.

@cdfornari
Copy link

Any update on this?

@Schlaubischlump
Copy link
Owner Author

Schlaubischlump commented Sep 19, 2023

Nope, currently doesn't look good...

I might be able to get the DeveloperDiskImage mounting to work. But I really don't have the time to add remote XPC support for libimobiledevice. And it doesn't look like anybody over at libimobiledevice has time to implement it either :/

See: libimobiledevice/libimobiledevice#1490

@chronolai
Copy link

https://github.com/nexron171/SimVirtualLocation

work on iOS 17.2.1

RSD address & port

sudo python3 -m pymobiledevice3 remote start-tunnel

@ieaksu
Copy link

ieaksu commented Dec 24, 2023

https://github.com/nexron171/SimVirtualLocation

work on iOS 17.2.1

RSD address & port

sudo python3 -m pymobiledevice3 remote start-tunnel

This works well on my iOS 17.2 but it only works for short distances. If the distance is longer than let's say 6-7 blocks, then it stops mocking the virtual location.

edit: It's not working well anymore. It's giving me an extremely long error

@thecodingcrow
Copy link

Damn this thread has blown up 😄

Just for the sake of adding to this clutter: https://github.com/Siyuanw/kinesis <- still works fine

The project got a nice polish recently and I managed to use it again today. Only thing I had to fix was a requirement
image

In the requirements.txt file make sure that it says eventlet==0.34.2 in line 3

For any further questions on this project I suggest you post in the kinesis repo
or shoot me a dm on twitter: https://twitter.com/mental_luci

@Einstein2150
Copy link

Damn this thread has blown up 😄

Just for the sake of adding to this clutter: https://github.com/Siyuanw/kinesis <- still works fine

The project got a nice polish recently and I managed to use it again today. Only thing I had to fix was a requirement image

In the requirements.txt file make sure that it says eventlet==0.34.2 in line 3

For any further questions on this project I suggest you post in the kinesis repo or shoot me a dm on twitter: https://twitter.com/mental_luci

Works still with 17.3

@han-qiu
Copy link

han-qiu commented Jan 30, 2024

Damn this thread has blown up 😄

Just for the sake of adding to this clutter: https://github.com/Siyuanw/kinesis <- still works fine

The project got a nice polish recently and I managed to use it again today. Only thing I had to fix was a requirement image

In the requirements.txt file make sure that it says eventlet==0.34.2 in line 3

For any further questions on this project I suggest you post in the kinesis repo or shoot me a dm on twitter: https://twitter.com/mental_luci

Works with 17.5, amazing!

@FreezaSama
Copy link

It's true this works but not AT ALL as elegant as what @Schlaubischlump work of art

Damn this thread has blown up 😄
Just for the sake of adding to this clutter: https://github.com/Siyuanw/kinesis <- still works fine
The project got a nice polish recently and I managed to use it again today. Only thing I had to fix was a requirement image
In the requirements.txt file make sure that it says eventlet==0.34.2 in line 3
For any further questions on this project I suggest you post in the kinesis repo or shoot me a dm on twitter: https://twitter.com/mental_luci

Works with 17.5, amazing!

@kartikthapar
Copy link

I am slightly confused. How is Kinesis related to this?

@R2-t
Copy link

R2-t commented Apr 11, 2024

I am slightly confused. How is Kinesis related to this?

I'd say it's because people are looking for an alternative since this app may be deprecated.

@Schlaubischlump
Copy link
Owner Author

I'd say it's because people are looking for an alternative since this app may be deprecated.

Just to be clear, I haven't given up on this project. I still want to update it. My life has just become way busier the last couple of month...

Currently I'm waiting for a new release of go-ios, since that seems to be more realistic than libimobiledevice being updated. Last weekend I played around with the current version on the master branch that has partial iOS 17 support, but I couldn't get it to work for my iPhone. Whenever a new release is out, I start working on integrating it into LocationSimulator.

@htlou
Copy link

htlou commented May 1, 2024

It seems that go-ios is currently supporting location simulation for ios17, as is shown in their recent pr?

@stevehoek
Copy link

I could not get kinesis to run on my Mac with Python 3.1.2, so I tried FonesGo Location Changer as mentioned above and it works very well, has a nice UX, etc. WiFi connection is not working "yet" on iOS 17, however.

Of course it is a paid app, so I'd love it if this app came back to life.

@Schlaubischlump
Copy link
Owner Author

Schlaubischlump commented May 1, 2024

It seems that go-ios is currently supporting location simulation for ios17, as is shown in their recent pr?

If you have time to play around and get it to work @htlou let me know! I downloaded it, compiled it and tried to run it without success on macOS. I just can't start a tunnel. The PR for supporting iOS 17 on macOS is still open and not merged in (linked in the issue description). I left two comments on two separate issues, but haven't heard back yet.

@pujux
Copy link

pujux commented May 3, 2024

hey guys! I really don't want to invalidate David's awesome work here but since I read people are using paid solutions I can't not post here...

I've forked the kinesis repository and made several updates including fixes for a number of previously reported issues and new features that have been requested.
you can find it here: https://github.com/pujux/magic-carpet

looking forward to feedback or suggestions!

@pamochi
Copy link

pamochi commented Jun 18, 2024

I know @Schlaubischlump you do not want to use Pymobiledevice3. However, for the others looking I found this repo (https://github.com/davesc63/GeoPort/?tab=readme-ov-file) that in my light testing worked without issue on my arch linux machine. There is a macOS and Windows version as well that I haven't been able to test yet. Apparently also can be done over wifi instead of tethered but I have yet to try that.

@Entrepren
Copy link

I‘ be found a workaround for teleporting on iOS 17 here:

https://geoport.me/

@MHV313
Copy link

MHV313 commented Jul 16, 2024

@Entrepren have you tested it ? Any bans ? Is it free or paid ?

@MHV313
Copy link

MHV313 commented Jul 17, 2024

I‘ be found a workaround for teleporting on iOS 17 here:

https://geoport.me/

This does not work ! Pleas do not post without testing first !

@Entrepren
Copy link

Entrepren commented Jul 17, 2024

Tested successfully with iOS 17.5.1 on iPhone SE 2 and macOS 13.6.7 on 14th July. It’s free. You have to deactivate iPhone passcode, reboot and enable Developer mode on iPhone. Sure, functionality is very basic

@MHV313
Copy link

MHV313 commented Jul 17, 2024

Tested successfully with iOS 17.5.1 on iPhone SE 2 and macOS 13.6.7 on 14th July. It’s free. You have to deactivate iPhone passcode, reboot and enable Developer mode on iPhone. Sure, functionality is very basic

I tested again on iphone 14 pro max ios 17.5.1 MacOS Sonoma 14.5, passcode on phone has been removed and restarted, also has developer mode on ! And still not working for me, keep getting failed to detect location (12)

@baptiste-faure1811
Copy link

Tested successfully with iOS 17.5.1 on iPhone SE 2 and macOS 13.6.7 on 14th July. It’s free. You have to deactivate iPhone passcode, reboot and enable Developer mode on iPhone. Sure, functionality is very basic

I tested again on iphone 14 pro max ios 17.5.1 MacOS Sonoma 14.5, passcode on phone has been removed and restarted, also has developer mode on ! And still not working for me, keep getting failed to detect location (12)

Works for me

@axeelz
Copy link

axeelz commented Sep 21, 2024

Hi! @Schlaubischlump
First of all, I appreciate a lot your work and haven't found a better solution to this day.
Therefore, with the recent release of iOS 18, do you plan on supporting it in a near future, or have you moved on from this project? Thanks a lot

@Schlaubischlump
Copy link
Owner Author

Hi @axeelz,

I haven't abandoned the project. I actually tried quite a few things, but none of them worked. Thats why there is no activity on github.

I tried using pymobiledevice3 internally by bundling a python interpreter in the project. Quite the overhead and didn't work since pymobiledevice3 uses a lot of dependencies that just don't work in the sandbox of the app.

I also experimented with go-ios. Sadly I didn't manage to create c bindings. And even if that works, go-ios still requires root access and breaks the native ios support of the mac until you reboot the computer. Far from ideal.

I saw that there was recent activity in libimobiledevice. It least one can now upload personal developer images. My hope is, that its just a matter of time until they start supporting iOS 17 fully. I actually already started compiling libimobiledevice from scratch to integrate it faster in case they fully support iOS 17 at some point in the future.

@axeelz
Copy link

axeelz commented Sep 26, 2024

Thanks for the detailed update. I understand that implementing this looks quite challenging.
I wish I could help, but I'm really not familiar with iOS APIs and Swift...
Nevertheless, I appreciate your continued efforts and look forward to any future updates!
And I hope that supporting iOS 17 will lead to support for iOS 18 as well.

@Schlaubischlump
Copy link
Owner Author

Thanks for your kind words :) Indeed, if iOS 17 is supported, iOS 18 should work as well. Apple didn't change anything that I know of.

@FreezaSama
Copy link

We are looking forward <3

@dis-and-dat
Copy link

dis-and-dat commented Oct 14, 2024

ur great man. hope you can fix it, we are craving for it! 💯

wish I could help in coding.. but if its done, Im sure I can help with a donation. 🥇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests