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

GUI #12

Open
V3rochka opened this issue Feb 26, 2020 · 23 comments
Open

GUI #12

V3rochka opened this issue Feb 26, 2020 · 23 comments
Assignees
Labels
enhancement New feature or request

Comments

@V3rochka
Copy link
Collaborator

Make the Graphic Frame Buffer work and displayed in a QEMU window.

@V3rochka V3rochka added the enhancement New feature or request label Feb 26, 2020
@khanhduytran0
Copy link

Can Project Sandcastle's framebuffer driver being used to get graphics working?

@jonyafek
Copy link
Collaborator

Don't think so, their driver is for connecting linux to the iPhone's screen. What we need to do is to connect iOS to QEMU's "screen".

@khanhduytran0
Copy link

khanhduytran0 commented Nov 16, 2020

Or maybe obtain driver code from the leaked iBoot source code? (Maybe get DMCA, or push a bunch of modifications to Apple no longer able to detect them).

@asdfugil
Copy link

asdfugil commented Dec 9, 2020

can the framebuffer in https://github.com/checkra1n/pongoOS be used? (i think they have darwin ABI)

@jonyafek
Copy link
Collaborator

jonyafek commented Dec 9, 2020

Unfortunately I don't think it is helpful. The first challenges are on the iOS side. We need to force the iOS kernel to enable the graphic interface and starting using the framebuffer with software rendering. Since PongoOS runs before iOS I think both challenges are unrelated to this code you are referencing.

@khanhduytran0
Copy link

khanhduytran0 commented Jan 7, 2021

So, run SpringBoard and debug from it.

@VisualEhrmanntraut
Copy link

I'm interested in doing this, how do I run SpringBoard? I've done the steps in the wiki and have a XNU QEMU running iOS 12

@VisualEhrmanntraut
Copy link

VisualEhrmanntraut commented Oct 23, 2021

It seems SpringBoard is running, but not displaying

Registering: ../arm-io@2240000/AppleS8000IO/disp0@6200000/IOMobileFramebuffer

IOMobileFramebuffer seems to be attaching. I'm looking at the decompilation of kernelcache.release.n66.out using Ghidra and so far I'm not understanding how iOS is blocking software rendering

@sophia-angel
Copy link

sophia-angel commented Apr 18, 2022

Apologizes for the bump, but is the GUI portion still being worked on?? :)

@asdfugil
Copy link

asdfugil commented Apr 19, 2022

nop
Well, not in this repository anyway

@sophia-angel
Copy link

sophia-angel commented Apr 19, 2022

What repo are they doing it in then? :)

@asdfugil
Copy link

asdfugil commented Apr 19, 2022

What repo are they doing it in then? :)

Well I mean there's no activity on this repository for a long time so...

There is a fork (not related) of iOS QEMU at https://github.com/TrungNguyen1909/qemu-t8030 it still does not have GUI yet, and it uses QEMU 7.0.0.

SpringBoard requires Metal besides a basic graphical framebuffer, so it will be difficult to do.

@4val0v
Copy link

4val0v commented Jul 5, 2022

Metal support is partially implemented here https://github.com/iqemu64/iqemu64

@VisualEhrmanntraut
Copy link

Metal support is partially implemented here https://github.com/iqemu64/iqemu64

Bullshit

@raspiduino
Copy link

Metal support is partially implemented here https://github.com/iqemu64/iqemu64

Bullshit

Is that thing really work?

@VisualEhrmanntraut
Copy link

Metal support is partially implemented here https://github.com/iqemu64/iqemu64

Bullshit

Is that thing really work?

Literally just QEMU with the history removed. If mouths could shit this guy would have two butts

@raspiduino
Copy link

Metal support is partially implemented here https://github.com/iqemu64/iqemu64

Bullshit

Is that thing really work?

Literally just QEMU with the history removed. If mouths could shit this guy would have two butts

:v

@VisualEhrmanntraut
Copy link

Seems like I was partially wrong, there are changes but from what I can tell it just knows how to run iOS binaries (in bsd-user directory) but it doesn't emulate any hardware, it is just binary emulation

@raspiduino
Copy link

So that means it require a MacOS or *BSD host to run?

If *BSD is OK then that's really easy, go and get FreeBSD, OpenBSD or NetBSD

@VisualEhrmanntraut
Copy link

No, it doesn't have Metal emulation. It just knows how to parse and run iOS binaries, so it would only work in macOS itself

@raspiduino
Copy link

No, it doesn't have Metal emulation. It just knows how to parse and run iOS binaries, so it would only work in macOS itself

Well there is actually MacOS (both x86_64 and ARM64 emulation, but ARM64 doesn't have display), so I think it will work in a Mac VM, but slowwwwwwwwwwwwww

@VisualEhrmanntraut
Copy link

No, it doesn't have Metal emulation. It just knows how to parse and run iOS binaries, so it would only work in macOS itself

Well there is actually MacOS (both x86_64 and ARM64 emulation, but ARM64 doesn't have display), so I think it will work in a Mac VM, but slowwwwwwwwwwwwww

Virtualised macOS without GPU passthrough (via KVM or similar) wouldn't have acceleration anyway

@khanhduytran0
Copy link

khanhduytran0 commented Dec 27, 2022

Corellium reveals an interesting but also undocumented boot argument: gpu=0. I tested on physical device, it actually forced iOS to do software rendering. Hope this helps.
Edit: this argument only works on iOS 12, unfortunately, it appears that Apple took away software rendering since iOS 13.

We need to force the iOS kernel to enable the graphic interface and starting using the framebuffer with software rendering.

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

No branches or pull requests

8 participants