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

Extracting files inside exefs Nintendo Switch #19

Open
Migushthe2nd opened this issue Jan 10, 2019 · 3 comments
Open

Extracting files inside exefs Nintendo Switch #19

Migushthe2nd opened this issue Jan 10, 2019 · 3 comments

Comments

@Migushthe2nd
Copy link

Migushthe2nd commented Jan 10, 2019

You seem quite skilled (especially because I have no idea what has to be done to extract all these binary files), so I wanted to ask you if you could also take a look at the files in the exefs partition. I was wondering if those can be unpacked an converted to a readable format aswell. I don't know though if it'll be of anything useful.
The three files inside the qlaunch's (Nintendo's system titles) exefs:
image
And here's the link
https://drive.google.com/drive/folders/1RixtA-_BSjd0-ihIJ1tHPQUDgxm0ctfY?usp=sharing

I'm not saying you have to do this, just asking (<- that 'just' can be quite a lot tho) if you could if you have the time available. I don't know if it is even possible, also because there isn't much documentation.

@Tyulis
Copy link
Owner

Tyulis commented Jan 10, 2019

Actually, I don't have so many experience with the Switch. But anyways, files are quite similar.
There, main and rtld are basically executable files, or libraries. So it might be converted to ELF, but I don't think it will be so interesting.
Then main.npdm is "The Switch equivalent of the 3DS exheader", as Switchbrew said, so it may be converted as 3DSkit does with 3DS exheader, but it mostly contains information used internally, such as memory mapping, acccess controls, permissions... So another time, some informations that are not so interesting nor useful in my mind.
But if you want, I can take a look if I finally succeed with BFLAN files (that are significally less documented)

(And digging into file formats like that is not so complicated, you just don't have to be afraid by hex editors)

@Migushthe2nd
Copy link
Author

Migushthe2nd commented Jan 10, 2019

Again, I have no experience, but a developer of Qcean once said this

"Implementing more stuff isn't easy cause yes we can edit the layout but the code doesn't "know" that our custom entries are there, (...) would require an insane level of skill to properly patch the home menu exefs."

Where do you think the code that would have to edited would be? I simply thought "main is the biggest file in exefs, so I guess that would contain the code that controls the rest."
(Sorry I didn't provide sizes)
image

Edit: I found a github page that says which file (apparantly main.npdm) was edited to launch the Homebrew menu via another button. (Yeah I don't have enough knowledge for this, as I have no idea what you would get when 'unpacking' such a file)

UserPageHBMenu
A quick modification to the .npdm file that Atmoshphere uses to launch the HBMenu as done by the original project, nx-hbloader.

Usage:
Rename your /atmosphere/titles/010000000000100D directory to /atmosphere/title/0100000000001013
Move main.npdm to /atmosphere/title/0100000000001013/exefs/
Start up Hekate, and click any user icon at the top left of the home menu.
Dependencies:
npdmtool

(https://github.com/bzzus/UserPageHBMenu)

@Tyulis
Copy link
Owner

Tyulis commented Jan 10, 2019

Actually, I don't have many knowledge about how Atmosphere works, and even less about that. If it does not take account of custom entries, it's probably somewhere in the code, and I won't dig into machine code on a console I don't know very well, to find something I don't actually know.
I confirm, it would require an insane level of skill ^^.
But maybe I'll try to look at this someday if I have the time

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

No branches or pull requests

2 participants