Fernflower decompiler

it works well enough, but for a decompiler that claims to be targeted specifically to work on obfuscated code, it leaves a lot to be desired

its main flaw that i have found so far is that when it renames, it also renames special things, like and , and seemingly misrenames some things. it also fails at properly emitting constructors

im having a go at fixing it up, but something is broken somewhere from decompiling it with itself

it also handles dup weirdly, valid, but weird

frank_ why do you even bother? we will finally put our great decompiler ideas into code and get $$$ for it from mopar project fund

[quote=“frank_, post:21, topic:367323”]it works well enough, but for a decompiler that claims to be targeted specifically to work on obfuscated code, it leaves a lot to be desired

its main flaw that i have found so far is that when it renames, it also renames special things, like and , and seemingly misrenames some things. it also fails at properly emitting constructors

im having a go at fixing it up, but something is broken somewhere from decompiling it with itself

it also handles dup weirdly, valid, but weird[/quote]
by the time frank_ writes a retort to this comment he will have already deleted the project.

truths

im not going to delete it, but im probably not going to touch it again until someone else gives a damn

I give a damn.

dont lie to me

I have a copy, checked my email today and there it was. Here you go. FernFlower 0.86 Standalone.

Email said share with people, but just dont go too public with it. I dont think this is taking it too far. Its fucking dead here.

cheers, he never replied to any of our emails

heres hoping its better than the other version i was able to obtain

Makes me wonder what exactly Teh Freak said to him to get this… :slight_smile:

edit:
It works, but it is very very slow, uses 100% of the CPU quite a bit and a lot of RAM. That isn’t necessarily a bad thing though, if it does it’s job right. I’m attaching to this post the decompiled version without renamed variables, and one with once it finishes. To be able to recompile it I need to find all the jars runescape links to now (directx, opengl, netscape), does anyone have links to them or something?

There also seems to be some other various errors during recompiling, but until I get those other jars, I’m not sure how serious they are or even if the other jars can help fix them.

This functionality looks great:

[code]5. Renaming identifiers

Some obfuscators give classes and their member elements short, meaningless and above all ambiguous names. Recompiling of such
code leads to a great number of conflicts. Therefore it is advisable to let the decompiler rename elements in its turn,
ensuring uniqueness of each identifier.

Option ‘ren’ (i.e. -ren=1) activates renaming functionality. Default renaming strategy goes as follows:

  • rename an element if its name is a reserved word or is shorter than 3 characters
  • new names are built according to a simple pattern: (class|method|field)_
    You can overwrite this rules by providing your own implementation of the 4 key methods invoked by the decompiler while renaming. Simply
    pass a class that implements de.fernflower.main.extern.IIdentifierRenamer in the option ‘urc’ (e.g. -urc=com.mypackage.MyRenamer) to
    Fernflower. The class must be available on the application classpath.

The meaning of each method should be clear from naming: toBeRenamed determine whether the element will be renamed, while the other three
provide new names for classes, methods and fields respectively. [/code]
Because it would be easy to write a class that renames the client based on an updater’s output, not so much for use in cheating as for making it easier and more comfortable to examine the client source code.

this is good news.

is this the same version frank_ already found?

no, but i havent looked at all to see the difference

probably none… our best bet is either one or more of the us creating a decompiler

because we have the coordination and lack-of-laziness for that will work. /rm -rf

i prefer to think of it as lack of intelligence