belong to us

Discussion of challenges you have already solved
Post Reply
MagneticMonopole
Posts: 26
Joined: Fri Nov 07, 2008 3:19 pm

belong to us

Post by MagneticMonopole »

My solution:

Code: Select all

8c8c67*C1c67*1+C528**C8c9c67*C4c67*1+C528**C8c9c67*C4c67*1+C528**C8c4c67*C528**C
9c9c67*C8c67*1+C528**C9c8c67*C7c67*1+C528**C9c9c67*C4c67*1+C528**C9c9c67*C1c67*1+C528**C
8c4c67*C528**C8c8c67*C2c67*1+C528**C8c8c67*C1c67*1+C528**C9c9c67*C2c67*1+C528**C8c8c67*C
5c67*1+C528**C
Far from lightweight or elegant. I did not venture to decipher the symbols beyond "print number" and "print ascii".

Having the emulator run a second time over the output of the first round is either genius or madness. At the very least, I take the liberty to consider it ... unfriendly. :evil: :evil: :D

Btw, there was an obfuscator involved? I used both jad and jode, still getting rather unusual method names, which even a mere disassembler confirmed.[/code]
User avatar
adum
Posts: 392
Joined: Thu Apr 19, 2007 12:49 pm
Contact:

Post by adum »

yeah, i used my favorite obfuscator which really smacks java bytecode pretty hard.
michuber
Posts: 57
Joined: Sun Oct 26, 2008 3:30 pm

Post by michuber »

Finally I found http://www.reversed-java.com which decompiles much better than JD.
So finding the differences to HVM was much easier.
Unfortunately it fails on "Protected Password 4", by now :(
Icho
Posts: 6
Joined: Fri Oct 09, 2009 4:25 pm

Post by Icho »

The class file accepts the following String:

Code: Select all

88*5+258**C99*2+258**C88*1+258**C88*2+258**C84*258**C99*1+258**C99*4+258**C99*2-258**C99*8+258**C84*258**C89*4+258**C89*4+258**C88*1+258**C
The online checker doesn't. Is that intended or a bug?
nighthalk
Posts: 41
Joined: Fri Jul 31, 2009 8:22 pm

Post by nighthalk »

all this thing is is the HVM interpreter which on the first pass swaps +13/-13 a - m with n - z, and all the opcodes are interpereted with a -12 base. but thats just to obscuferate what it does. i did however notice batch files HATE the ^ key (which my first elegant attempt was, then i did the unclean 1 letter at a time approach
tails
Posts: 191
Joined: Tue Jun 10, 2008 7:51 pm
Location: Tokyo

Icho's code

Post by tails »

Aha, that seems to be a bug :-)

The Java class doesn't clear the stack before the second run. The code set up the data on the stack in the first run, and uses them in the second run. How neat :-) Maybe the online checker doesn't allow this?
swgr
Posts: 7
Joined: Tue Sep 08, 2009 1:56 pm

Post by swgr »

Very interesting challenge.

At first I do some fixing work for the obscured decompile code to make it clearer. And then I suddenly realize ( actually, guess ) that a(String, String, boolean) is a HVM interpreter when I see the long ( and broken ) switch list. Luckily this is correct.

By the way, HVM code length limitation in this challenge is also sick.. >_<

Here is my solution:

Code: Select all

99*19*+4+89*8+49*7+49*6+7c9c0^C2c1^C2^C8c9c0^C4c1^C0c3^C2^C2^C4c8c0^C0c3^C2^C9c9c0^C8c1^C2^C8c9c0^C7c1^C2^C9c9c0^C4c1^C2^C9c9c0^C1c1^C2^C2^C7c9c0^C3c1^C2^C7c9c0^C2c1^C2^C9c9c0^C2c1^C2^C7c9c0^C6c1^C2^C
User avatar
MatRush
Posts: 33
Joined: Fri May 13, 2011 1:26 pm
Location: China
Contact:

Post by MatRush »

Byte code is abstruse...
Does there any good java-decompiler?
Redford
Posts: 41
Joined: Sat Jul 04, 2009 8:32 pm
Location: Poland
Contact:

Post by Redford »

There are only a few decompilers, the best is DJ Java Decomp, but it has ugly and strange gui, and it's commercial. And it's only decompiler, not deobfuscator. Also, I used JavaDeObfuscator, but it only can rename methods and fields, nothing more.
Does anyone knows what "Emyoolay" means?

Nice task, adum ;)
Image
User avatar
laz0r
Posts: 290
Joined: Thu Feb 04, 2010 4:18 pm
Location: Within the depths of Unix

Post by laz0r »

I think "Emyoolay" is a pun on "emulate", and possibly a slight hint towards the three-letter "HVM" - there might be a deeper meaning, though!
There is no spoon.
User avatar
Hippo
Posts: 339
Joined: Sat Feb 01, 2014 12:05 am
Location: Praha 5

Post by Hippo »

At first I tought the double HVM call is a wrongly decompiled code :( but using third decompiler shown the truth ;) jode did rather well.

I didn't notice the HVM does not clear stack so I used purely HVM solution. Requiring just two ROT13 swaps.
Post Reply