Help with encrypting plugins

Resonance

Veteran
Veteran
Joined
Oct 25, 2015
Messages
43
Reaction score
6
First Language
English
I'm just about ready to distribute my game, but I just noticed RM doesn't do anything to its js files.
People can literally just modify the game however they want in a "deployed" version of a game by modifying those files..

I've been browsing around the past forum post and have seen lots of things suggested, and "yeah, encrypting it sure sounds neat".
I'm pretty familiar with scripting in RM, since it's all very high-level stuff, but I have no idea how to get started with doing anything beyond that.

1. Like I've seen this post with several encryption options for JS?
2. Also, there seems to be a convenient way for nwjs to use compiled code using its own nwjc.
3. Or I could.. convert it all to hex, then convert it back during runtime?
4. The most accessible solution seems to be a program in a SRD video.

1. There are lots that say they're simple/easy/fast, but I have no clue how to use any of these, because they seem to require... something I don't know what to do with. "nwm install" stuff. It just gets worse when there's some global and path setting stuff.
2. This seems like this would be the most proper solution, and I'd really like to learn how to make use of it! But I was trying to go through the steps, but quickly ran into a roadblock.
I thought all I would've had to do was make a .bat that contained "nwjc fullpathtosource.js fullpathtooutput.bin", then double click it and have .bin files that I'd have to then get nwjs to read from.. but it didn't seem to run nwjc.exe at all?
I can run programs with "start "" whatever.exe", but adding the 'start ""' at the beginning didn't seem to force nwjc to be executed either.
I think I need to do a similar "nwm install" thing, and that just gets into some console/terminal stuff with sudo permission, whatever. Reminds me of compiling stuff with Linux terminals in school that everyone else somehow already knew how to do? Never learned about it, since I always got other people to do that boring stuff for me while I helped with the higher-level concepts.. (looks like it's biting me now)

3. I don't understand how I'd even do the conversion. Like my understanding would be like "Before RM attempts to run anything, decrypt everything using the correct key". Well.. did that really even help, when the user can just see that key being used for the decryption? They'd just use that and decrypt it themselves. I'm not even really sure when this should be taking place. The underlying nwjs, nodejs, (and to an extent) pixijs connections and building blocks up to RM's codebase is just a complete mystery to me.

4. This unfortunately looks like the only option that's actually accessible to me as of now. I'd really hope to not fall to this, though, because I'm already wary of MV's performance on rigs other than my own gaming one. It's already silly enough that regular deployed versions of RMMV are subject to performance issues.

Send help!
 
Joined
Sep 1, 2017
Messages
105
Reaction score
52
First Language
English
Primarily Uses
RMMV
So you want to encrypt the JS files so that no one else can use or distribute them?

You can try passwording the file the contains the JS plugins so the only way they can access them is if they know your password.

As for the encryption, yeah you would need to provide the key for it in the folder other MV wouldn't be able to decode it, unless you make the key random each time and only available online but the thing about encryption is it would require more CPU power.

Honestly, I'd put a password lock on the folder that contains the JS files as this would prevent people who have no com skills getting the codes as other people who would be able to break the encryption would only do so if your code is of value to them.
 

Resonance

Veteran
Veteran
Joined
Oct 25, 2015
Messages
43
Reaction score
6
First Language
English
It's just ridiculous to leave exposed js code like that. Anyone could just throw in a little line of code, $gameParty.gainGold(999999), and they've "hacked" the game. Wowzers.
 

Dankovsky

Veteran
Veteran
Joined
Nov 26, 2017
Messages
200
Reaction score
151
First Language
RU
Primarily Uses
RMMV
It's just ridiculous to leave exposed js code like that. Anyone could just throw in a little line of code, $gameParty.gainGold(999999), and they've "hacked" the game. Wowzers.
Well, that's the thing about single player games, people can basically do anything they want in them and there's not much a dev can do about it except maybe making it a little harder. It's something you mostly just have to accept and get over.
The links in your post are actually the correct solution to this, I think the basic easy idea is wrapping up your game into Enigma (single executable file), the more advanced one is using hashes (I think SRD actually had a tutorial video on it?)
Against a more experienced and determined 'hacker' it would just make him spend extra 5-30 minutes decompiling and modifying your game.
 

Resonance

Veteran
Veteran
Joined
Oct 25, 2015
Messages
43
Reaction score
6
First Language
English
Of course. I'd just like it to be a little bit harder than two seconds of opening up notepad, you know?
 
Joined
Sep 1, 2017
Messages
105
Reaction score
52
First Language
English
Primarily Uses
RMMV
It's just ridiculous to leave exposed js code like that. Anyone could just throw in a little line of code, $gameParty.gainGold(999999), and they've "hacked" the game. Wowzers.

I wouldn't call that hacking :p I also don't see the point of doing this or giving your self this type of advantage as it defeats the point of playing the game. I wouldn't worry about it too much as it's not harming you or them.
 

Jonforum

Veteran
Veteran
Joined
Mar 28, 2016
Messages
1,623
Reaction score
1,439
First Language
French
Primarily Uses
RMMV
it exists some minify's tools that replace variables names.
It a good way to make no sence variable name ang get more hard to hack or cheat in your game.

the best way , at the END. (ready to publish)
1: Its make a single JS and JSON file of all your codes a and cores.
2: use a minifier and compressor with will replace all variables and comments by randoms algoritmes. (test need for avoid break code)
3: use and make your own encryption and decriptor when loading phase.
4: replace some files extentions , and make somes bad files names.
5: create some random fake dll and js and hacker trap, for they lost here times. ex: var serial || or var dunovo; Make deep path to stupid variable name.
6: make move all to avoid a tracking structure.
7: to avoid memory hack , complicate your codes by calls scypting and encoded functions. What get less performance but offers more protection.

you can add more than 100 .dll or fake js files and this will only have 1 mo space drive.
the idea is to **** a real mess to prevent hackers from understanding how ytou dev your code.
 
Last edited:

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

so hopefully tomorrow i get to go home from the hospital i've been here for 5 days already and it's driving me mad. I miss my family like crazy but at least I get to use my own toiletries and my own clothes. My mom is coming to visit soon i can't wait to see her cause i miss her the most. :kaojoy:
Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD

Forum statistics

Threads
105,868
Messages
1,017,072
Members
137,578
Latest member
JamesLightning
Top