hello sir,
my name is Yang, I am a professional Linux developer, first of all, I am not a expert for anti-cheat. but I think I can provide some solution for you and your team. I have some .NET and C# reverse engineering experience before, here is my suggestions:
1, according to my online game experience, many cheat programs will try to crack your game files(dll, exe, or config file), so first step, is to try to encrypt your game program. there are some technical may can be used: dll encryption, dll obfuscator, and so on.(I just modified a lottery client in the last week, the developer used dll obfuscator and encryption to protect the program, but still not 100% safe.)
2, to prevent the game program be modified, we can use md5 to check all program files, make sure it can't be anyone modified.
3, even we can protect our program files are safe, but some people still can write tools to modify the memory of program. for example: change HP, Money...., my idea is to store important data on server side. and use suitable algorithm to encrypt the data. (for example: if we want to protect the HP value,
we even can use customized base64 algorithm to encrypt the HP value, this may be help)
4, there are some another cheat ways, like: hacking the server, or analysis our network traffic. but we can use ssl to protect our network connections and enhance the server.
above are some general way to anti-cheat, it's my personal suggestions. thanks!