<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on Maurice&#39;s Blog 🐍</title>
    <link>https://momo5502.com/posts/</link>
    <description>Recent content in Posts on Maurice&#39;s Blog 🐍</description>
    <generator>Hugo -- 0.152.0</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 03 Oct 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://momo5502.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Reverse Engineering Denuvo in Hogwarts Legacy</title>
      <link>https://momo5502.com/posts/2025-10-03-reverse-engineering-denuvo-in-hogwarts-legacy/</link>
      <pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2025-10-03-reverse-engineering-denuvo-in-hogwarts-legacy/</guid>
      <description>&lt;h3 id=&#34;talk-at-navaja-negra-2025&#34;&gt;Talk at Navaja Negra 2025&lt;/h3&gt;
&lt;p&gt;This technical presentation explores the inner workings of Denuvo Anti-Tamper, one of the gaming industry&amp;rsquo;s most widely deployed DRM solutions.
Through detailed reverse engineering analysis, we&amp;rsquo;ll examine Denuvo&amp;rsquo;s protection mechanisms, obfuscation techniques, and architectural design choices.
The talk covers the methodology used to analyze the system, key findings about how it integrates with game executables, and insights into modern anti-tamper technology. Attendees will gain a deeper understanding of contemporary DRM implementations and the technical challenges involved in software protection systems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fake It ‘til We Make It: The Art of Windows User Space Emulation</title>
      <link>https://momo5502.com/posts/2024-10-04-the-art-of-windows-user-space-emulation/</link>
      <pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2024-10-04-the-art-of-windows-user-space-emulation/</guid>
      <description>&lt;h3 id=&#34;talk-at-navaja-negra-2024&#34;&gt;Talk at Navaja Negra 2024&lt;/h3&gt;
&lt;p&gt;Modern software systems are becoming increasingly complex, making thorough analysis a daunting task.
Add advanced DRM and obfuscation technologies into the mix, and the challenge grows exponentially.&lt;/p&gt;
&lt;p&gt;In this presentation, we’ll explore the development of a Windows user-space emulation framework designed to tackle these complexities head-on.
We’ll discuss how emulation can be a powerful tool for analyzing and overcoming the obstacles posed by intricate software and robust DRM protections.
You’ll gain insights into the technical aspects of building an emulation layer and learn how this approach benefits both security researchers and DRM analysts.
If you’ve ever wondered how to “fake it” in a world full of complex protections, this talk will show you how emulation can be your secret weapon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A journey through KiUserExceptionDispatcher</title>
      <link>https://momo5502.com/posts/2024-09-07-a-journey-through-kiuserexceptiondispatcher/</link>
      <pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2024-09-07-a-journey-through-kiuserexceptiondispatcher/</guid>
      <description>&lt;p&gt;I am currently working on an emulation environment similar to &lt;a href=&#34;https://qiling.io/&#34;&gt;Qiling&lt;/a&gt;.
Unlike Qiling, it emulates the entire user-space, not just the target application.&lt;/p&gt;
&lt;p&gt;As Qiling reimplements all APIs (kernel32, vcruntime, &amp;hellip;) outside the emulator, it gains a lot of speed (e.g. by not needing to run all the ntdll code during startup), while sacrificing stability (reimplementing all APIs can be error prone) and introducing a whole lot of work.&lt;/p&gt;
&lt;p&gt;My emulator draws the line on syscall level. So instead of reimplementing all APIs, it loads all Windows DLLs and simply provides syscall implementations outside the emulator. This might be slower, but drastically reduces the amount of work. By using C++ instead of Python, I hope I can make up for the speed loss (I will do some performance measurements soon to see whether that is really the case :D).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Analyzing modern DRMs</title>
      <link>https://momo5502.com/posts/2024-06-10-analyzing-modern-drms/</link>
      <pubDate>Mon, 10 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2024-06-10-analyzing-modern-drms/</guid>
      <description>&lt;h3 id=&#34;guest-lecture-at-ruhr-universität-bochum-in-german&#34;&gt;Guest lecture at Ruhr-Universität Bochum (in german)&lt;/h3&gt;
&lt;p&gt;Moderne Kopierschutzsysteme sind heutzutage so fortschrittlich, dass klassisches Reverse Engineering bei deren Analyse oftmals an seine Grenzen stößt.
Zur effektiven Untersuchung dieser Schutzmechanismen ist daher neues spezialisiertes Tooling erforderlich.&lt;/p&gt;
&lt;p&gt;Dieser Vortrag gibt einen Einblick in Qiling, ein Emulations-Framework und Grundlagen zu Hypervisorn, die dabei helfen, diese komplexen Systeme erfolgreich zu analysieren und zu überwinden.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/AEvpYgzDATA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bypassing Denuvo in Hogwarts Legacy</title>
      <link>https://momo5502.com/posts/2024-03-31-bypassing-denuvo-in-hogwarts-legacy/</link>
      <pubDate>Sun, 31 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2024-03-31-bypassing-denuvo-in-hogwarts-legacy/</guid>
      <description>&lt;p&gt;When I announced my Black Ops 3 integrity bypass, someone commented that my research was not impressive and I should try analyzing Denuvo instead.&lt;/p&gt;
&lt;p&gt;That kinda stuck with me, so I did what everyone would do and spent the last 5 months of my free time reverse engineering and bypassing the Denuvo DRM in Hogwarts Legacy.&lt;/p&gt;
&lt;p&gt;I am obviously not as skilled and experienced as EMPRESS, who managed to do it within days, but that&amp;rsquo;s ok 😃&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse Engineering Integrity Checks in Black Ops 3</title>
      <link>https://momo5502.com/posts/2022-11-17-reverse-engineering-integrity-checks-in-black-ops-3/</link>
      <pubDate>Thu, 17 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2022-11-17-reverse-engineering-integrity-checks-in-black-ops-3/</guid>
      <description>&lt;p&gt;Call of Duty: Black Ops 3 is protected by a DRM that, among other things, protects the integrity of the game&amp;rsquo;s code at runtime.&lt;br&gt;
Reverse engineering those integrity checks has been a personal goal I had for a long time.
In this post I&amp;rsquo;m going to describe my process of achieving exactly that, so let&amp;rsquo;s dive in.&lt;/p&gt;
&lt;h1 id=&#34;disclaimer&#34;&gt;Disclaimer&lt;/h1&gt;
&lt;p&gt;Just a little disclaimer here. The goal of this post is not to encourage piracy. Creating pirated copies is possible without bypassing the integrity checks and has long been done.
Neither do I want to encourage cheating or hacking. In fact, the game has a lot of unpatched security vulnerabilities, which make it almost unplayable.
Therefore, I hope this post opens up the possibility to get these patched.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Detecting Hypervisor-assisted Hooking</title>
      <link>https://momo5502.com/posts/2022-05-02-detecting-hypervisor-assisted-hooking/</link>
      <pubDate>Mon, 02 May 2022 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2022-05-02-detecting-hypervisor-assisted-hooking/</guid>
      <description>&lt;p&gt;I recently started to experiment with hypervisors and their use for bypassing anti-cheat or anti-tampering systems.&lt;/p&gt;
&lt;p&gt;This post will describe the concept of hypervisor-assisted hooking and a few simple approaches to detect such hooks.&lt;/p&gt;
&lt;h2 id=&#34;what-is-a-hypervisor&#34;&gt;What is a hypervisor?&lt;/h2&gt;
&lt;p&gt;In short: A hypervisor allows to run virtual machines with hardware acceleration.&lt;/p&gt;
&lt;p&gt;The concept of hypervisors in general is a huge topic, but for this post, all that depth doesn&amp;rsquo;t really matter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google CTF 2019 - JIT</title>
      <link>https://momo5502.com/posts/2019-06-27-google-ctf-2019-jit/</link>
      <pubDate>Thu, 27 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2019-06-27-google-ctf-2019-jit/</guid>
      <description>&lt;p&gt;Thanks to Rektinator and TwistedFate for helping me solve this challenge.&lt;/p&gt;
&lt;p&gt;JIT was one of Google&amp;rsquo;s pwnable challenges. It implements an artificial assembly language, which gets jit-compiled into x64 assembly.&lt;/p&gt;
&lt;p&gt;An example program looks like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;MOV(A, 10)
STR(A, 1)
LDR(A, 2)
SUM()
JMP(2)
RET()
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It supports basic instructions to move, add and subtract, jump and compare values.&lt;/p&gt;
&lt;p&gt;Two files were given: compiler.c and FancyJIT.java&lt;/p&gt;
&lt;p&gt;The c file implements the jit-compilation by translating each indiviual instruction into the corresponding x64 assembly instruction and storing everything in an executable buffer. The c file itself lacks many security checks which would potentially enable a whole bunch of attack vectors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>9os - Nyan Cat &#39;Operating System&#39;</title>
      <link>https://momo5502.com/posts/2017-12-25-9os-nyan-cat-operating-system/</link>
      <pubDate>Mon, 25 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2017-12-25-9os-nyan-cat-operating-system/</guid>
      <description>&lt;p&gt;For our graduation-party at school two years ago, a friend of mine, &lt;a href=&#34;https://github.com/Olrik1&#34;&gt;Olrik&lt;/a&gt;, and I decided to play the &lt;a href=&#34;https://www.youtube.com/watch?v=QH2-TGUlwu4&#34;&gt;Nyan Cat&lt;/a&gt; theme on all PCs at school.&lt;/p&gt;
&lt;p&gt;With the name 9os, we started writing the entire project using 16bit x86 assembly.&lt;/p&gt;
&lt;p&gt;The task was to draw the rainbow behind the cat, then the cat itself, play the music and in the end draw the stars.&lt;/p&gt;
&lt;p&gt;Drawing the rainbow was pretty simple, as it consists only of a few stripes that need to be drawn at alternating heights and colors. Staying in protected mode allowed us to use BIOS interrupts to render the data to screen using &lt;a href=&#34;http://jlp.freeservers.com/mode13h/&#34;&gt;mode 13h&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Harpoon - Yet another ARP posioning tool</title>
      <link>https://momo5502.com/posts/2017-12-16-harpoon-yet-another-arp-posioning-tool/</link>
      <pubDate>Sat, 16 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2017-12-16-harpoon-yet-another-arp-posioning-tool/</guid>
      <description>&lt;p&gt;After having started to use libraries like &lt;a href=&#34;http://www.tcpdump.org/&#34;&gt;libpcap&lt;/a&gt; or &lt;a href=&#34;https://reqrypt.org/windivert.html&#34;&gt;WinDivert&lt;/a&gt;, I got curious about low-level networking protocols like Ethernet, IP, ICMP, ARP, TCP or UDP. Especially the Address Resolution Protocol (ARP) fascinated me, as I have previously used tools like &lt;a href=&#34;https://ettercap.github.io/ettercap/&#34;&gt;Ettercap&lt;/a&gt; or &lt;a href=&#34;http://www.oxid.it/cain.html&#34;&gt;Cain &amp;amp; Abel&lt;/a&gt; to experiment with Man-in-the-middle attacks using ARP poisoning, however, I did not know how ARP poisoning worked in detail.&lt;/p&gt;
&lt;p&gt;Basically, using an ARP request, you can request the MAC address of a particular host behind a local IPv4 address. You will then receive an ARP response containing the MAC address from that host.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Game Hacking reinvented? - A COD Exploit</title>
      <link>https://momo5502.com/posts/2017-12-14-game-hacking-reinvented-a-poc-cod-hack/</link>
      <pubDate>Thu, 14 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://momo5502.com/posts/2017-12-14-game-hacking-reinvented-a-poc-cod-hack/</guid>
      <description>&lt;p&gt;A few years ago, I became aware of a security issue in most Call of Duty games. Although I did not discover it myself, I thought it might be interesting to see what it could be used for.&lt;/p&gt;
&lt;p&gt;Without going into detail, this security issue allows users playing a Call of Duty match to cause a buffer overflow on the host&amp;rsquo;s system inside a stack-allocated buffer within the game&amp;rsquo;s network handling. In consquence, this allows full remote code execution!&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
