<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>grit8086 · research on grit8086</title><link>https://grit8086.github.io/posts/</link><description>Recent content in grit8086 · research on grit8086</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 03 Aug 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://grit8086.github.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Computer Architecture for Reverse Engineers and Malware Developers</title><link>https://grit8086.github.io/posts/computer-architecture/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/computer-architecture/</guid><description>&lt;h1 id="computer-architecture-for-reverse-engineers-and-malware-developers"&gt;Computer Architecture for Reverse Engineers and Malware Developers&lt;/h1&gt;
&lt;p&gt;Before you can break a program you have to know where it lives and how it runs.&lt;/p&gt;
&lt;p&gt;We start with memory, because the CPU spends most of its life waiting on it. How storage is layered from registers down to disk. Why DRAM is slow. What cache is actually for. How virtual memory hands every process a private view of the machine and enforces it in hardware. Then the CPU itself, what it does with an instruction and which registers you need to recognise. Then the stack, where the first two meet.&lt;/p&gt;</description></item><item><title>The PE File Format, Condensed: Structure, Headers, Imports &amp; Relocations</title><link>https://grit8086.github.io/posts/pe-file-format/</link><pubDate>Wed, 29 Jul 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/pe-file-format/</guid><description>&lt;h1 id="pe-file-format"&gt;PE File Format&lt;/h1&gt;
&lt;p&gt;Hello today we&amp;rsquo;re going to talk about PE file format, these are my notes while reading &lt;a href="https://0xrick.github.io/win-internals/pe1/" class="external" target="_blank" rel="noopener noreferrer"&gt;0xrick&lt;/a&gt;
&amp;rsquo;s blog about PE file format. All credit goes to him, I only expanded my research &amp;amp; added visualizations and added explanations for the concepts and terminologies that isn&amp;rsquo;t so familiar to me.&lt;/p&gt;
&lt;p&gt;PE stands for Portable Executable, a file format for executables used in Windows OS. It is based on the COFF file format. Dynamic link libraries (&lt;strong&gt;.dll&lt;/strong&gt;), kernel modules (&lt;strong&gt;.sys&lt;/strong&gt;), and control panel applications (&lt;strong&gt;.cpl&lt;/strong&gt;) are also considered PE files.&lt;/p&gt;</description></item><item><title>Arcana: Curated List of Useful Offensive Tradecraft Resources</title><link>https://grit8086.github.io/posts/arcana/</link><pubDate>Sat, 25 Jul 2026 14:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/arcana/</guid><description>&lt;h1 id="arcana--curated-list-of-useful-offensive-tradecraft-resources"&gt;Arcana – Curated List of Useful Offensive Tradecraft Resources&lt;/h1&gt;
&lt;h2 id="low-level-languages"&gt;Low-Level Languages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.learn-c.org/" class="external" target="_blank" rel="noopener noreferrer"&gt;C&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="low-level-concepts"&gt;Low-Level Concepts&lt;/h2&gt;
&lt;p&gt;Build core knowledge around system internals, cryptography, and debugging.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Obfuscation, encryption, decryption, and common algorithms&lt;/li&gt;
&lt;li&gt;Learn to use debuggers (e.g., x64dbg)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="windows-internals"&gt;Windows Internals&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://anteiku.fun/papers/an-introduction-to-modern-malware-development-for-red-teams/02_portable_executables/" class="external" target="_blank" rel="noopener noreferrer"&gt;Introduction to Malware Development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=aNEqC-U5tHM&amp;amp;t=527s" class="external" target="_blank" rel="noopener noreferrer"&gt;cr0w – Processes, Threads &amp;amp; Handles&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download &lt;a href="https://empyreal96.github.io/nt-info-depot/Windows-Internals-PDFs/Windows%20System%20Internals%207e%20Part%201.pdf" class="external" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Windows Internals, Part 1&lt;/strong&gt;&lt;/a&gt;
 and use it as a reference whenever you want to dive deeper into a topic you&amp;rsquo;re currently learning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="project-ideas"&gt;Project Ideas&lt;/h3&gt;
&lt;p&gt;Try to replicate a malware behavior and ask:&lt;/p&gt;</description></item><item><title>x86-64 Assembly, Condensed: Easy Notes &amp; References for Learning Assembly</title><link>https://grit8086.github.io/posts/condensed-assembly/</link><pubDate>Sat, 25 Jul 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/condensed-assembly/</guid><description>&lt;h1 id="condensed-assembly"&gt;Condensed Assembly&lt;/h1&gt;
&lt;p&gt;Notes and materials adapted from OpenSecurity&amp;rsquo;s x86-64 assembly course, reorganized here in text form since it&amp;rsquo;s easier for me to recall this way.
An easy to absorb reference for understanding x86-64 assembly.&lt;/p&gt;
&lt;h1 id="numerical-systems"&gt;Numerical Systems&lt;/h1&gt;
&lt;h2 id="decimal"&gt;Decimal&lt;/h2&gt;
&lt;p&gt;A decimal number system is a base-10 system:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-plaintext" data-lang="plaintext"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;0 1 2 3 4 5 6 7 8 9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="binary"&gt;Binary&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;Bi&amp;rdquo; means two, it&amp;rsquo;s a base-2 system. &lt;strong&gt;0&lt;/strong&gt; represents off, &lt;strong&gt;1&lt;/strong&gt; is on. It&amp;rsquo;s the language computer hardware directly understands.&lt;/p&gt;</description></item><item><title>C, Condensed: Easy Notes &amp; References for Learning C.</title><link>https://grit8086.github.io/posts/condensed-c/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/condensed-c/</guid><description>&lt;h1 id="condensed-c"&gt;Condensed C&lt;/h1&gt;
&lt;p&gt;Notes and materials adapted from Code Academy &amp;amp; learn-c, reorganized here in text form since it&amp;rsquo;s easier for me to recall this way.&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;C is a low level language that allows you to directly interact with the CPU and memory, that&amp;rsquo;s why it&amp;rsquo;s mainly used for developing kernels, malware, OS, and etc.&lt;/p&gt;
&lt;h2 id="fundamentals"&gt;Fundamentals&lt;/h2&gt;
&lt;p&gt;Below is a basic hello world:&lt;/p&gt;
&lt;div class="highlight" data-lang="c"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Single line comment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Multi
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; line
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; comment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt; // Includes the C standard I/O library so we can use printf()&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// main() is the main entry point of the program, recognized by C compilers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="c1"&gt;// It can&amp;#39;t be Main(), only main(). Code inside the braces runs first.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Prints &amp;#34;Hello World&amp;#34; on the console
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Hello World!&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Prints &amp;#34;Hello World&amp;#34; then a new line
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Hello World&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Equivalent to a tab
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Return code that tells your OS the program ran successfully
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In order to run this, we have to compile it using a GCC compiler (it translates C code into an executable program that your computer can run, turning human readable code into machine code that the processor can understand).&lt;/p&gt;</description></item><item><title>Unauthenticated Indirect Object Reference in the Department of Defense</title><link>https://grit8086.github.io/posts/bac-dod/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/bac-dod/</guid><description>&lt;h1 id="i-found-an-unauthenticated-indirect-object-reference-vulnerability-in-the-department-of-defense"&gt;I Found an Unauthenticated Indirect Object Reference Vulnerability in the Department of Defense&lt;/h1&gt;
&lt;p&gt;While hunting on the Department of Defense bug bounty program, I came across a simple but impactful vulnerability, a broken access control bug that allowed anyone to view files they didn&amp;rsquo;t own, without even being logged in. Here&amp;rsquo;s how it went.&lt;/p&gt;
&lt;h3 id="what-is-idor"&gt;What is IDOR?&lt;/h3&gt;
&lt;p&gt;IDOR, or Insecure Direct Object Reference, is a type of broken access control vulnerability where an attacker can access or modify resources that belong to another user, simply by changing a reference to that resource, usually something visible like an ID in a URL or request parameter.Think of it like a hospital that gives each patient a folder numbered by their ID. You are patient 112, so your records are in folder 112. But nothing is stopping you from walking over and opening folder 113, which belongs to someone else entirely.&lt;/p&gt;</description></item><item><title>Finding a Serial Key in a Binary and Patching It</title><link>https://grit8086.github.io/posts/crackme-1/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/crackme-1/</guid><description>&lt;h1 id="finding-a-serial-key-in-a-binary-and-patching-it"&gt;Finding a Serial Key in a Binary and Patching It&lt;/h1&gt;
&lt;p&gt;Today we’ll analyze a simple crackme from &lt;strong&gt;crackinglessons.com – Crackme #1&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="objective"&gt;Objective&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Identify the correct serial key.&lt;/li&gt;
&lt;li&gt;Patch the binary so it always displays the &lt;strong&gt;“Congrats!”&lt;/strong&gt; message when the &lt;em&gt;Check&lt;/em&gt; button is clicked.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="understanding-the-program-behavior"&gt;Understanding the Program Behavior&lt;/h1&gt;
&lt;p&gt;When we run the program, it asks:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Please enter the serial key”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If we enter an incorrect value, a message box appears:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Wrong serial key. Try again.”&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Writing a program that monitor keystrokes</title><link>https://grit8086.github.io/posts/keyloggers/</link><pubDate>Mon, 19 Jan 2026 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/keyloggers/</guid><description>&lt;h1 id="intro"&gt;Intro&lt;/h1&gt;
&lt;p&gt;I’ve been messing around with malware development recently, and as part of my second warm-up project, I decided to write a simple keylogger. The goal here is to understand &lt;strong&gt;how userland keyloggers work on Windows&lt;/strong&gt;, without getting overwhelmed by low-level internals.&lt;/p&gt;
&lt;h1 id="what-is-a-keylogger"&gt;What is a keylogger?&lt;/h1&gt;
&lt;p&gt;A keylogger is a type of malware designed to &lt;strong&gt;record keystrokes&lt;/strong&gt; in order to steal sensitive information such as passwords, credit card numbers, and private messages.&lt;/p&gt;</description></item><item><title>SYBAU: You Are Not Tracking Anyone With an IP Address</title><link>https://grit8086.github.io/posts/sybau/</link><pubDate>Thu, 18 Dec 2025 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/sybau/</guid><description>&lt;h1 id="kinda-random-article-why"&gt;Kinda random article, why?&lt;/h1&gt;
&lt;p&gt;I keep hearing a ton of misinformation about how you can supposedly use an IP address to track a person. I’ve also been a bit rusty on networking fundamentals, so this is a good excuse to refresh them.&lt;/p&gt;
&lt;p&gt;Learning by teaching.&lt;/p&gt;
&lt;h1 id="what-in-the-world-is-an-ip-address"&gt;What in the world is an IP address?&lt;/h1&gt;
&lt;p&gt;An IP address is a &lt;strong&gt;logical addressing system&lt;/strong&gt; used to identify a network interface so data can be routed across networks.&lt;/p&gt;</description></item><item><title>CVE-2025-10767</title><link>https://grit8086.github.io/posts/cve-2025-10767/</link><pubDate>Fri, 05 Dec 2025 00:00:00 +0800</pubDate><guid>https://grit8086.github.io/posts/cve-2025-10767/</guid><description>&lt;h1 id="whats-up"&gt;What&amp;rsquo;s up?&lt;/h1&gt;
&lt;p&gt;Lately I’ve been digging into vulnerability research - reading writeups and watching videos about adversarial toolkits that turned out to be vulnerable themselves. Shout-out to my friend Chebuya for the insights on this topic.&lt;/p&gt;
&lt;h1 id="what-made-me-delve-into-this-topic"&gt;What made me delve into this topic?&lt;/h1&gt;
&lt;p&gt;Most vulnerability researchers, hackers, and threat actors look for bugs in enterprise software, apps, and the like. But what if we look for vulnerabilities in the tools researchers use? IDA, BloodHound, Havoc, Sliver, Cobalt Strike - it’s ironic, but these tools can also contain exploitable mistakes.&lt;/p&gt;</description></item></channel></rss>