Why can't windows kernel disallow cheater programs processes to access games memory at runtime through ACL (Access Control List) or other access control methods??
Memory Access Control in Windows Memory Management
136 Views Asked by Ahmed Waleed At
1
There are 1 best solutions below
Related Questions in MEMORY
- DataTable does not release memory
- Impala Resource Estimation for queries with Group by
- Is there any way to get a lru list in Linux kernel?
- C# console application - Unhandled exception while finding the Available and free Ram space.Getting exact answer in windows forms application
- Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in PHP
- C# equivalent of Java Memory mapping methods
- How to figure out the optimal fetch size for the select query
- Creating two arrays with malloc on the same line
- Using parse.com and having allocation memory issue
- error reading variable: cannot access memory at address
- CentOS memory availability
- Correct idiom for freeing repr(C) structs using Drop trait
- Find Ram/Memory manufacturer in Linux?
- Profiling memory usage on App Engine
- Access Violation: 0xC0000005, why is this happening?
Related Questions in ACCESS-CONTROL
- Google Drive Sync + Read-only access
- Appying Denning security Model for django admin site
- NSTimer does not invoke a private func as selector
- How to block an action or controller without using AccessControl in Yii2?
- How do I check in PowerShell if a service has read access to a certain folder?
- Git for project with overlapping public and private portions
- XACML: How to control the access to the properties in a resource
- No 'Access-Control-Allow-Origin' header is present on the requested resource with API and website on same port
- REST API - How to restrict access to resources by role?
- Complex Authorization using XACML
- Twilio IP Address Control List for sending SMS/MMS messages
- Is it possible to edit the value of a public variable from another module?
- restrict viewing photos and article content on a wordpress site
- Roles missing in mongodb
- Access a control created at runtime (WPF)
Related Questions in WINDOWS-KERNEL
- How does windows terminate processes?
- How do I send keyboard & mouse input to the Windows logon screen?
- Communicating kernel space from user-land in Windows
- NdisChainBufferAtBack substitution in NDIS 6
- how to properly wait for completion of NtCreateFile/etc?
- Debugging Windows Kernel with two VirtualBox hosts
- Device driver does not install on any devices, use primitive driver if this is intended in Visual studio 2019?
- Is kernel space mapped into user space on Linux x86?
- What is the replacement for undocumeneted Windows Kernel API - KeSetAffinityThread() in Windows 7 and later OS
- how to find the number of COM ports and their resources?
- Concatenate large files using Win NT kernel API
- How to share kernel objects, such as Waitable Timers, between processes?
- The Windows desktop becomes paralysed during heavy network I/O / Windows kernel allocates only 1 out of many CPUs?
- How can I see API calls for specific processes in the Windows kernel driver?
- Suspending a NDIS LWF
Related Questions in CHEAT-ENGINE
- How do I get the (physical) baseaddress of an .DLL used in a process?
- Using Cheat Engine to accelerate time in a Flash program
- cheat engine debug breakpoint on IDA function addresses
- Some confusion with cheat engine function address and IDA subrutine
- Click Event On Object Created Using WINAPI in CE Lua
- Can i find memory adress of moving or making actions in games
- find out what instructions write to this memory address olly dbg cheat engine
- How can I avoid cheat engine to see my strings at runtime
- Where is the difference between those two Assembly code snippet's?
- Memory Access Control in Windows Memory Management
- Cheat engine address to Intptr?
- Does GDB support deductive memory scanning, like Cheat Engine?
- Executing function in other process through dll injection
- Why is id different through id() and through the cheat engine?
- How to read register values at specific instructions in C++ like Cheat Engine does?
Related Questions in ANTI-CHEAT
- Android Games: Strategies to Defeat Memory Editors for Cheating
- Web service for UTC time to prevent mobile game cheating
- What are the most effective methods to detect bot application presence/activity (client-side)?
- How to prevent Rooted Android Phones from Installing my app?
- How can I avoid cheat engine to see my strings at runtime
- Memory Access Control in Windows Memory Management
- iPhone hardware & user timers getting out of sync over time
- Howto take latency differences into consideration when verifying location differences with timestamps (anti-cheating)?
- cheat prevention for browser based xmlhttp/js/perl/php game
- Send data from server based on player position
- Using memcpy to clone an entire region of memory into my own
- How could I detect if pyinput is being used on a Windows machine via remote desktop protocol?
- Custom event: Instance trash mob requirement for quest completion
- TruePlay interface
- Securing WebGL game code
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Let's take an example.
Let's say we are a game publisher. We publish a game, which our customers can run under any user account (games very rarely requires to be run with elevated privileges).
A game user, alongside our game, also installs a game cheat which runs as the current user.
User starts running a game and their cheat (both running under the same user account). Now, the system won't prevent the cheat from accessing (e.g. reading and writing memory, modifying CPU context, etc.) the game process: processes inherit their privileges from the logon session, which is tied to a user account. So basically, any process can "access" any other process running on the same session (under the same user account).
Now, you might be thinking: there should be a way to tweak the game process privileges so that, even if it's running on the same user account as a rogue program (cheat), it can't be accessed from another program. But that contradicts various fundamental security principles of operating systems:
Now we decide we want to force our game users to run the game as elevated administrator (another possibility would be to install a service running as SYSTEM, then the game would be started by the service, thus the game would also be run as SYSTEM). But, thinking about it, nothing prevents the user to be running the cheat also as elevated administrator (we don't have any control on the user's machine). We are back to square one.
Enter kernel drivers. As a publisher we decide to ship our game with a kernel driver, so from the kernel side, we make the process memory unreadable and un-writable, basically preventing any access whatever the user account and privileges are (even administrator). To counteract that, the cheat engine also ships with a kernel driver [1], disrupting and undoing whatever our own kernel driver is doing.
Now we decide that we could DRM our game, preventing reverse engineering of the game and the kernel driver. But... the cheat engine now leverage virtualization features techniques which cannot be seen even from the kernel space... (virtualization controls the kernel space).
To sum up: ACLs are not part of the equation for anti-cheats on PC since, as a publisher, you can't (fortunately, for us as users) control the end-user machine. It's a never ending cat & mouse game.
[1] Even though drivers have to be signed to be loaded, you can leverage a legitimate but vulnerable signed driver to do whatever you want in kernel space. Those are called "loldrivers".