Worked with Arxan's technology for a bit. Not surprised it is getting to the point where cracker's don't have the time to break it.

Embracing the point that everything can be broken eventually, the focus becomes just making it take a long time, such that it is not economical, or simply too time consuming "for fun". Arxan's toolkit includes peppering custom checks everywhere in the code, including mechanisms so these checks don't have the same signature and can't be searched for easily once one is found. Further, there are "silent ones", which most of the time don't do anything, but at some point will activate. This makes it so you can think you've broken the protection, and then e.g. one hour into playing the game it randomly seg-faults (crashes with an error indistinguishable from a normal bug, through deliberate memory corruption), or flags your hardware as using a cracked version and blacklists it. Imagine trying to figure out if memory corruption was on purpose or a normal bug when the corruption happened 1,000,000,000 instructions ago by a section of code that is completely innocuous and just had an off-by-1 error introduced via some index calculation. Now imagine there are 500,000 of these little silent/time-delay traps sprinkled all over the code.

In that way it can be nearly impossible to know if you've fully cracked the game. I mean you can really take the long-con with these things, and let it run for weeks, or even just never notify the user and hit them with a blacklist. Imagine playing a game for 100 hours and then out of nowhere having your progress wiped - pretty harsh lesson if you were invested in it.

Then there is the binary + in-memory encryption, and customization of protection for every install. This was one of the holy grails as I understood it - you could make the software such that the protection system is completely custom for every install of the software, which makes binary patching useless. This would be difficult when distributing the software on discs, but, and this is a key point, trivial these days where games are downloaded. It is easy to custom generate binaries for everyone. This can do things like use a custom key based on your HWID that is literally necessary to decrypt portions of the game code. There is no way around having the correct key for your hardware to literally decrypt and run the code, which through other techniques can be made custom and further checked for authenticity, making it impossible to simply get the decrypted code and patch it in to other installs. Related techniques can be used to determine if you're running a binary that was decrypted on a different machine, and that is before getting into code that is custom-encrypted and decrypted in-memory at runtime based on your current HWID. You're probably thinking you can reason your way around this, but trust me, it has all been thought of before. The closest you could probably come is forcing cracked clients to all run in some kind of identical virtual machine, which is going to be shit for playing a AAA game even if it worked and no protections were able to figure out they were running in a virtual machine, which they can.

The list goes on for this tech, and while no single tech is super effective, when they are all put together, it adds up to a knot that very few people will have the motivation or monetary incentive to sort out, or even ability to in a relevant amount of time after the games release. By the time they figure it the next update could be released, and all that is left is to look back in misery at the time of their life they wasted cracking an old version of a game.