Hacking AES obfuscation on the Wii U bootrom

am i being a media whore by sharing this news?


  • Total voters
    53

harryoke

Member
OP
Newcomer
Joined
Dec 18, 2013
Messages
9
Trophies
0
Age
50
Location
Inside Your Mind
XP
87
Country
source :

source:
mdY5Cuf.jpg

mdY5Cuf
 

Maxternal

Peanut Gallery Spokesman
Member
Joined
Nov 15, 2011
Messages
5,210
Trophies
0
Age
40
Location
Deep in GBAtemp addiction
Website
gbadev.googlecode.com
XP
1,709
Country
I see no problem with sharing. The only problem is when everyone assumes that this means "YAY, next step, Wii U exploit and backup loaders!!!" (which is far from the truth. This is fun and interesting stuff, yes, but not needed or particularly useful in the process of running homebrew in Wii U mode.)

As long as it's accurate, news is news and news is cool

EDIT : just wanted to make that clear ... but interesting news nonetheless.
 

Bobbybangin

Well-Known Member
Member
Joined
Aug 9, 2010
Messages
225
Trophies
0
XP
351
Country
United States
I see no problem with sharing. The only problem is when everyone assumes that this means "YAY, next step, Wii U exploit and backup loaders!!!" (which is far from the truth. This is fun and interesting stuff, yes, but not needed or particularly useful in the process of running homebrew in Wii U mode.)

As long as it's accurate, news is news and news is cool

HRESET is the next step and it's currently a work in progress. We're getting there.
 

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,979
Trophies
2
XP
2,565
Country
Chile
Took me a while to understand what it did..

hmm.. on line 11,22 integers (negative) are doubled because 64 bit memory addresses?

Good job so far
 

edwardbirkholz05

Well-Known Member
Newcomer
Joined
Nov 23, 2011
Messages
77
Trophies
0
XP
119
Country
United States
Took me a while to understand what it did..

hmm.. on line 11,22 integers (negative) are doubled because 64 bit memory addresses?

Good job so far
No it's just wrong. SP should only ever be adjusted by a multiple of 8 (largest native datatype, double = 8 bytes), this code would never work because it adjusts SP down by 4 and then adjusts it back up by 8 at the end of the function (Hint: this isn't disassembled bootrom code, it's just a crappy example of "obfuscation" that doesn't exist.)
LR is also meant to be stored at SP+4 e.g. SP[1], not *SP.
 
  • Like
Reactions: Ray Lewis

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,979
Trophies
2
XP
2,565
Country
Chile
No it's just wrong. SP should only ever be adjusted by a multiple of 8 (largest native datatype, double = 8 bytes), this code would never work because it adjusts SP down by 4 and then adjusts it back up by 8 at the end of the function (Hint: this isn't disassembled bootrom code, it's just a crappy example of "obfuscation" that doesn't exist.)
LR is also meant to be stored at SP+4 e.g. SP[1], not *SP.


Yes I knew about SP being a Special purpose register indexed, which could be accesed only as some argument coming from opcodes such MFSPR or MTSPR. And .. I've seen other disassembled code that deals with negative integers (to reserve area, or loop back, re-use etc), but not on PPC.

But the idea is there, I guess.
 

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,979
Trophies
2
XP
2,565
Country
Chile
Well, can someone guess what those "fixed" values are ?
DSIR4LO.png


0x00003fb8: twi compares r21 contents with 18446744073709527839 (signed-extended ) , then & (and) performs a logical compare from 5 arguments given (29 seems wrong!). If it is not zero it will cause a program interrupt (could be breakpoint, or an event that halts or interfere with the current code running in PC, with an abnormal return to LR)

As for such big value, it doesn't fit the calculator I use, so i'll wildly guess it's an external IC with SEVERAL bits masked externally.

Same for twi 15,r19,26086.

Keep in mind this is the same as swi (when usermode code tries to reach kernel,only access area), except it's triggered externally by the value fed

http://publib.boulder.ibm.com/infoc...ic=/com.ibm.aix.aixassem/doc/alangref/twi.htm

They don't mean anything because you've disassembled data as code.
Why are you so sure? Because extracted offsets overlaps with different instructions? (this should not happen if code would've been disassembled correctly . )
 
  • Like
Reactions: Ray Lewis

Maxternal

Peanut Gallery Spokesman
Member
Joined
Nov 15, 2011
Messages
5,210
Trophies
0
Age
40
Location
Deep in GBAtemp addiction
Website
gbadev.googlecode.com
XP
1,709
Country
0x00003fb8: twi compares r21 contents with 18446744073709527839
...
As for such big value, it doesn't fit the calculator I use, so i'll wildly guess it's an external IC with SEVERAL bits masked externally.
that fits fine into windows calc :P ... and when I use it to convert it to hex I get 0xFFFFFFFFFFFFA31F but considering that Wii U is 32bit it's probably just a sign extended 0xFFFFA31F or ~0x5CE0
(that doesn't mean I've really looked at the rest of it to figure out what that really means in context, though)

EDIT : also, looking just above and below that at all those .byte's I'd say this is just random data that HAPPENS to line up with a legit machine instruction.
EDIT2 : looks like edwardbirkholz05 already got that concept, though. I'm a little slow sometimes.
 
  • Like
Reactions: Ray Lewis

edwardbirkholz05

Well-Known Member
Newcomer
Joined
Nov 23, 2011
Messages
77
Trophies
0
XP
119
Country
United States
Why are you so sure? Because extracted offsets overlaps with different instructions? (this should not happen if code would've been disassembled correctly . )
Because the instructions make no sense, the program exception vector is stubbed and the "opcodes" surrounding these are invalid. Your description of twi was also wrong, the first value does not specify a register but a set of flags for the type of compare operation (greater than, less than etc) and swi is an ARM instruction, not PPC.
 

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,979
Trophies
2
XP
2,565
Country
Chile
Because the instructions make no sense, the program exception vector is stubbed and the "opcodes" surrounding these are invalid. Your description of twi was also wrong, the first value does not specify a register but a set of flags for the type of compare operation (greater than, less than etc) and swi is an ARM instruction, not PPC.


Whatever, I used swi as an example, ARM and PPC at the same time can get confusing (do note i've never said SWI was for PPC anyway...), or you got it all at first? :D .

And yes, I made that mistake on the first argument (TO), thanks.

that fits fine into windows calc :P ... and when I use it to convert it to hex I get 0xFFFFFFFFFFFFA31F but considering that Wii U is 32bit it's probably just a sign extended 0xFFFFA31F or ~0x5CE0
(that doesn't mean I've really looked at the rest of it to figure out what that really means in context, though)
Ya, I tried typing them as decimal and it didn't fit. The last digit didn't make it
 
  • Like
Reactions: Ray Lewis

Bug_Checker_

Well-Known Member
Member
Joined
Jun 10, 2006
Messages
950
Trophies
0
XP
664
Country
United States
If legit, It appears the dumper has been released into the wild a few hours ago.

Wii-U bootrom/boot0.bin dumper - Pastebin.com
pastebin.com/Zv6PDZiS

There should be no copyright code violations but Mods feel free to edit if inappropriate.

I'm an idiot (sometimes) totally missed
http://gbatemp.net/threads/vwii-sneek.360615/page-9#post-4936803
Sorry Maxternal
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://youtu.be/3eGAHfC5P-Y?si=Fo3iEl1pZ4D_O6dp