Hacking [BETA] Loadiine (v3) for WiiU 4.1.0 & 5.0.0 ONLY

  • Thread starter Thread starter ptitleray
  • Start date Start date
  • Views Views 66,130
  • Replies Replies 209
  • Likes Likes 31
Waiting for 5.6.6.4.5.7.8.1.1.5:toot::toot:
Come on guys in every f***** corner you can see that is not working with Fw Above 5.3.2:teach::teach:
stop spaming the shit outta the forum with your request
Wait for it or buy a new with fw 5.3.2 or less
or the best you can do is develop it self :glare::glare:
 
Waiting for 5.6.6.4.5.7.8.1.1.5:toot::toot:
Come on guys in every f***** corner you can see that is not working with Fw Above 5.3.2:teach::teach:
stop spaming the shit outta the forum with your request
Wait for it or buy a new with fw 5.3.2 or less
or the best you can do is develop it self :glare::glare:
:shit::shit::shit::shit::shit:
 
ONLY FOR TESTERS ON 4.1.0

For those who are still in 4.1.0, i've start the porting of loadiine for this firmware :)
For now, it's just the v3 because there has been many change of address on v4 i don't understand for now.

All this project is for educational, i try to learn how all of this work :rolleyes:
Also, i'm French so be indulgent ^_^

You Sir are a saint! Now I can update to 4.1, use your Loadline and still have the "easier" IOSU when it comes! So much better that it sitting in a box like its doing now. Lol Thanks to everyone who puts this effort in for sharing.
 
Too bad I upgraded from 4.1.0 to 5.3.2 the day before you released this, would have loved to assist you. Good work and have fun learning
 
Has nobody tested this yet? Been waiting for someone to be like "Awesome I'm on 4.1.0, and this works!" or something like that.
I'm on 5.3.2 myself, but I'm very curious about this for 4.1.0 users for some reason.
 
  • Like
Reactions: pelago
yes it works great just pygecko to fix while in a game but for the rest very good work!!!
 
Can I test it? FW 4.0.2
4.0 and older work completely different, while with 4.1.0 and newer you can just change around addresses 4.0 and older use a different memory layout as well as the main executable loader is completely different so you have to rewrite loadiine to follow that, I will eventually come to it on my 3.1.0, probably when I have some more free time.
 
For the story :P

I will try to explain my "method" for, why not, porting it to other firmware ;)
I take some base the loadiine v3 (bf42d94) --> you can download it here

I'm not so smart and i don't know all of this work so i use the "method" of comparison (with IDA PRO), and some mathematics :P
Read all this post before download anything and if you feel capable of doing it ... try :D

1 - Download the "OS" for the firmware you want to port loadiine and 5.3.2 firmware (to compare)
- for this step, i used NUSgrabber from crediar --> download NUSgrabber here
- you can use Uwizard or NUSGrabberGUI if you prefer
- use NUSgrabber like this :
NUSgrabber 000500101000400A [OSv11 version]

[OSv11 version] must be replace by the version of firmware

Look at the line "OSv11" in the Wiiubrew Title Database
For example, on 5.3.2 firmware, it's v11464 so the line will be :
NUSgrabber 000500101000400A 11464
- now (if you use NUSgrabber), you must have a directory named "000500101000400A" in the same directory of NUSgrabber
and in this directory, 2 others : 1 named "11464" (this one is the 5.3.2 "OS") and the other must fit the version of your "OS" firmware (ex. 5883 for 4.1.0 "OS")

2 - Extract the 2 "OS" version to compare
- in the 2 directory (11464 and the other for your firmware), use CDecrypt from crediar like this :
CDecrypt.exe title.tmd title.tik wiiucommonkey.bin
- if all is good, you must have a new directory named "code" on 11464 and the other (the one fit your firmware version)

3 - Use IDA PRO (disassembler) to find address
- download IDA PRO --> don't ask me where to find it
- use aerosoul94 WiiU loader --> look here
- open "coreinit.rpl" in IDA, wait a little for the program to disassemble
- go to the "Exports" tab on IDA and you will see addresses in front of function's name
- for the 0x1xxxxxxx address, they're GOOD but for the 0x02xxxxxx, we must make some mathematics

4 - Some mathematics ...
- for the 0x02xxxxxx, we must find a base address for our calculations
- for this, you must use the payload ("address.zip") attached below (use it "directly", no need kernel exploit)
- it will display (if your WiiU is exploitable) some address :
OSScreenInit is at : 0xXXXXXXX --> will be the "base" for "coreinit.rpl"
socket_lib_init for "nsysnet.rpl"
GX2WaitForVsync for "gx2.rpl"
VPADRead for "vpad.rpl"
SYSLaunchMiiStudio for "sysapp.rpl"
- on my 4.1.0 WiiU, i have :
OSScreenInit is at : 0x10352F8
socket_lib_init is at : 0x10B44D4
GX2WaitForVsync is at : 0x11454BC
VPADRead is at : 0x111D5DC
SYSLaunchMiiStudio is at : 0xDEAB888
- now back to "coreinit.rpl" in IDA, in "Exports" tab, search "OSScreenInit" function
For my 5883 "OS" version, i have 0x020196F8 in front of "OSScreenInit" function in IDA
So :
0x020196F8 - 0x10352F8 = 0xFE4400 ==> "MAGIC" number for "coreinit.rpl" for 4.1.0 firmware
With this "MAGIC" number, we may know all address of the functions present in "coreinit.rpl" :D
For example, address of FSAInit (which is in "coreinit.rpl") can be calculate by :
0x0203DF1C (IDA address) - 0xFE4400 ("MAGIC" coreinit number) = 0x1059B1C (REAL address of FSAInit for 410 firmware)
For my 5883 "OS" version (4.1.0), i have 0x02000514 in front of "socket_lib_init" function in IDA
So :
0x02000514 - 0x10B44D4 = 0xF4C040 ==> "MAGIC" number for "nsysnet.rpl" for 4.1.0 firmware
With this "MAGIC" number, we may know all address of the functions present in "nsysnet.rpl" :D
For example, address of connect (which is in "nsysnet.rpl") can be calculate by :
0x02000A3C (IDA address) - 0xF4C040 ("MAGIC" coreinit number) = 0x10B49FC (REAL address of connect for 410 firmware)
- we can do the same for the others, to find all functions to replaces in loadiine source :)

(SOON) 5 - Make some address adjustment on some functions
On file launcher.c :
- change address in InstallMenu() function (done by compare with IDA in coreinit.rpl)
- change address in InstallLoader() function (done by compare with IDA in loader.elf)
...
 

Attachments

Last edited by ptitleray,
yes works fine just don't forget to launch tcpgecko before running loadiine like pittleray said and it's good
 
4.0 and older work completely different, while with 4.1.0 and newer you can just change around addresses 4.0 and older use a different memory layout as well as the main executable loader is completely different so you have to rewrite loadiine to follow that, I will eventually come to it on my 3.1.0, probably when I have some more free time.
Like during Christmas? :nudge nudge:
 
Thanks a lot for the tutorial, ptitleray :)
I will try to get it working on 5.0.0
If anyone else is interested in trying to make it work for 5.0.0, here are the addresses to get started:

OSScreenInit is at: 0x1039AD8
socket_lib_init is at: 0x10BF2F4
GX2WaitForVsync is at: 0x1150868
VPADRead is at: 0x11283D0
SYSLaunchMiiStudio is at: 0xDEAAE68

Note that this is for 5.0.0 only.
 

Site & Scene News

Popular threads in this forum