<?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>Ctf on Hanh Pham's Blog</title><link>https://hanhpp.github.io/tags/ctf/</link><description>Recent content in Ctf on Hanh Pham's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 29 Aug 2026 15:00:00 +0700</lastBuildDate><atom:link href="https://hanhpp.github.io/tags/ctf/index.xml" rel="self" type="application/rss+xml"/><item><title>How I Started Learning Reverse Engineering (and What I Wish I Knew First)</title><link>https://hanhpp.github.io/posts/how-i-started-learning-reverse-engineering/</link><pubDate>Sat, 29 Aug 2026 15:00:00 +0700</pubDate><guid>https://hanhpp.github.io/posts/how-i-started-learning-reverse-engineering/</guid><description>I spent my first month with Ghidra staring at assembly I didn&amp;rsquo;t understand, convinced I was too stupid for this. Here&amp;rsquo;s the honest version of how I got from &amp;lsquo;what is a register&amp;rsquo; to solving CTF reversing challenges, and the mistakes that cost me weeks.</description></item><item><title>Anti-Debugging Tricks: When the Binary Fights Back</title><link>https://hanhpp.github.io/posts/anti-debugging-tricks/</link><pubDate>Thu, 27 Aug 2026 11:00:00 +0700</pubDate><guid>https://hanhpp.github.io/posts/anti-debugging-tricks/</guid><description>Some binaries detect that you&amp;rsquo;re debugging them and crash, change behavior, or hide the flag. This post covers the common anti-debugging techniques and how to bypass them.</description></item><item><title>Custom VMs in CTF: When the Binary Speaks Its Own Language</title><link>https://hanhpp.github.io/posts/custom-vms-in-ctf/</link><pubDate>Tue, 25 Aug 2026 10:00:00 +0700</pubDate><guid>https://hanhpp.github.io/posts/custom-vms-in-ctf/</guid><description>Some CTF reversing challenges hide the flag behind a custom virtual machine: a program that interprets its own bytecode. This post shows you how to spot them, reverse the instruction set, and write a solver.</description></item><item><title>Your First Crackme: A Walkthrough from strings to Flag</title><link>https://hanhpp.github.io/posts/your-first-crackme-walkthrough/</link><pubDate>Sat, 22 Aug 2026 14:00:00 +0700</pubDate><guid>https://hanhpp.github.io/posts/your-first-crackme-walkthrough/</guid><description>A crackme is a small binary that asks for a password and checks your input. This post walks through solving one, from downloading the binary to extracting the flag, with every tool click explained so you can follow along.</description></item><item><title>Ghidra in 30 Minutes: Reading Assembly Without Hating It</title><link>https://hanhpp.github.io/posts/ghidra-in-30-minutes/</link><pubDate>Tue, 18 Aug 2026 11:00:00 +0700</pubDate><guid>https://hanhpp.github.io/posts/ghidra-in-30-minutes/</guid><description>Ghidra&amp;rsquo;s decompiler turns machine code into something that looks like C. But the output is full of strange variable names, weird casts, and functions that look nothing like what you&amp;rsquo;d write. Here&amp;rsquo;s how to read it anyway.</description></item></channel></rss>