{"id":24936,"date":"2023-07-17T00:45:00","date_gmt":"2023-07-16T22:45:00","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=24936"},"modified":"2023-08-06T21:36:40","modified_gmt":"2023-08-06T19:36:40","slug":"security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/17\/security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system\/","title":{"rendered":"Security Knockout: How Capcom&#8217;s Street Fighter 5 punched a hole in Intel&#8217;s security system"},"content":{"rendered":"\n<p>Games are usually built in order to optimize performance, not security. This still holds true today, though it is slowly changing with the rise of cheaters in online games and technical advancements in general. Of course, when it comes to online gaming and cheating in highly optimized, massively populated multiplayer games, there is a bit more to think about than in classic single player games. But not only do the increased technical requirements hold the potential for security issues but also anti-cheat software and cheaters themselves. This article will have a look at what anti-cheat software is, how cheating gamers use technological shortcomings and finally, how <em>Street Fighter V<\/em>s code base could have had serious consequences for the players&#8217; security.<\/p>\n\n\n\n<p>According to developer and blogger Madeline Miller, a good anti-cheat software (ACS) can vastly improve a games reputation compared to bad implementations of ACS. In her blog she writes \u201c<em>A well-established anti-cheat system can make the game more enjoyable by reinforcing the player&#8217;s confidence in the game&#8217;s fairness<\/em>\u201d [1]. A statement that is clearly supported by consumers, and especially those who have been falsely flagged as cheaters before.<\/p>\n\n\n\n<p>When establishing an anti-cheat-system, many different challenges have to be tackled. The system should be accurate, detecting most of the cheats in the sessions. This is done by using different techniques such as heuristic evaluations, server validations or even performance reviews, conducted by a committee of real people [1]. It must also be forgiving in order not to flag false positives. Additionally, it should allow users to appeal incorrect decisions. If no such mechanism is provided, this can lead to bad responses amongst players, depending on the severity of the punishment. If too many players who are actually just incredibly skilled are flagged as cheaters, the reputation of the game can suffer drastically. In any of those cases, the game or even the company might lose a crucial part of its fanbase and users [1].<\/p>\n\n\n\n<p>It is then no surprise that many developers of multiplayer games are spending huge amounts of money and resources to implement the best and most reliable ACS. Such systems are getting more and more sophisticated as a response to the increasing complexity of cheats found in games. Let\u2019s have a look at some cases of cheating and respective ACS strategies. Notice how many of these cheating techniques are similar if not identical to conventional exploits and vulnerabilities used by hackers on standard software. As mentioned above, the detection can be conducted using stochastic or heuristic validation techniques. These mechanisms try to detect whether or not the current input of the player is plausible. For example, if cheaters were to use an aimbot in a first person shooter, the system could detect a humanly impossible accuracy when rotating the player around. In such a case it is pretty safe to say that this is a cheat.&nbsp;Other implementations use input validation on the server side to check the player&#8217;s current game state. Checksums and hashes are used to detect unexpected values or invalid player behavior [1].<\/p>\n\n\n\n<p>But those methods are far from enough. Today, cheats exploit all sorts of vulnerabilities in hardware and software. State of the art ACS usually come equipped with always online functions to permanently screen game state values and player behavior. Most of the common ACS also make use of low level memory scanning in order to quit a game session when suspicious code or data is detected in memory &#8211; following the principle that any software could carry unwanted code [2]. Therefore ACS usually needs to gain high control over the operating systems (OS) API. This results in relatively restrictive game setups. If users run the OS in safe mode, disable enforced driver signatures or have outdated third party software installed, the ACS might quit your game session or not even let you login to the server [3].<\/p>\n\n\n\n<p>One recent example shows how basic security methods can apply to ACS as well. In February 2023, Valve &#8211; the developer and publisher of the highly competitive ESports game <em>Dota 2 <\/em>&#8211; used a Honeypot to collectively ban 40.000 cheaters from the game. They created data which wasn\u2019t used in the actual game but would be read by the popular cheating software <em>g+<\/em>. That means, whenever a user read this data, Valves ACS would instantly know that this could only be done using a cheat, and, therefore, ban the player in question [4]. <em>Call of Duty<\/em> developer <em>Activision<\/em> also uses a Honeypot to detect cheaters with their ACS <em>Ricochet<\/em>. They implement non-visible enemies &#8211; so-called <em>Hallucinations<\/em> &#8211; which are only detected when processing the game&#8217;s current state data. If a player tries to kill one of these invisible enemies they are obviously using a cheat [5]. The downside of some of the ACS methods: The cheats or the used software must often be known a priori.<\/p>\n\n\n\n<p>To be fair, most of these ACS rules are pretty obvious and also intended by both the developers and the players &#8211; both of which just want to have fair and cheat-free online lobbies. Nevertheless it\u2019s pretty surprising to see developers resorting to extreme measures just to prevent players from seeing through walls given that no lives or critical infrastructure are at stake.<\/p>\n\n\n\n<p>And there is criticism coming from the players, too. Many users are complaining that ACS is collecting too much data and personalized information. Be it hardware details, information about other running processes on the machine or the statistics of a player&#8217;s physical behavior. There are even games which enable anti-cheat measures for the games offline single player mode [6] [7]. It also seems as though some ACS are running in the background even when the game isn\u2019t running at all [8].<\/p>\n\n\n\n<p>One very common cheat is the modification of the data using <em>DLL Injection<\/em>. This means that custom code can be injected in a running but foreign process. The code might then start another process which can then interfere with the hijacked process again. You might have noticed that this technique is not at all exclusive to games! <em>DLL Injection<\/em> as well as other software \u201chacks\u201d used by cheating gamers can potentially be applied to cause serious harm to any kind of digital infrastructure.<\/p>\n\n\n\n<p>Developers of ACS have found themselves in an arms race with the cheat software developers, both are upgrading their weapon arsenal and are resorting to more complex and extreme measures to beat the other party. Therefore even the \u201cgood\u201d guys have to upgrade their weapons. To see a kind of DLL Injection in process and understand how even single player games can open a backdoor for cheaters and hackers, we can go back in time to the year 2016, where Capcom introduced a software vulnerability in one of their games. So let\u2019s have a closer look now at how the game <em>Street Fighter V<\/em> created a gap in Intel&#8217;s security architecture.<\/p>\n\n\n\n<p>The vast majority of games are either developed by huge companies with highly specialized and educated software engineers and game developers, often working with proprietary software, or by independent studios or smaller developer teams which usually work with well established engines like Unreal Engine or Unity Engine. Either way, there are big players behind the nitty and gritty details of communication with the OS. That being said, it is not unusual that these kinds of software products use libraries, APIs and hardware drivers that are well tested and certified by the respective OS vendor. Sometimes, the developers decide to create their own drivers and make sure to have them certified before the game ships. This is how <em>Capcom.sys<\/em> was distributed on the PCs of many players all over the world.<\/p>\n\n\n\n<p><strong><em>Capcom.sys is a driver shipped with Street Fighter 5. Shortly after release, some cheaters found a way to exploit the driver in order to execute code in Kernel-Mode by disabling SMEP [9].<\/em><\/strong><\/p>\n\n\n\n<p>Before looking into the drivers code, let\u2019s summarize briefly what this actually means.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"25103\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/17\/security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system\/cpuprotectionring\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring.png\" data-orig-size=\"907,653\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CPUprotectionring\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring.png\" alt=\"\" class=\"wp-image-25103\" width=\"600\" height=\"432\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring.png 907w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring-300x216.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CPUprotectionring-768x553.png 768w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/figure>\n\n\n\n<p>An OS has a so-called \u201cUser Mode\u201d and a \u201cKernel Mode\u201d. The <em>User Mode<\/em> is the mode in which processes i.e. normal executables run. Whenever a process needs to access low level APIs such as hardware drivers, it can call the OS API which then performs a context switch to <em>Kernel Mode<\/em>. Now the drivers and the low level code can perform the requested calls and switch back to the <em>User Mode<\/em> eventually.&nbsp;The OS also strictly isolates the virtual memory of the <em>User Mode <\/em>and the <em>Kernel Mode<\/em>. This is necessary to provide a layer of security, thus preventing compromised memory and invalid memory accesses [11].&nbsp;Some CPUs implement a feature called <em>Supervisor Mode Execution Protection <\/em>or <em>SMEP<\/em> for short. This is a special system protection method, which prevents memory located in processes, running in <em>User Mode<\/em>, from being called from the highest privilege level. Put in other words, it is a mechanism that prevents unwanted and potentially harming data from entering crucial OS functionality [12].<\/p>\n\n\n\n<p>Such memory references can be made using the <em>Capcom.sys<\/em> driver. Usually <em>SMEP<\/em> would stop those calls, but Capcom didn\u2019t seem to double check a specific function in their driver\u2019s code prior to shipping. Also, since this was a signed driver (certified by hardware or OS vendor), the OS didn\u2019t block or remove it from the user&#8217;s machine.<\/p>\n\n\n\n<p>To see exactly what happened, let&#8217;s have a look at the Disassembly of said function (note that the names of variables and functions don\u2019t match the original. This Disassembly was created by a user from [9]).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode.png\"><img loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"387\" data-attachment-id=\"24939\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/17\/security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system\/capcomrunusercode\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode.png\" data-orig-size=\"941,387\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CapcomRunUserCode\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode.png\" alt=\"\" class=\"wp-image-24939\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode.png 941w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode-300x123.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/CapcomRunUserCode-768x316.png 768w\" sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><\/a><\/figure>\n\n\n\n<p>As you can see above, this function is composed of an <em>if-else<\/em> branch and returns a <em>result<\/em>. But what&#8217;s most interesting is the call of the <em>userFunction<\/em> right in the middle of the body. This call is surrounded by the function calls <em>sub_10788()<\/em> and <em>sub_107A0()<\/em>. As the comments in the Disassembly suggest, these calls disable <em>SMEP<\/em> prior to the call of the <em>userFunction<\/em> and enable it again afterwards.<\/p>\n\n\n\n<p>This means that any code located in the pointer <em>fnMmGetSystemRoutineAddress<\/em> will be executed by the driver in <em>Kernel Mode<\/em> without any protection whatsoever. In addition to that, any value given as an argument will be handed over to the <em>userFunction<\/em>. It is not too hard to implement some more code to create a wrapper that executes arbitrary code using this driver&#8217;s functions (see [9] for a full template code).<\/p>\n\n\n\n<p>To validate the behavior of the functions <em>sub_10788()<\/em> and <em>sub_107A0()<\/em> let\u2019s take a look at the Assembler code I converted from the original <em>Capcom.sys<\/em> driver myself.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode.png\"><img loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"381\" data-attachment-id=\"24940\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/17\/security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system\/assembler_capcomrunusercode\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode.png\" data-orig-size=\"807,381\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Assembler_CapcomRunUserCode\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode.png\" alt=\"\" class=\"wp-image-24940\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode.png 807w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode-300x142.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_CapcomRunUserCode-768x363.png 768w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/a><\/figure>\n\n\n\n<p>In the Assembler code we can clearly see the resemblance of the C++ code from the figure above it. The most important functions are color coded above as well as in the Assembler code. If we now follow the function pointer <em>0000000000010788<\/em> to the <em>sub_10788()<\/em> we can see the following function.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable.png\"><img loading=\"lazy\" decoding=\"async\" width=\"788\" height=\"325\" data-attachment-id=\"24941\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/17\/security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system\/assembler_smep_disable\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable.png\" data-orig-size=\"788,325\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Assembler_SMEP_Disable\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable.png\" alt=\"\" class=\"wp-image-24941\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable.png 788w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable-300x124.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/Assembler_SMEP_Disable-768x317.png 768w\" sizes=\"auto, (max-width: 788px) 100vw, 788px\" \/><\/a><\/figure>\n\n\n\n<p>Notice the register <em>cr4<\/em> in line 393. This register is a control register on x64 architecture Intel CPUs. Its 21st bit happens to manage <em>SMEP<\/em> activation [13]. The value which is being moved into the registry is <em>0FFFFFFFFFFEFFFFF<\/em> in line 392. Because Windows uses a little-endian byte expression we have to read the individual bytes from right to left. And indeed, the 21st bit is a zero while all others are ones. Therefore the function shown above actually disables <em>SMEP<\/em> on Intel CPUs and consequently allows hackers as well as cheaters to run any code they wish without any security check. By the way: According to my research, this problem only occurs with Intel CPUs, since AMD does not support <em>SMEP<\/em>.<br>(The <em>SMEP<\/em>-enabling function is not shown here because of redundancy.)<\/p>\n\n\n\n<p>So what does this mean in the context of games, ACS and general software security?<\/p>\n\n\n\n<p>After the exploit was discovered, the <em>Capcom.sys<\/em> certificate was revoked immediately. Obviously such security vulnerabilities cannot be allowed to reside in users systems for a long time. This case shows that even games &#8211; which usually don\u2019t seem to have a need for high security standards &#8211; can still introduce serious issues.<\/p>\n\n\n\n<p>A game system&#8217;s proximity to the OS, the increasing complexity of cheats and ACS plus possible financial and reputational pressure on game developers might all culminate in a scenario where something like the <em>Capcom<\/em> case can actually happen.<\/p>\n\n\n\n<p>Although pretty severe, this is by far not something that happens regularly. As Madeline Miller describes in her blog, game companies usually don\u2019t deal with such delicate software &#8211; neither in a usual game development context nor in ACS [1]. Still, this case shows how important high quality production code is. And it should make software engineers just a bit more aware of their responsibility &#8211; even if they are seemingly working on non-security-related code.<\/p>\n\n\n\n<p><strong>Sources:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[1] Madeline Miller &#8211; Blog <br><a href=\"https:\/\/madelinemiller.dev\/blog\/anticheat-an-analysis\/\">https:\/\/madelinemiller.dev\/blog\/anticheat-an-analysis\/<\/a><\/li>\n\n\n\n<li>[2] 4Players &#8211; Different ACSs functionalities<br><a href=\"https:\/\/www.4players.de\/cs.php\/anticheat\/-\/185\/16625\/index.html\">https:\/\/www.4players.de\/cs.php\/anticheat\/-\/185\/16625\/index.html<\/a><\/li>\n\n\n\n<li>[3] EasyAntiCheat&nbsp; &#8211; Overview of EasyAntiCheat Troubleshooting<br><a href=\"https:\/\/www.easy.ac\/de-de\/support\/game\/issues\/errors\/\">https:\/\/www.easy.ac\/de-de\/support\/game\/issues\/errors\/<\/a><\/li>\n\n\n\n<li>[4] Golem &#8211; Honeypot for Cheat Software (Valve)<br><a href=\"https:\/\/www.golem.de\/news\/dota-2-valve-lockt-cheater-in-einen-honeypot-2302-172157.html\">https:\/\/www.golem.de\/news\/dota-2-valve-lockt-cheater-in-einen-honeypot-2302-172157.html<br><\/a>[5] Activision Honeypot for Cheat Software (Activision) <br><a href=\"https:\/\/www.callofduty.com\/blog\/2023\/06\/call-of-duty-ricochet-anti-cheat-season-04-update\">https:\/\/www.callofduty.com\/blog\/2023\/06\/call-of-duty-ricochet-anti-cheat-season-04-update<\/a><\/li>\n\n\n\n<li>[6] Steam Community &#8211; Watch Dogs Offline ACS <a href=\"https:\/\/steamcommunity.com\/app\/447040\/discussions\/0\/152390014801453165\/\">https:\/\/steamcommunity.com\/app\/447040\/discussions\/0\/152390014801453165\/<\/a>&nbsp;<\/li>\n\n\n\n<li>[7] Wired &#8211; Kernel Based Anti-Cheat Drivers <br><a href=\"https:\/\/www.wired.com\/story\/kernel-anti-cheat-online-gaming-vulnerabilities\/\">https:\/\/www.wired.com\/story\/kernel-anti-cheat-online-gaming-vulnerabilities\/<\/a><\/li>\n\n\n\n<li>[8] Reddit &#8211; Kernel based Anti-Cheat in single player games <a href=\"https:\/\/www.reddit.com\/r\/pcgaming\/comments\/q8ao19\/every_game_with_kernellevel_anticheat_software\/\">https:\/\/www.reddit.com\/r\/pcgaming\/comments\/q8ao19\/every_game_with_kernellevel_anticheat_software\/<\/a><\/li>\n\n\n\n<li>[9] Unknown Cheats &#8211; Capcom Exploit example<br><a href=\"https:\/\/www.unknowncheats.me\/forum\/general-programming-and-reversing\/189625-capcom-sys-usage-example.html\">https:\/\/www.unknowncheats.me\/forum\/general-programming-and-reversing\/189625-capcom-sys-usage-example.html<\/a>&nbsp;<\/li>\n\n\n\n<li>[10] Stronghold Cyber Security &#8211; Kernel Ring Model <br><a href=\"https:\/\/www.strongholdcybersecurity.com\/2018\/01\/04\/meltdown-bug-meltdown-attack-intel-processors\/cpuprotectionring\/\">https:\/\/www.strongholdcybersecurity.com\/2018\/01\/04\/meltdown-bug-meltdown-attack-intel-processors\/cpuprotectionring\/<\/a><\/li>\n\n\n\n<li>[11] Microsoft Learn &#8211; User-Mode \/ Kernel-Mode<br><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/drivers\/gettingstarted\/user-mode-and-kernel-mode\">https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/drivers\/gettingstarted\/user-mode-and-kernel-mode<\/a>&nbsp;<\/li>\n\n\n\n<li>[12] Intel &#8211; Supervisor Mode Execution Protection<br><a href=\"https:\/\/edc.intel.com\/content\/www\/us\/en\/design\/ipla\/software-development-platforms\/servers\/platforms\/intel-pentium-silver-and-intel-celeron-processors-datasheet-volume-1-of-2\/005\/intel-supervisor-mode-execution-protection-smep\/\">https:\/\/edc.intel.com\/content\/www\/us\/en\/design\/ipla\/software-development-platforms\/servers\/platforms\/intel-pentium-silver-and-intel-celeron-processors-datasheet-volume-1-of-2\/005\/intel-supervisor-mode-execution-protection-smep\/<\/a>&nbsp;<\/li>\n\n\n\n<li>[13] OSDev Wiki &#8211; CPU Registers <br><a href=\"https:\/\/wiki.osdev.org\/CPU_Registers_x86-64#CR4\">https:\/\/wiki.osdev.org\/CPU_Registers_x86-64#CR4<\/a><\/li>\n\n\n\n<li>[14] Game Deals &#8211; Street Fighter V cover image <a href=\"https:\/\/img.gg.deals\/01\/b4\/323edf0507129ecd71d9acd5dff96b32200f_1920xt1080_S1000.jpg\">https:\/\/img.gg.deals\/01\/b4\/323edf0507129ecd71d9acd5dff96b32200f_1920xt1080_S1000.jpg<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Games are usually built in order to optimize performance, not security. Nevertheless, they can be responsible for security vulnerabilities as well. This article shows how anti-cheat software, cheaters themselves and finally also game developers can cause harm to users systems.<\/p>\n","protected":false},"author":1120,"featured_media":24943,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[26],"tags":[916,915,74,19,58,27,917],"ppma_author":[914],"class_list":["post-24936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-secure-systems","tag-anti-cheat-software","tag-capcom","tag-games","tag-intel","tag-secure-systems","tag-security","tag-windows"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/StreetFighterV-1.jpg","jetpack-related-posts":[{"id":3221,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/03\/25\/security-in-a-saas-startup-and-todays-security-issues-with-devops\/","url_meta":{"origin":24936,"position":0},"title":"Security in a SaaS startup and today&#8217;s security issues with DevOps","author":"cp054","date":"25. March 2018","format":false,"excerpt":"Motivation Facing security in a company nowadays is a big job: it starts with a backup strategy ensuring the business continuation, plans for recovery after major breakdowns, ensuring physical security (entrance control, lock-pads, safes), screening of potential employees, monitoring servers, applications and workstations, training the employees in security issues and\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/devops\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/figure-3-push-to-public.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/figure-3-push-to-public.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/figure-3-push-to-public.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/figure-3-push-to-public.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3232,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/10\/06\/usable-security-users-are-not-your-enemy\/","url_meta":{"origin":24936,"position":1},"title":"Usable Security &#8211; Users are not your enemy","author":"mw195","date":"6. October 2017","format":false,"excerpt":"Introduction Often overlooked, usability turned out to be one of the most important aspects of security. Usable systems enable users to accomplish their goals with increased productivity, less errors and security incidents. And It stills seems to be the exception rather than the rule. When it comes to software, many\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/10\/windows-uac.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":25613,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/08\/15\/the-hardest-boss-in-dark-souls-a-secure-multiplayer\/","url_meta":{"origin":24936,"position":2},"title":"The hardest boss in Dark Souls: A secure multiplayer","author":"Fabian Rei\u00dfer","date":"15. August 2023","format":false,"excerpt":"Over the course of the last decades, video games have continuously risen in popularity. Today, hundrets of thousands of people play video games every day. Many of these games have multiplayer, where an enormous amount of people play together at the same time. When thinking about 'hacking' in multiplayer games,\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/DS3.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/DS3.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/DS3.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/DS3.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/DS3.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/DS3.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":3084,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/09\/05\/cloud-security-part-2-the-vulnerabilities-and-threats-of-the-cloud-current-scientific-work-on-cloud-security-conclusion-and-outlook\/","url_meta":{"origin":24936,"position":3},"title":"Cloud Security \u2013 Part 2: The vulnerabilities and threats of the cloud, current scientific work on cloud security, conclusion and outlook","author":"Andreas Fliehr","date":"5. September 2017","format":false,"excerpt":"The second of two blog posts about cloud security. This post covers the vulnerabilities and threats of the cloud, the current scientific work on cloud security and a conclusion and an outlook.","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/Structure-of-Nexen.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/Structure-of-Nexen.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/09\/Structure-of-Nexen.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3981,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/08\/16\/usability-and-security\/","url_meta":{"origin":24936,"position":4},"title":"Usability and Security","author":"Christof Kost","date":"16. August 2018","format":false,"excerpt":"Usability and Security - Is a tradeoff necessary? Usability is one of the main reasons for a successful software with user interaction. But often it is worsened by high security standards. Furthermore many use cases need authentication, authorisation and system access where high damage is risked when security possibilities get\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/2018-08-16-12_12_42-NotificerffeationsForm.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/2018-08-16-12_12_42-NotificerffeationsForm.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/2018-08-16-12_12_42-NotificerffeationsForm.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/2018-08-16-12_12_42-NotificerffeationsForm.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/2018-08-16-12_12_42-NotificerffeationsForm.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/2018-08-16-12_12_42-NotificerffeationsForm.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":3978,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/08\/16\/security-in-smart-cities\/","url_meta":{"origin":24936,"position":5},"title":"Security in Smart Cities","author":"Johannes Kaeppler","date":"16. August 2018","format":false,"excerpt":"Today cities are growing bigger and faster than ever before. This results in various negative aspects for the citizens such as increased traffic, pollution, crime and cost of living, just to name a few. Governments and city administrations and authorities are in need to find solutions in order to alleviate\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":914,"user_id":1120,"is_guest":0,"slug":"frederik_omlor","display_name":"Frederik Omlor","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/0fa15651cbce50e6d32ed1b242c9207a325a5f252889ddb1a1103102ecd2a215?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/24936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/1120"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=24936"}],"version-history":[{"count":9,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/24936\/revisions"}],"predecessor-version":[{"id":25317,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/24936\/revisions\/25317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media\/24943"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=24936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=24936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=24936"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=24936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}