Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (491)
Games in Android Showcase (112)
games submitted by our members
Games in WIP (556)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Open Sourcr Obfuscators  (Read 2496 times)
0 Members and 1 Guest are viewing this topic.
Offline Jeff

JGO Coder




Got any cats?


« Posted 2006-11-03 20:02:46 »

Hey Guys,

Seems like there are quite a few.  Any particualr recommendations or cautions?  Im looking at Open source becaus e im playing with the dies of building some kind of tool chain that would both licesne protect and obfuscate in one step...


Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline kappa
« League of Dukes »

JGO Kernel


Medals: 77
Projects: 15


★★★★★


« Reply #1 - Posted 2006-11-03 20:31:07 »

ProGuard's my fav!
Offline PeterB

Junior Member





« Reply #2 - Posted 2006-11-03 21:59:39 »

Yep, Proguard gets my vote as an ok open source obfuscator. 5/10 for optimisation though - it can't cope optimising what the FAQ calls 'complex methods'... keeps throwing stack overflow exceptions. I use Joga for optimisation instead.

Edit: a friend of mine has his own company, selling software he has written in java and after doing some extensive tests he absolutely swears by Zelix Klassmaster but it's not open source, and costs $299

Vault101 / Mace The Game
There are 10 kinds of people in the world. Those who understand binary and those who don't.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline oNyx

JGO Coder


Medals: 2


pixels! :x


« Reply #3 - Posted 2006-11-03 22:12:38 »

http://jarg.sf.net (albeit a bit dated, its rather neat)

The "problem" with obfuscators is that they can generate code, which cannot be written in java, but is valid accordingly to the jvm specs. So it may not work on all vms equally well.

For example if you decompile jarg/joga-ed classes you might get stuff like:

for(int super=0;super<5;super++)
or
int this=5;

And other stuff which totally doesnt make any sense Smiley

弾幕 ☆ @mahonnaiseblog
Offline OverKill

Junior Member




Java games rock!


« Reply #4 - Posted 2006-11-06 09:25:13 »

ProGuard is nice, downside is if you need it for a mobile (which wants to preverify classes) you have to create a temp package, obfuscate, then unpack again.

I have also used Jode and it is nice as well. IIRC it also had a funny feature where it obfuscated by keeping the method names but rearranging them.
Kinda evil if you think about it.
Offline c_lilian

Senior Member


Projects: 1


Java games will probably rock someday...


« Reply #5 - Posted 2006-11-06 09:43:52 »

I use yGuard, which comes with an Ant task, and is rather easy to use, yet powerful

Lilian Smiley

Offline blahblahblahh

JGO Coder


Medals: 1


http://t-machine.org


« Reply #6 - Posted 2006-11-06 11:23:15 »

IIRC it also had a funny feature where it obfuscated by keeping the method names but rearranging them.
Kinda evil if you think about it.

Basic assumptions I make when decompiling someone's code:

1. You don't want me to see it, so you won't have put effort into making them make sense. Even colleagues struggle to come up with method and variable names that are as clear as one wants Wink, so I'm assuming that yours are not much use to me.

2. If you thought you were gaining anything by obfuscating it, I'm assuming you're the kind of person who puts even less effort into intelligent names Tongue. Maybe you were just going for classfile compression, but probably not.

So, my toolchain is setup to delete all the method and variable names as the first step automatically, giving them logical inferred names instead (which IMHO are easier to keep track of during the refactoring process). To be honest, if I'm decompiling something where I expect the names to be good I usually just javap it instead (it's usually to salvage a lost interface or rewrite a class from scratch/earlier version but with same names).

I think you'll find that's pretty common. shift-alt-t is the decompilers best friend Wink

malloc will be first against the wall when the revolution comes...
Offline Abuse

JGO Knight


Medals: 12


falling into the abyss of reality


« Reply #7 - Posted 2006-11-06 13:16:21 »

I am perplexed as to why there are so many different obfuscators for Java - with most performing the exact same set of optimisations.
Why are so many people determined to re-invent the wheel?!....

An existing [L]GPL project needs to be adopted as the defacto standard, with an extensible plugin framework, and preferably based upon the ASM API (superior scalability to BCEL).
Hopefully such a project would then become the focal point of all bytecode optimisation development, and would eliminate all this duplication of effort that currently exists.

Proguard might be a suitable base-project; it already has a plugin framework, and is GPL.
The only problem with proguard, is its core design is not ideal, and would need refactoring onto the ASM API.

Make Elite IV:Dangerous happen! Pledge your backing at KICKSTARTER here! https://dl.dropbox.com/u/54785909/EliteIVsmaller.png
Offline OverKill

Junior Member




Java games rock!


« Reply #8 - Posted 2006-11-06 16:10:28 »

IIRC it also had a funny feature where it obfuscated by keeping the method names but rearranging them.
Kinda evil if you think about it.

Basic assumptions I make when decompiling someone's code:

1. You don't want me to see it, so you won't have put effort into making them make sense. Even colleagues struggle to come up with method and variable names that are as clear as one wants Wink, so I'm assuming that yours are not much use to me.

2. If you thought you were gaining anything by obfuscating it, I'm assuming you're the kind of person who puts even less effort into intelligent names Tongue. Maybe you were just going for classfile compression, but probably not.

So, my toolchain is setup to delete all the method and variable names as the first step automatically, giving them logical inferred names instead (which IMHO are easier to keep track of during the refactoring process). To be honest, if I'm decompiling something where I expect the names to be good I usually just javap it instead (it's usually to salvage a lost interface or rewrite a class from scratch/earlier version but with same names).

I think you'll find that's pretty common. shift-alt-t is the decompilers best friend Wink
What boat did you get off from?
You do not know me, how I code or anything else about me yet you think you can judge me because I use an obfuscator?

Here are some clues:

One benefit of obfuscating is to make your code unreadable to others. Not really a blocker to anyone willing to read your code but every bit counts.
This does NOT mean my naming is poor or anything like that. I have no idea where you get off presuming that crap.

Second, obfuscation removes dead code.
Should not happen but in some circumstances, it is not really that bad.
Expecially in my area, it can help a lot.

Third, it reduces class size. By a lot.
Always good but in my line of buisiness, the mobile area, VERY important.
I have seen 50% size reduction and basically speaking, it can mean getting your app on a phone or not.

Talk about arrogant and presumptuous.
Offline blahblahblahh

JGO Coder


Medals: 1


http://t-machine.org


« Reply #9 - Posted 2006-11-06 16:21:14 »

IIRC it also had a funny feature where it obfuscated by keeping the method names but rearranging them.
Kinda evil if you think about it.

Basic assumptions I make when decompiling someone's code:
...I think you'll find that's pretty common. shift-alt-t is the decompilers best friend Wink
What boat did you get off from?
You do not know me, how I code or anything else about me yet you think you can judge me because I use an obfuscator?

I wasn't referring to you in particular, I was referring to the many people whose obfuscated code I've decompiled. It's a gross generalization, but so far seems pretty accurate. Some of the comments were also tongue-in-cheek - many people fail to use good method names *even when they're trying to*.

Quote
Here are some clues:

One benefit of obfuscating is to make your code unreadable to others. Not really a blocker to anyone willing to read your code but every bit counts.
This does NOT mean my naming is poor or anything like that. I have no idea where you get off presuming that crap.

It doesn't make your code unreadable to others. In most cases, it makes the code no worse than any badly written code (e.g. I've seen real source code where variables are named "one", "two", "three", and "red", "orange", "yelllow" when those words have nothing to do with the actual algroithm or program, as well as "myvariable1", "myvariable2", etc).

Quote
Second, obfuscation removes dead code.
...
Third, it reduces class size. By a lot.
Always good but in my line of buisiness, the mobile area, VERY important.
I have seen 50% size reduction and basically speaking, it can mean getting your app on a phone or not.

I *specifically* excepted classfile compression - and mobile dev was the main use case at the top of my head when I wrote that.

Quote
Talk about arrogant and presumptuous.

If you like Smiley. Feel free to PM me any amount of arrogant and presumptuous comments Tongue. HAND!

malloc will be first against the wall when the revolution comes...
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Nickropheliac (15 views)
2014-08-31 22:59:12

TehJavaDev (23 views)
2014-08-28 18:26:30

CopyableCougar4 (29 views)
2014-08-22 19:31:30

atombrot (41 views)
2014-08-19 09:29:53

Tekkerue (38 views)
2014-08-16 06:45:27

Tekkerue (35 views)
2014-08-16 06:22:17

Tekkerue (25 views)
2014-08-16 06:20:21

Tekkerue (34 views)
2014-08-16 06:12:11

Rayexar (72 views)
2014-08-11 02:49:23

BurntPizza (48 views)
2014-08-09 21:09:32
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!