This is a Request for Information, a Brainstorm, an Informative Analysis of hack prevention useful to mission makers:
When coding an Arma mission, should we think about where we store game data in order to reduce hacking?
For example, your players have an attribute called "Money". You could:
1. Have a Money variable on the client only
2. Have a Money variable server that keeps track of all clients' money. Then when the player earns/transfers/uses money, his client must get or set the Money variable on the server.
Assume the hacker client has a "console" where they can run any scripting command. So, they can change any local variable, but can't directly change anything on another client or server. They can also publish Public Variables with any value. If the mission is designed in such a way that allows the clients to set data on other computers or the sever, then the hacker could alter other people's games. So, a good practice would be to only allow clients to run a limited number of scripts, or change a limited number of Public Variables. IOW, have a subset of your scripts that are only used for network communication. "PV functions".
Then as a mission designer, your could more easily monitor the communication and potentially detect cheating.
For Example: The hacker could run the script that deposits money in his Bank. The server keeps track of the players cash on hand, and the bank balance. So, if the player sends a command that deposits more money then he has on hand, you have detected a hacker.
Now, the createVehicle or setVehicleInit commands are able to bypass any such checks, so the whole idea of trying to stop hackers at all is pointless.
Unless, the Init eventhandler is executed before any type of object executes it's initline. Then the server could just monitor spawned vehicles checking for anomalies. It says it only fires on createVehicle, so we're probably SOL.
Now, assuming we could guarantee the clients can't improperly alter data on other computers. They could still run local commands that had global affect. Like, setPos, setVelocity, setDammage on any unit or object.
Well, after thinking about it, it seems hopeless to have a scripting defense from hackers.
Is there anything we can do to prevent or detect hackers?
HOME
Reply With Quote




MadDogX
e-mail
RSS
Twitter


