Deobfuscating World of Warships' Python Scripts
landaire.net
landaire.net
* These are each game lines with three entries each
There is also the Polaris Sector.
Which would explain things like teleport not working, but what about things like aimbots, wallhacks, etc? Those are all client side.
SOME_VALUE = {value: key for (key, value) in Foo.__dict__.iteritems() }
Which at a bytecode level expands to something like: def <dictcomp>(input):
result = {}
for (key, value) in input:
result[value] = key
return result
SOME_VALUE = <dictcomp>(Foo.__dict__.iteritems())
The name `<dictcomp>` is intentional here. Decompilers (or at least uncompyle) relies on the function name to figure out what composition syntax the function is for (or a lambda, or generator). The python compiler emits `<dictcom>`, `<setcomp>`, `<listcomp>`, `<genexpr>`, and `<lambda>` depending on the type of function. The obfuscator renamed this function of course and causes the decompiler choke on a whole file if this appears at a module level.The game developers also reached out to me and others after seeing this post appear on the /r/WorldofWarships subreddit. They want to understand why we would need to introspect these files for mod creation or data mining.
I already explained some of this in the post, but at a mod level the API docs are _really_ bad and actually no longer exist since the developers migrated away from a standard forum to Discord for all comms and killed the forum. For ModAPIv2 which is heavily restricted to pre-approved mod developers there are no docs at all!
Additionally, they rely on a community-created tool for rendering replays to an MP4 for their tournament match recaps: https://github.com/WoWs-Builder-Team/minimap_renderer. The replay format is entirely undocumented and relies on data mined from this tool and other resources for parsing some data structures.
There are a _ton_ of community-developed resources that have only been made possible through reverse engineering of some shape that are critical for understanding the game. I do appreciate them reaching out for hopefully a positive dialog.
A better question is why wouldn't you want to inspect those files; reading more code isn't going to make you worse at coding.
submitted 6 years ago This is the quote from Yalu's website. ( https://yalu.qwertyoruiop.com/ )
"my patches and additions on top of Ian's code are licensed under the ABSE ("Anyone But Stefan Esser") license. note that an additional exception to the license is added, forbidding use/redistribution of said content to his trainees as well, but only when in a 5 mile radius from "Stefan Esser" or while holding any sort of (video)conference/chat with him."