fritzlb / iOS17-JIT-WIN

Enable JIT on iOS 17 using a windows PC
GNU General Public License v3.0
126 stars 4 forks source link

Nothing happens after the string "This might take a while..." is output. #42

Closed KirNik7 closed 2 months ago

KirNik7 commented 2 months ago

I executed the command: python jit_enabler_better.py net.kdt.pojavlauncher.UKN28JPWT3 The output appears:

Getting bundle ID...
Got bundle ID: net.kdt.pojavlauncher.UKN28JPWT3
starting tunnel to device...
This might take a while. In case it freezes, either close this window and kill every python process in task manager or simply reboot your PC.

But nothing else has happened for a long time. I have iTunes, iCloud for Windows (not the MS Store version), and an AltServer running. When executing the command, the iPhone (iOS 17.4.1) was unlocked and the home screen was opened on it. If I press Ctrl+C (that is, I interrupt the execution of the command), then I see the following output:

Traceback (most recent call last):
  File "C:\...\jit_enabler_better.py", line 41, in <module>
    output = tunnel_process.stdout.readline()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt

As far as I understand, the script does not go beyond the line output = tunnel_process.stdout.readline(). I apologize right away if I misunderstood something, I'm just trying to guess.

fritzlb commented 2 months ago

I assume you already rebooted? Please note that rebooting and shutting down and starting isn't the same. Also, what do you understand under "a long time"? I'd give it especially the first time at least 5 minutes.

In that case, try executing python -m pymobiledevice3 remote start-tunnel in an admin terminal and post the output here. Probably something hangs.

KirNik7 commented 2 months ago

Yes, I agreed to reboot immediately after installation. As for the time, I set the command to run again, waited a couple of minutes, and went to write here. After writing, this whole system stood for another 20-30 minutes. Right now I've waited another five minutes, but no success. This is what I got when I tried to enter a command from your message. There's clearly something wrong here.

C:\Windows\system32>python -m pymobiledevice3 remote start-tunnel
2024-04-19 18:56:52 DESKTOP-6PJVAL1 wintun[9192] INFO WetestUsbFilter driver use current version: 11.36.33.666, [11.36.33.666] tested.
2024-04-19 18:56:52 DESKTOP-6PJVAL1 wintun[9192] INFO WeTestUsbNcm driver use current version: 11.36.59.886, [11.36.59.886] tested.
2024-04-19 18:56:52 DESKTOP-6PJVAL1 wintun[9192] INFO use existing WeTestUsbFilter driver.
2024-04-19 18:56:52 DESKTOP-6PJVAL1 wintun[9192] INFO use existing WeTestUsbNcm driver.
Traceback (most recent call last):
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\asyncio\client.py", line 95, in connect
    protocol.connect(addr)
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\asyncio\protocol.py", line 60, in connect
    self._quic.connect(addr, now=self._loop.time())
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\quic\connection.py", line 504, in connect
    self._connect(now=now)
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\quic\connection.py", line 1217, in _connect
    self._initialize(self._peer_cid.cid)
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\quic\connection.py", line 1373, in _initialize
    raise RuntimeError(
RuntimeError: qh3 v1.0+ no longer support passing cryptography certificate objects within a QuicConfiguration object. Use configuration.load_cert_chain(...) instead using PEM encoded values.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\__main__.py", line 156, in <module>
    main()
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\__main__.py", line 98, in main
    cli()
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\cli\cli_common.py", line 146, in wrapper
    func(*args, **kwargs)
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\cli\remote.py", line 197, in cli_start_tunnel
    asyncio.run(tunnel_task(rsd, secrets, script_mode, max_idle_timeout=max_idle_timeout, protocol=protocol),
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\cli\remote.py", line 112, in tunnel_task
    async with start_tunnel(service_provider, secrets=secrets, max_idle_timeout=max_idle_timeout,
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\contextlib.py", line 210, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\remote\core_device_tunnel_service.py", line 754, in start_tunnel
    async with service.start_quic_tunnel(
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\contextlib.py", line 210, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\pymobiledevice3\remote\core_device_tunnel_service.py", line 376, in start_quic_tunnel
    async with aioquic_connect(
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\contextlib.py", line 210, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\asyncio\client.py", line 100, in connect
    protocol.close()
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\asyncio\protocol.py", line 52, in close
    self.transmit()
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\asyncio\protocol.py", line 102, in transmit
    for data, addr in self._quic.datagrams_to_send(now=self._loop.time()):
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\KirNik\AppData\Local\Programs\Python\Python312\Lib\site-packages\qh3\quic\connection.py", line 541, in datagrams_to_send
    crypto = self._cryptos[epoch]
             ~~~~~~~~~~~~~^^^^^^^
KeyError: <Epoch.INITIAL: 0>
fritzlb commented 2 months ago

Oh there's probably sth wrong with the dependencies. That definitely should not happen. Did you manually install any python packages? I currently don't have a PC with a fresh install of windows, so I can't really check if that's an issue for newer installs. In case someone else experiences sth similar it's probably worth it taking a look at upgrading all dependencies or sth

fritzlb commented 2 months ago

Could you maybe run ˋpip listˋ and post the output? I‘ll compare that to my dependencies and adjust install.bat so that it installs older versions that work

fritzlb commented 2 months ago

Here's how my output looks like:

Package               Version
--------------------- ---------------
aiofiles              23.2.1
annotated-types       0.6.0
ansicon               1.89.0
anyio                 4.3.0
arrow                 1.3.0
asn1                  2.7.0
asttokens             2.4.1
blessed               1.20.0
bpylist2              4.1.1
cached-property       1.5.2
certifi               2024.2.2
cffi                  1.16.0
charset-normalizer    3.3.2
click                 8.1.7
colorama              0.4.6
coloredlogs           15.0.1
construct             2.10.70
cryptography          42.0.5
daemonize             2.5.0
decorator             5.1.1
developer-disk-image  0.0.2
dnspython             2.6.1
email_validator       2.1.1
enum-compat           0.0.3
executing             2.0.1
fastapi               0.110.0
gpxpy                 1.5.0
h11                   0.14.0
hexdump               3.3
httpcore              1.0.4
httptools             0.6.1
httpx                 0.27.0
humanfriendly         10.0
hyperframe            6.0.1
idna                  3.6
ifaddr                0.2.0
inquirer3             0.4.0
ipsw-parser           1.2.2
ipython               8.22.2
itsdangerous          2.1.2
jedi                  0.19.1
Jinja2                3.1.3
jinxed                1.2.1
la_panic              0.4.9
MarkupSafe            2.1.5
matplotlib-inline     0.1.6
nest-asyncio          1.6.0
opack                 0.1.0
orjson                3.9.15
packaging             23.2
parameter-decorators  0.0.2
parso                 0.8.3
pillow                10.2.0
pip                   24.0
plumbum               1.8.2
prompt-toolkit        3.0.43
psutil                5.9.8
pure-eval             0.2.2
pycparser             2.21
pycrashreport         1.2.2
pycryptodome          3.20.0
pydantic              2.6.3
pydantic_core         2.16.3
pydantic-extra-types  2.6.0
pydantic-settings     2.2.1
Pygments              2.17.2
pygnuutils            0.1.1
pyimg4                0.8
pykdebugparser        1.2.4
pymobiledevice3       2.46.2
pyreadline3           3.4.1
python-dateutil       2.9.0.post0
python-dotenv         1.0.1
python-editor         1.0.4
python-multipart      0.0.9
python-rtmidi         1.5.8
pyusb                 1.2.1
pywin32               306
pywintunx-pmd3        1.0.2
PyYAML                6.0.1
qh3                   0.15.0
readchar              4.0.5
remotezip             0.12.3
requests              2.31.0
setuptools            69.1.1
six                   1.16.0
sniffio               1.3.1
srptools              1.0.1
sslpsk-pmd3           1.0.3
stack-data            0.6.3
starlette             0.36.3
termcolor             2.4.0
tqdm                  4.66.2
traitlets             5.14.1
types-python-dateutil 2.8.19.20240106
typing_extensions     4.10.0
ujson                 5.9.0
urllib3               2.2.1
uvicorn               0.27.1
watchfiles            0.21.0
wcwidth               0.2.13
websockets            12.0
wsproto               1.2.0
xonsh                 0.15.0
zeroconf              0.131.0
KirNik7 commented 2 months ago

Yes, of course, here is my "pip list" output:

Package               Version
--------------------- --------------
aiofiles              23.2.1
annotated-types       0.6.0
ansicon               1.89.0
anyio                 4.3.0
arrow                 1.3.0
asn1                  2.7.0
asttokens             2.4.1
blessed               1.20.0
bpylist2              4.1.1
cached-property       1.5.2
certifi               2024.2.2
cffi                  1.16.0
charset-normalizer    3.3.2
click                 8.1.7
colorama              0.4.6
coloredlogs           15.0.1
construct             2.10.70
cryptography          42.0.5
daemonize             2.5.0
decorator             5.1.1
developer-disk-image  0.0.2
dnspython             2.6.1
email_validator       2.1.1
enum-compat           0.0.3
executing             2.0.1
fastapi               0.110.2
gpxpy                 1.5.0
h11                   0.14.0
hexdump               3.3
httpcore              1.0.5
httptools             0.6.1
httpx                 0.27.0
humanfriendly         10.0
hyperframe            6.0.1
idna                  3.7
ifaddr                0.2.0
inquirer3             0.4.0
ipsw-parser           1.2.2
ipython               8.23.0
itsdangerous          2.2.0
jedi                  0.19.1
Jinja2                3.1.3
jinxed                1.2.1
la_panic              0.4.9
MarkupSafe            2.1.5
matplotlib-inline     0.1.7
nest-asyncio          1.6.0
opack                 0.1.0
orjson                3.10.1
packaging             24.0
parameter-decorators  0.0.2
parso                 0.8.4
pillow                10.3.0
pip                   24.0
plumbum               1.8.2
prompt-toolkit        3.0.43
psutil                5.9.8
pure-eval             0.2.2
pycparser             2.22
pycrashreport         1.2.2
pycryptodome          3.20.0
pydantic              2.7.0
pydantic_core         2.18.1
pydantic-extra-types  2.6.0
pydantic-settings     2.2.1
Pygments              2.17.2
pygnuutils            0.1.1
pyimg4                0.8.3
pykdebugparser        1.2.4
pymobiledevice3       2.46.2
pyreadline3           3.4.1
python-dateutil       2.9.0.post0
python-dotenv         1.0.1
python-editor         1.0.4
python-multipart      0.0.9
pyusb                 1.2.1
pywin32               306
pywintunx-pmd3        1.0.2
PyYAML                6.0.1
qh3                   1.0.0
readchar              4.0.6
remotezip             0.12.3
requests              2.31.0
setuptools            69.5.1
six                   1.16.0
sniffio               1.3.1
srptools              1.0.1
sslpsk-pmd3           1.0.3
stack-data            0.6.3
starlette             0.37.2
termcolor             2.4.0
tqdm                  4.66.2
traitlets             5.14.2
types-python-dateutil 2.9.0.20240316
typing_extensions     4.11.0
ujson                 5.9.0
urllib3               2.2.1
uvicorn               0.29.0
watchfiles            0.21.0
wcwidth               0.2.13
websockets            12.0
wsproto               1.2.0
xonsh                 0.15.1
zeroconf              0.132.2
KirNik7 commented 2 months ago

Oh there's probably sth wrong with the dependencies. That definitely should not happen. Did you manually install any python packages? I currently don't have a PC with a fresh install of windows, so I can't really check if that's an issue for newer installs. In case someone else experiences sth similar it's probably worth it taking a look at upgrading all dependencies or sth

Well, I worked with python, so I definitely put other libraries, if that's what you mean. In general, I tried to execute your command on two configured systems. The first is Windows 11 on a regular desktop computer, which has not been reinstalled for a couple of years (the "pip list" was executed on it). The second is Windows 10, which is installed via Bootcamp on an old MacBook. It is cleaner, since it was not so actively used, but at the same time it is more non-standard because of the device. At the same time, the result of executing the command "python -m pymobiledevice3 remote start-tunnel" is completely the same.

fritzlb commented 2 months ago

Thank you so much! I‘ll try to pinpoint the library that’s causing issues (if there’s any). There are a few yt comments with the same problem too, so it’s probably something recently introduced into something.

fritzlb commented 2 months ago

Could you try if the script works after manually installing qhc v0.15.1 by running pip install qh3==0.15.1?

DrakulaGonchik commented 2 months ago

Could you try if the script works after manually installing qhc v0.15.1 by running pip install qh3==0.15.1?

Hi! I have same issue There is result after: Getting bundle ID... DEBUG mode specified. Got bundle ID: com.kdt.livecontainer.67369CWK79 starting tunnel to device... This might take a while. In case it freezes, either close this window and kill every python process in task manager or simply reboot your PC. Sucessfully created tunnel: fdfe:84ee:11d0::1 53236 Manually trying to mount DeveloperDiskImage (this seems to prevent errors on some systems)... 2024-04-19 18:24:30 Revision-PC pymobiledevice3.restore.tss[652] INFO Sending TSS request... 2024-04-19 18:24:31 Revision-PC pymobiledevice3.restore.tss[652] INFO response successfully received 2024-04-19 18:24:33 Revision-PC pymobiledevice3.cli.mounter[652] INFO DeveloperDiskImage mounted successfully

Mounted Disk image. Starting app... (b'Process launched with pid 686\r\n', b'') Started app. PID: 686 Starting debug server... (b"\r\nFollow the following connections steps from LLDB:\r\n\r\n(lldb) platform select remote-ios\r\n(lldb) target create /path/to/local/application.app\r\n(lldb) script lldb.target.module[0].SetPlatformFileSpec(lldb.SBFileSpec('/private/var/containers/Bundle/Application//application.app'))\r\n(lldb) process connect connect://[fdfe:84ee:11d0::1]:49756 <-- ACTUAL CONNECTION DETAILS!\r\n(lldb) process launch\r\n\r\n", b'') Started debug server with connection details: [fdfe:84ee:11d0::1]:49756 Run debugging commands... This might take a few minutes. (lldb) command source -s 0 cmdfile.txt Executing commands in 'C:\Users\Sheff\Downloads\iOS17-JIT-WIN-main\cmdfile.txt'. (lldb) gdb-remote [fdfe:84ee:11d0::1]:49756 (lldb) settings set target.memory-module-load-level minimal (lldb) attach -p 686 Process 0 exited with status = 9 (0x00000009) killed (lldb) error: attach failed: The parameter is incorrect.

done.

LiveContainer opens, but without JIT i guess

Without debug: Getting bundle ID... Got bundle ID: com.kdt.livecontainer.67369CWK79 starting tunnel to device... This might take a while. In case it freezes, either close this window and kill every python process in task manager or simply reboot your PC. Sucessfully created tunnel: fdc6:2089:fcf9::1 53237 Manually trying to mount DeveloperDiskImage (this seems to prevent errors on some systems)... Diskimage already mounted. Starting app... Started app. PID: 693 Starting debug server... Started debug server with connection details: [fdc6:2089:fcf9::1]:49844 Run debugging commands... This might take a few minutes. done.

When i try to boot app in LiveContainer it sends me to my SideStore

KirNik7 commented 2 months ago

It worked! The tunnel was set up, PojavLauncher started and activated the JIT. The last two lines:

This might take a few minutes.
done.
fritzlb commented 2 months ago

It worked! The tunnel was set up, PojavLauncher started and activated the JIT. The last two lines:

This might take a few minutes.
done.

Great, I‘ll push the fix asap

DrakulaGonchik commented 2 months ago

When i try to boot app in LiveContainer it sends me to my SideStore

IG this is problem of LiveContainer then.

fritzlb commented 2 months ago

Could you try if the script works after manually installing qhc v0.15.1 by running pip install qh3==0.15.1?

Hi! I have same issue There is result after: Getting bundle ID... DEBUG mode specified. Got bundle ID: com.kdt.livecontainer.67369CWK79 starting tunnel to device... This might take a while. In case it freezes, either close this window and kill every python process in task manager or simply reboot your PC. Sucessfully created tunnel: fdfe:84ee:11d0::1 53236 Manually trying to mount DeveloperDiskImage (this seems to prevent errors on some systems)... 2024-04-19 18:24:30 Revision-PC pymobiledevice3.restore.tss[652] INFO Sending TSS request... 2024-04-19 18:24:31 Revision-PC pymobiledevice3.restore.tss[652] INFO response successfully received 2024-04-19 18:24:33 Revision-PC pymobiledevice3.cli.mounter[652] INFO DeveloperDiskImage mounted successfully

Mounted Disk image. Starting app... (b'Process launched with pid 686\r\n', b'') Started app. PID: 686 Starting debug server... (b"\r\nFollow the following connections steps from LLDB:\r\n\r\n(lldb) platform select remote-ios\r\n(lldb) target create /path/to/local/application.app\r\n(lldb) script lldb.target.module[0].SetPlatformFileSpec(lldb.SBFileSpec('/private/var/containers/Bundle/Application//application.app'))\r\n(lldb) process connect connect://[fdfe:84ee:11d0::1]:49756 <-- ACTUAL CONNECTION DETAILS!\r\n(lldb) process launch\r\n\r\n", b'') Started debug server with connection details: [fdfe:84ee:11d0::1]:49756 Run debugging commands... This might take a few minutes. (lldb) command source -s 0 cmdfile.txt Executing commands in 'C:\Users\Sheff\Downloads\iOS17-JIT-WIN-main\cmdfile.txt'. (lldb) gdb-remote [fdfe:84ee:11d0::1]:49756 (lldb) settings set target.memory-module-load-level minimal (lldb) attach -p 686 Process 0 exited with status = 9 (0x00000009) killed (lldb) error: attach failed: The parameter is incorrect.

done.

LiveContainer opens, but without JIT i guess

Without debug: Getting bundle ID... Got bundle ID: com.kdt.livecontainer.67369CWK79 starting tunnel to device... This might take a while. In case it freezes, either close this window and kill every python process in task manager or simply reboot your PC. Sucessfully created tunnel: fdc6:2089:fcf9::1 53237 Manually trying to mount DeveloperDiskImage (this seems to prevent errors on some systems)... Diskimage already mounted. Starting app... Started app. PID: 693 Starting debug server... Started debug server with connection details: [fdc6:2089:fcf9::1]:49844 Run debugging commands... This might take a few minutes. done.

When i try to boot app in LiveContainer it sends me to my SideStore

Sorry, that’s another bug which has got nothing to do with this one. Livecontainer seems to be programmed in a way that’s currently only compatible with sideJIT, I can’t really do anything about that.