# 2020/08/10 ## Participants - Adrian - Buck - Giang - Nick - Karl - Matthias - Tim - John ## Notes - We'll need a lawyer who looks into the specifics of the contract. - So nobody can run away with it - We need to research how the shares work. - Whoever will end up doing it, will also setup the company and shares. - America or Norway? - Adrian will look into it - Contracting or being part of the company? - US LLC and let everyone shares. - Contracting is always possible (It's just a different type of tax form). - First game to protect: See @Adrians presentation - Module system - Game/Engine specific detections - RPC based architecture: Code is still on the client -> can be reverse engineered - Networking: KM or UM? - KM: - May be critical - We need a library that is 100% safe (using WinSock). - [Supported by Microsoft](https://docs.microsoft.com/en-us/windows-hardware/drivers/network/introduction-to-winsock-kernel). - Makes tampering with it a little harder. - [Example](https://github.com/hsluoyz/wskudp/blob/master/wsktcp/wsktcp.c) - **Only send requests to the server when the driver is loaded.** - UM: - Safer? - Can be obfuscated - Costs / Legal stuff: - To set up the entire LLC is shouldn't cost more than a few hundreds. - We don't want to have one person in control. - People who invest get a bonus. Investors will get 100% of their investments out of the profit but after that it's getting split. - Kernel streaming: - 1 mb space in .text that gets overwritten? - Problem: - Public image. Kernel driver is already a huge issue for people. - Microsoft probably wouldn't like it. - Encrypt certain parts of the code and transfer the key. - Only an issue if Microsoft finds out. - As long as we pass WHQL it's fine. - Streaming alternative: Have different drivers. - Encrypting: - Even if an employee goes rogue there's no way to exploit it. - Prevention vs Detection: - Prevention allows you to do much harsher detections. - Legit applications cannot be interact with the process anymore. - **Focus on prevention** - Obfuscation: Ask for private versions - Virtualization: Hurts the performance of the games. - Strip symbols: Simple renaming and remapping (.NET) - 1-2 days effort - Violate assumptions tools make: - Call doesn't always return to the next instruction - Prevent automatic sdk generation - **Obfuscation can be advertised.** - Should be built by us. Can be built once and then used for everything after that. Features are optional. - Custom llvm version that has the obfuscation. - Obfuscation: - Some obfuscation that shouldn't hurt performance too much but make things annoying for RE for when we have the time to do it: - Simple constant mutation - Control flow (very annoying to deobfuscate if done right) - Violate common assumptions - Go below rsp (safe in UM) - make CALL not always return to next instruction - general stack fuckery - turn ret into jump - replace with sub + deref and so on, swap rsp with another register - custom abi: - buffer on the stack with the return address - randomized and obfuscated - rsp - 0x20 = return address of function A - rsp - 0x10 = return address of function B - Hypervisor: - Maybe in the future - Intel and AMD support - We probably need to hire some experts. - Monorepo - Ban system: - EAC: - They mess with your head. - They let you play with detected stuff. - Allows them to: - detect the cheat and the users -> determine threats - gather data - dump cheat - Public image - Live statistics on the website (flexing statistics) -> only when big - Ask game developers first. - If somebody is complaining on reddit -> refer to the statistics - Based on the reports: Accelerate it - Next steps: - Adrian: Setup client/driver template - Kernel driver will probably be in C - Multirepo: - Client - Server - Frontend