Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (513)
Games in Android Showcase (121)
games submitted by our members
Games in WIP (577)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: 1 [2]
  ignore  |  Print  
  Jagex kills reflection apparently  (Read 5376 times)
0 Members and 1 Guest are viewing this topic.
Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #30 - Posted 2011-10-29 04:18:49 »

A different thing, I've seen considered, is that they obfuscate the ID's of objects, interfaces, and items, that were used to recognize stuff for the bots. You know.. Mixing them all up, every update as part of the compilation.

Offline theagentd
« Reply #31 - Posted 2011-10-29 06:29:12 »

The question of how they killed Reflection still hangs in the air...  Yawn
It was answered in the first reply.
Oh, I missed that. Is that a freely available obfuscator or something they wrote themselves?

Myomyomyo.
Offline JL235

JGO Coder


Medals: 10



« Reply #32 - Posted 2011-10-29 11:58:21 »

Either way, it wouldn't be that difficult to build.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline pjt33
« Reply #33 - Posted 2011-10-29 15:02:44 »

Is that a freely available obfuscator or something they wrote themselves?
It's Jagex. Everything is in-house except javac. The obfuscator is a source-to-source compiler, which was harder to build than JL235 thinks - and if you think it would be easy, try reading the entire JLS.
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 818
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #34 - Posted 2011-10-29 15:05:36 »

Odd choice. You'd think this would be a rainy-afternoon task using bytecode transformation.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline kappa
« League of Dukes »

JGO Kernel


Medals: 78
Projects: 15


★★★★★


« Reply #35 - Posted 2011-10-29 16:10:34 »

Odd choice. You'd think this would be a rainy-afternoon task using bytecode transformation.
Indeed, or they could have just used an existing solution like ProGuard.
Offline Waterwolf

Junior Duke


Medals: 3



« Reply #36 - Posted 2011-10-29 16:24:13 »

Is that a freely available obfuscator or something they wrote themselves?
It's Jagex. Everything is in-house except javac. The obfuscator is a source-to-source compiler, which was harder to build than JL235 thinks - and if you think it would be easy, try reading the entire JLS.

That's strange because their string obfuscation is pretty much the same as Zelik klassmaster's. Also I really doubt it's source-to-source because most decompilers don't work with rs at all.

And kappa, proguard only obfuscates names and occasionally optimizes bytecode and that is very easy to bypass and make recompilable.
Offline pjt33
« Reply #37 - Posted 2011-10-29 23:16:59 »

Is that a freely available obfuscator or something they wrote themselves?
It's Jagex. Everything is in-house except javac. The obfuscator is a source-to-source compiler, which was harder to build than JL235 thinks - and if you think it would be easy, try reading the entire JLS.

That's strange because their string obfuscation is pretty much the same as Zelik klassmaster's. Also I really doubt it's source-to-source because most decompilers don't work with rs at all.

And kappa, proguard only obfuscates names and occasionally optimizes bytecode and that is very easy to bypass and make recompilable.
Well, maybe they've ditched the old source-to-source compiler entirely rather than updating it, but in 2006 I had a desk next to the guy who maintained it and I answered the odd question about the generics spec (as I was in the vanguard messing around with generics and giving feedback to Sun before 1.5 came out). Although now that you mention klassmaster that does ring a bell, so maybe there was slightly more NIH stuff than just javac.
Offline JL235

JGO Coder


Medals: 10



« Reply #38 - Posted 2011-10-29 23:33:36 »

Is that a freely available obfuscator or something they wrote themselves?
It's Jagex. Everything is in-house except javac. The obfuscator is a source-to-source compiler, which was harder to build than JL235 thinks - and if you think it would be easy, try reading the entire JLS.

Having built a couple of parsers (most of which were source to source translators), and done a fair amount of bytecode hacking, I just don't see how it could be that difficult.

If I were to build it...
  • I'd use javac to parse the source code into bytecode, and that's the source all validated (no need to even open the Java Language Spec)
  • Next parse the bytecode, and for this I'd try using JavaAssist, which allows you to edit compiled class files.
  • If JavaAssist didn't do what I needed, then I'd build a custom bytecode parser. Given that we are taking the bytecode straight from javac, we can presume it looks like a valid program, which makes this task 10 times easier.
  • Now it's parsed into your AST, apply your obfuscations (JavaAssist may even help with this, it's designed for editing Java code, but you could otherwise do it manually)
  • Next output the new source/bytecode; getting an AST to print this can take time (lots of nodes to write), but is very easy to build.
  • Finally you could have it re-parse the output to ensure it did output a valid program (as a sanity check). For this you could re-use javac, bytecode parsers or even spin up a JVM and manually load the classes.

Given that your just re-using existing technologies, the general structure including the parser/output stages could take maybe a week. It'll be the obfuscation stage which would take time, which could take an extra month or two (to do it right!).

Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #39 - Posted 2011-10-30 00:54:08 »

@Economy-discussers:
Runescape's economy functions after demand and supply, right.
Obviously, with botters, there was a too large supply, causing prices to drop. However, now without bots,
supply is even bigger, because theres no more bots to process materials  Cranky
Take mining for example; before, botters would smith. They needed to buy the materials.

Now, there's an overflow of materials, causing prices to drop even more dramatically on many resources.
Nobody wants to buy meterials though, because they're expected to raise in price.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline SwampChicken
« Reply #40 - Posted 2011-10-31 01:58:21 »

What a fascinating thread...
Is there a place where one could see some of the java code that does the 'botting'?
Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #41 - Posted 2011-11-02 01:11:02 »

What a fascinating thread...
Is there a place where one could see some of the java code that does the 'botting'?

https://github.com/powerbot/RSBot
RSBot is just one of the clients. It is also the most widely used, and it's open source.

Offline Nate

JGO Kernel


Medals: 150
Projects: 4
Exp: 14 years


Esoteric Software


« Reply #42 - Posted 2011-11-02 01:50:52 »

*apparently

Thread title kills me every time I see it. :p

Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #43 - Posted 2011-11-02 01:57:21 »

*apparently

Thread title kills me every time I see it. :p

Change shall be made! My apologies.

Offline ra4king

JGO Kernel


Medals: 352
Projects: 3
Exp: 5 years


I'm the King!


« Reply #44 - Posted 2011-11-02 02:28:53 »

reflection......appear-ently?

ROFLMAO Grin

Pages: 1 [2]
  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.

theagentd (19 views)
2014-10-25 15:46:29

Longarmx (52 views)
2014-10-17 03:59:02

Norakomi (46 views)
2014-10-16 15:22:06

Norakomi (34 views)
2014-10-16 15:20:20

lcass (39 views)
2014-10-15 16:18:58

TehJavaDev (68 views)
2014-10-14 00:39:48

TehJavaDev (68 views)
2014-10-14 00:35:47

TehJavaDev (60 views)
2014-10-14 00:32:37

BurntPizza (74 views)
2014-10-11 23:24:42

BurntPizza (45 views)
2014-10-11 23:10:45
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

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
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!