There is a cheat program called GameCIH, it’s like ArtMoney for Windows. Also there is a similar software GameKiller, GameSpector etc.
People told that game “Inotia 4” can know when cheat software installing on the device, and don’t running until user don’t uninstall this cheat software.
So, any chance to make it for Unity Android games? Or maybe Unity have this anticheat by default?
I will wonder, if this is possible only using Unity. But according to me, you have to communicate with android device this is possible only with AndroidJNI in unity.
What you need to do is:
Research get these packages name(i.e., com.abc.xyz) ,
Create a AndroidJNI call to get whether this package is installed or not.
So I should find as more as I can of these cheating programm, check his package names and make a list of prohibited software?
Can you say, what exactly function I need to check installed package or not? I’m look at this Unity - Scripting API: AndroidJNI but I’am absolutely no idea what I need
If you need just to protect variables to prevent ppl from editing coins, highscores, etc, my tool works on Android too. Right down there on my sign.
However if you really need to shot down the application, detecting if a cheater is running, on my tool that functionality is enabled only on Windows because of old version of Unity’s Mono library. You won’t be able to scan processes with the Mono Unity is using, it is buggy, but maybe you can do it using an Activitymanager and sending commands to Unity through a plugin.
Yes, I just need to protect variables from editing. Shut down application is not important. So your Secure Client can do this? Nice! Think, I’m buy it soon.
Thanks!
Protecting variables from ArtMoney should be easy. The principle is following:
//This code detects if variable money was ever changed outside function GiveMoney()
int money; //variable you want to protect;
int controlValue; //random control value
int moneyControlValue; //money + controlValue
void GiveMoney (int amount) //function to give money to player
{
money += amount;
moneyConntrolValue += amount;
}
bool CheckMoney () //did player cheated? you can run this at any time.
{
if (moneyControlValue != money + controlValue)
return true;
return false;
}
There are different ways to implement that, including creating a class ProtectedVariable or ProtectedInt that keeps track of its changes, or a manager that does it. ControlValue can be chnged randomly every frame for aditional protection. ProtectedVariable can reset its value to the real value each time its changed externally etc.