Ultimate Value Weirdness

Started by Bully@Wiiplaza, December 28, 2012, 02:31:02 PM

Previous topic - Next topic

Bully@Wiiplaza

The one who figures which on-screen value this represents deserves a medal :)

000000E2 BFA19949

Tip:
The value is 32bit. The first and second 8 byte are involved...

Have fun ;)
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

Deathwolf

That must be a float value. Not sure, but I've one in my mind  :eek:
lolz

megazig

the second 32bits does look like a float. -1.2624

Bully@Wiiplaza

#3
Nope, no float.

The value starts at the "E" and not at the "B". Otherwise there wouldn´t be need to post the first 8 bytes.

Like the title says it´s not that easy, hehehe. It isn´t something crazy I came up with, it´s how some game handles it.
More luck next time. :p
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

Bully@Wiiplaza

Come on, people! Guess, imagination!

Another hint? :eek:
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

megazig

only if the hint is code. otherwise it's just guessing what a random hex value is
this is why I left the thread/guessing alone

Bully@Wiiplaza

#6
Here´s the hint:

------8- 674523-1

Note the numbers and how they are arranged.
They symbolize something you will need to know.
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

XeR


Bully@Wiiplaza

#8
I´m affraid, that´s also wrong.

Be sure to use the last hint, otherwise you won´t make it...
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

megazig

that indicates little endian. but without code this is still stupid to just guess

Bully@Wiiplaza

#10
Quote from: megazig on January 01, 2013, 08:23:10 PM
that indicates little endian. but without code this is still stupid to just guess
No little endian. Which code you want? This is a value interpretation some game uses, obviously it will be some guessing. You should use the last tip which is about the most and least significant bit(s)... :smileyface:
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

XeR

Quote from: Bully@Wiiplaza on January 01, 2013, 08:25:05 PM
Quote from: megazig on January 01, 2013, 08:23:10 PM
that indicates little endian. but without code this is still stupid to just guess
No little endian. Which code you want? This is a value interpretation some game uses, obviously it will be some guessing. You should use the last tip which is about the most and least significant bit(s)... :smileyface:
Breakpoint read -> Reverse the code.
I hope you didn't guess it...

megazig

the tip about msb is what makes it little endian

Bully@Wiiplaza

#13
:o

Nobody made it still (not even close), so I just post the solution:

The "-" means that this spot doesn´t matter for the result. The numbers tell what has to be put where.
The value gets interpreted as signed, that´s why the result at 2) is correct. I do think this was solvable with given hints though. ???

Note that I figured myself how this is done by doing some tests in the game.
Truely weird. Anyone who knows what it´s about after all? "Normal" little endian goes differently.
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

megazig

#14
again, still just random numbers and little endian with bitfields on a big endian machine would have the same ugly format

EDIT:
#include <stdio.h>
#include <stdlib.h>

void hexdump(void* buffer, int len)
{
   unsigned char* buf = (unsigned char*)buffer;
   int ii = 0;
   for (ii = 0; ii < len; ii++)
   {
      printf("%02x", buf[ii]);
   }
   printf("\n");
}

typedef unsigned long long u64;
typedef unsigned long u32;
union l
{
   u64 val;
   struct foo {
      unsigned top: 4;
      unsigned middle: 32;
      unsigned bottom: 28;
   } bar;;

} value;

int main(int argc, char ** argv)
{
   value.bar.top = 0;
   value.bar.middle = 0x12345678;
   value.bar.bottom = 0;
   value.val >>= 4;
   hexdump(&value, 8);
   return EXIT_SUCCESS;
}

run on a PC (little endian (x86)) and you'll see the values

0000008067452301
http://codepad.org/WOI0V192

SO... please don't say not even close. I had it spot on, you just don't know memory format