// // How to detect visibility checks - // // This is a simple (but ghetto) way to check if a function was called by game code, or by a hack. This should be added for all trace funcs. // All private cheats and payhacks I know of call engine funcs to trace, which would all be detected by this. Pseudocode: // BOOL SingleLineCheck() { MultiLineCheck(); // Assuming SLC calls MLC } BOOL MultiLineCheck() { if(!bCallingTraceFunc) { NerdDetected(); } bCallingTraceFunc = false; } VOID ExampleFunction() { bCallingTraceFunc = true; SingleLineCheck(); } // // How to detect engine autofire and triggerbots - // // Apart from cheats that use input, most cheats fire by calling StartFire() and StopFire() each tick. This can be logged and detected many ways. // 1) Comparing StartFire calls to input. Check if fire key was pressed in the StartFire function. // 2) Checking the frequency of Start/StopFire calls. Legit players or macros wont be able to match the consistency of it being called each tick. Just check and log StartFire call delta. // 3) For automatic weapons, there is no reason (unless you're a lazy cheat coder) to call StartFire and StopFire as it increases TTK and ghostshots. // Log the amount of shots fired per StartFire call, and the ROF. If a cheat is using Start/StopFire, it will always be 1. // // // How to detect external overlay windows - // // A cheat overlay usually works by creating a window, and using DirectX to draw. // This can easily be detected by enumerating windows, and checking window styles with GetWindowLong(). Download outdated external public cheats for various games to check window styles, but they're almost all the same: // Check for WS_EX_TOPMOST | WS_EX_COMPOSITED | WS_EX_TRANSPARENT | WS_EX_LAYERED, and WS_VISIBLE | WS_POPUP. Though this would whitelist small radar windows, you check window rect to avoid false positives. // To test this, I downloaded a bunch of external overlay cheats from unknowncheats for various games. All were detected without any code changes needed, and there were no false positives (even with no rect check). // // // How to detect software input - // // Add keyboard and mouse hooks and check for the LLKHF_INJECTED and LLMHF_INJECTED flags, which will detect or block fake input from software. // This will block all external triggerbots and software macros.. Also a way to check autofire that doesn't use function calls. // // // Other ideas - // // 1) From what i've seen, only certain recoil vars are checked for 0. // ALL recoil vars should be checked every time a weapon is fired against correct recoil, which i'm assuming is read from sdd.bin. // // 2) This is how to detect all aimbots that don't use mouse input, and it's mainly common sense. // Check input rot delta against actual delta per tick. If it doesn't match, it means that camera rotation was manually set. // I don't know how input is handled in APB, but i've gotten this working with a hack in America's Army: Proving Grounds. I'm certain this can be done in APB. // // 3) Change order/offsets of base classes every patch. // This will make it much more time consuming for payhack sites and cheaters to manually update their cheats every patch, and will stop the lazy or incompetent cheaters in their tracks. // I remember when there was a large patch, SystemFiles (the "coder" of UE3 games on AimJunkies) was having trouble updating the cheat for close to two weeks. //