<?xml version="1.0" encoding="UTF-8"?>    <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
    <channel>
        <title>Software hacking - aixxe</title>
        <description><![CDATA[Hello. I make video games do things they weren't supposed to do.]]></description>
        <language>en</language>
        <link>https://aixxe.net</link>
        <generator>monologue/3.0</generator>

                    <category>Software hacking</category>
        
                    <item>
                <title>C++ code injection basics</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2025/11/portable-code-injection</link>
                <guid isPermaLink="true">https://aixxe.net/2025/11/portable-code-injection</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Tutorials</category>
                
                <description><![CDATA[Avoiding the assembly.]]></description>
                <content:encoded><![CDATA[Over the years, I've received a few questions about how some of my projects, which are usually distributed as standalone DLL files, are able to update themselves while already loaded inside a process. The underlying technique is nothing new and is typically used for malware and other offensive purposes, but there are a lot of innocent practical things you can do with it too.]]></content:encoded>

                <pubDate>Mon, 10 Nov 2025 22:05:24 +0000</pubDate>
                <updated>Mon, 10 Nov 2025 22:05:24 +0000</updated>
            </item>
                    <item>
                <title>Library patching with NtMapViewOfSection</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2024/09/dll-memory-patching</link>
                <guid isPermaLink="true">https://aixxe.net/2024/09/dll-memory-patching</guid>

                                    <category>Development</category>
                                    <category>Tutorials</category>
                                    <category>Software hacking</category>
                
                <description><![CDATA[Too stubborn to just patch the file on disk?]]></description>
                <content:encoded><![CDATA[I recently needed to patch a few instructions in a dynamic library I was loading in. Up until now, I’ve been getting by with applying the changes after loading the library, as none of the exported methods had been called yet, but that wasn’t going to work this time.]]></content:encoded>

                <pubDate>Mon, 23 Sep 2024 10:34:50 +0000</pubDate>
                <updated>Mon, 23 Sep 2024 10:34:50 +0000</updated>
            </item>
                    <item>
                <title>Mid-function hooking with SafetyHook</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2022/12/safetyhook-midfn-hooking</link>
                <guid isPermaLink="true">https://aixxe.net/2022/12/safetyhook-midfn-hooking</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Tutorials</category>
                
                <description><![CDATA[Featuring some bonus runtime disassembling.]]></description>
                <content:encoded><![CDATA[I’ve shown off a load of inline hooks in previous posts but I don’t think I’ve ever done any mid-function hooking on this blog before. Shocking, because there’s a ton of cool stuff you can do with it and, as luck would have it, I recently came across a library that makes both inline and mid-function hooking easier and safer than anything I’ve been using in the past.]]></content:encoded>

                <pubDate>Wed, 28 Dec 2022 17:32:55 +0000</pubDate>
                <updated>Wed, 28 Dec 2022 17:32:55 +0000</updated>
            </item>
                    <item>
                <title>Build your own Eacnet requests</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2022/07/eacnet-request-generation</link>
                <guid isPermaLink="true">https://aixxe.net/2022/07/eacnet-request-generation</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                
                <description><![CDATA[Cutting all the corners.]]></description>
                <content:encoded><![CDATA[Now that we know what requests look like, let’s try creating and posting some of our own. We’ve already captured one that gives us versions, checksums, and links to various game files. Now it’s just a matter of periodically re-issuing it and checking for changes.]]></content:encoded>

                <pubDate>Sun, 10 Jul 2022 18:26:17 +0000</pubDate>
                <updated>Mon, 11 Jul 2022 12:16:58 +0000</updated>
            </item>
                    <item>
                <title>Constructing the score hook library</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2019/12/iidx-score-hook</link>
                <guid isPermaLink="true">https://aixxe.net/2019/12/iidx-score-hook</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Project logs</category>
                
                <description><![CDATA[Reading out score data from the game using an internal library.]]></description>
                <content:encoded><![CDATA[This is the second in a series of posts on streamlining score sharing in beatmania IIDX. Using the data we found last time, we'll build an internal library to read score data from memory, find and hook a function to run our code on the result screen, and finally, hijack an import to get our library loaded automatically.]]></content:encoded>

                <pubDate>Thu, 26 Dec 2019 11:49:54 +0000</pubDate>
                <updated>Thu, 26 Dec 2019 11:49:54 +0000</updated>
            </item>
                    <item>
                <title>Streamlining the score sharing experience</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2019/06/iidx-score-data</link>
                <guid isPermaLink="true">https://aixxe.net/2019/06/iidx-score-data</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Project logs</category>
                
                <description><![CDATA[Finding & extracting score data in beatmania IIDX INFINITAS.]]></description>
                <content:encoded><![CDATA[Sharing scores is a big part of the rhythm game community. For me, it's been a great way to keep track of my progress and meet similarly skilled players to compete with. On the other hand, taking pictures of the screen with my phone each time got old fast. The process needed some streamlining and I had a plan.]]></content:encoded>

                <pubDate>Sun, 23 Jun 2019 19:55:33 +0000</pubDate>
                <updated>Sat, 02 May 2020 15:52:48 +0000</updated>
            </item>
                    <item>
                <title>Rendering with the Steam overlay</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2017/09/steam-overlay-rendering</link>
                <guid isPermaLink="true">https://aixxe.net/2017/09/steam-overlay-rendering</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Tutorials</category>
                
                <description><![CDATA[Streaming without suspicion.]]></description>
                <content:encoded><![CDATA[Somehow, despite the eternal procrastination that re-writing one of my larger internal projects has become, I’ve finally managed to make some progress and replace my extremely inefficient method for achieving ‘stream-proof’ visuals with something a lot easier to implement.]]></content:encoded>

                <pubDate>Sun, 17 Sep 2017 15:40:06 +0000</pubDate>
                <updated>Thu, 08 Apr 2021 12:21:58 +0000</updated>
            </item>
                    <item>
                <title>We need to glow deeper</title>
                <author>Emma N. Skye</author>
                <link>https://aixxe.net/2017/06/kernel-game-hacking</link>
                <guid isPermaLink="true">https://aixxe.net/2017/06/kernel-game-hacking</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Tutorials</category>
                
                <description><![CDATA[Ill-advised adventures in the land of the kernel.]]></description>
                <content:encoded><![CDATA[If a tree falls in a forest and no one is around to hear it, does it make a sound? Similarly, if we patch the memory of Counter-Strike: Global Offensive from kernel space, would that be considered an internal or external hack? Not sure. I know how to do it, though. Do you want to know?]]></content:encoded>

                <pubDate>Sat, 24 Jun 2017 13:29:56 +0000</pubDate>
                <updated>Fri, 17 Jan 2020 19:09:50 +0000</updated>
            </item>
                    <item>
                <title>Input recording &amp; re-recording</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2017/04/source-input-recorder</link>
                <guid isPermaLink="true">https://aixxe.net/2017/04/source-input-recorder</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Tutorials</category>
                
                <description><![CDATA[Building a client-side input recorder with re-recording capabilities.]]></description>
                <content:encoded><![CDATA[This time we’re diving into the world of tool assisted speedrunning – also known as ‘TASing’. Simply put, the process of creating a speedrun using third-party tools. In this post, we’ll build the core recording & playback logic, add the ability to re-record and finally, replay the recording on a live server.]]></content:encoded>

                <pubDate>Sun, 23 Apr 2017 19:20:07 +0000</pubDate>
                <updated>Thu, 24 Feb 2022 11:08:40 +0000</updated>
            </item>
                    <item>
                <title>Walking the interface list</title>
                <author>aixxe</author>
                <link>https://aixxe.net/2017/03/walking-interface-list</link>
                <guid isPermaLink="true">https://aixxe.net/2017/03/walking-interface-list</guid>

                                    <category>Development</category>
                                    <category>Software hacking</category>
                                    <category>Tutorials</category>
                
                <description><![CDATA[Another way to get interfaces in Source.]]></description>
                <content:encoded><![CDATA[Welcome back to another instalment of the ‘alternative approaches’ series! This time we’re revisiting one of the fundamentals of internal game hacking on the Source Engine: the CreateInterface function, or more specifically, the underlying list of version strings and pointers that you should be using instead.]]></content:encoded>

                <pubDate>Wed, 15 Mar 2017 13:12:19 +0000</pubDate>
                <updated>Fri, 17 Jan 2020 19:12:42 +0000</updated>
            </item>
            </channel>
</rss>
