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

Traverse XISO using arrays instead of search-tree #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

JayFoxRox
Copy link
Owner

An untested fix for XboxDev#25

Here's problems this possibly introduces:

  • err checks were not verified
  • XISO creation was not verified
  • Data type changes are not consistent
  • Tabs and spaces still aren't consistent
  • Code quality is worse in some spots (grouping of lines / unnecessary checks)
  • Overflows or underflows were not checked
  • Hidden files which can only be found using search will no longer be found

@CookiePLMonster
Copy link

Can confirm that this allows Project Gotham Racing (dump matching redump, with a video partition stripped after verifying) to be dumped, while both XDVDMulleter and master extract-xiso failed (because of an invalid TOC entry).

@Qubits01
Copy link

Qubits01 commented Mar 4, 2022

Can you elaborate on
Hidden files which can only be found using search will no longer be found?
By "using search" you mean using binary tree traversion?
If so, why wouldn't you find hidden search with the array approach?

@JayFoxRox
Copy link
Owner Author

Can you elaborate on Hidden files which can only be found using search will no longer be found? By "using search" you mean using binary tree traversion? If so, why wouldn't you find hidden search with the array approach?

The Xbox kernel uses different strategies to find files, depending on the used API in the underlying driver.
I'm not sure when those different cases arise, but I'd imagine that if you list all files it will use the array / if you open a specific file it will use the search tree.

  • The existing code in master will miss some files hidden by means of a corrupt filesystem (example: empty search tree / arrays valid).
  • The newly proposed code will miss some other files hidden by means of a corrupt filesystem (example: empty arrays / search tree valid).

Under normal conditions, however, both approaches should yield the same files.

However, a corrupt filesystem (broken search tree OR broken array) will potentially misbehave, depending on the application accessing the filesystem.
There might be games which have a broken filesystem (either broken master or bad rips) or you might want to abuse these differences for potential exploits in the kernel.

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