falkirks / spoondetector

Detect all the SPOONS!
The Unlicense
14 stars 7 forks source link

Urghh #3

Open HimbeersaftLP opened 7 years ago

HimbeersaftLP commented 7 years ago

https://github.com/GenisysPro/GenisysPro/pull/821

SOF3 commented 7 years ago

If anyone finds it necessary, I will add an option in the virion framework to obfuscate the library class names.

Thunder33345 commented 7 years ago

down this horrible rabbit hole we go i guess :man_facepalming: is there any like better way(s) to ensure it's PMMP? think like using getupdater in server often breaks in specter if it's not PMMP

ghost commented 7 years ago

genisyspro is cancer you guys are reading this don't you genisys is a spoon just admit it

ghost commented 7 years ago

also don't let them read this

HimbeersaftLP commented 7 years ago

If anyone finds it necessary, I will add an option in the virion framework to obfuscate the library class names

Yeah, also had a similar idea

Thunder33345 commented 7 years ago
      $temp_file = tempnam(sys_get_temp_dir(),'');
      $class = 'return new class
      {
        public function getServerName(Server $server) { return $server->getName(); }
      };';
      file_put_contents($temp_file,$class);
      $class = include_once $temp_file;
      $name = $class->getServerName(Server::getInstance());

seen My Fork of SpoonDetector might or might not be a good idea, the classname still vulnerable

worst case is to ask plugin to provide server's name

SOF3 commented 7 years ago

@dktapps suggested verifying the signature of the server.

dktapps commented 7 years ago

That would require us to actually sign production phars of course, and it would also mean that source-code installations would be problematic.

falkirks commented 7 years ago

I will release a fix when I get a chance.

Thunder33345 commented 7 years ago

The most easy way it to ask the plugin to pass the server name fool proof since the caller will be the plugin and WITHOUT a hacky mess of dealing with obfuscation tactics like if you want bypass, just give the servername or else it would do the normal Server::getName() by getting instance Like try not to waste too much effort on spoons

SOF3 commented 7 years ago

Then you are forcing them to return PocketMine-MP.

First of all, what's the purpose of the Server::getName() method?

dktapps commented 7 years ago

In all honesty this project is a waste of time (no offence intended). My stance is: if my code works on your server, good for you - if it doesn't, gtfo my issue tracker, close & lock.

SOF3 commented 7 years ago

@DerddyDert @CortexPE I would like to clarify that SpoonDetector is not intend to stop people from using spoons. It is simply a stronger reminder that the plugin doesn't officially support using spoons. If you read the words printed by SpoonDetector, it even provides a non hacky way to load the plugin in spoon servers. SpoonDetector is purely something like a license agreement and does not comprise any hatred against spoon servers. You are killing the purpose of the Server::getName() by doing that.

falkirks commented 7 years ago

@SOF3 My thinking is Spoon maintainers are too vain to ever change getName to return PocketMine. If they do, I will do analysis on other changes they have made to files.

Thunder33345 commented 7 years ago

maybe just force it on everyone? ultimately we soon enough will realize it's just lost of productivity for both sides because there's no good ways to know so we might as well just make a new addon called agreement, which forces you to say "agree" after the ? in a text file for the plugin to even run/function

i also have asked derddy to make that bypass a "OFF" by default option

like originally this thing was made to stop people using 3rd spoons flooding into the issues section which ware dedicated to pmmp, OR trying prevent trying to help someone for few good hour only to notice they are not using PMMP to begin with

falkirks commented 7 years ago

I came up with what I think is a pretty good solution for now and is hard to circumvent. I haven't tested it yet, but the basic idea is there. I am keeping everything in one class for ease of installation. See 59e46b6053e0ade70a7115adae35e637c0f56a8f