<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ghidra on 万屋猫Labs</title><link>https://yn-labs.com/tags/ghidra/</link><description>Recent content in Ghidra on 万屋猫Labs</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 13 Jul 2026 10:00:00 +0900</lastBuildDate><atom:link href="https://yn-labs.com/tags/ghidra/index.xml" rel="self" type="application/rss+xml"/><item><title>KalmarCTF 2026 0racle Writeup — Heaven's Gate と自己書き換えコードを剥がして FNV-1a を総当りする</title><link>https://yn-labs.com/writeups/ctf/kalmarctf-2026-0racle-heavens-gate/</link><pubDate>Mon, 13 Jul 2026 10:00:00 +0900</pubDate><guid>https://yn-labs.com/writeups/ctf/kalmarctf-2026-0racle-heavens-gate/</guid><description>&lt;h2 id="概要"&gt;概要&lt;/h2&gt;
&lt;p&gt;KalmarCTF 2026 の Rev 問題「0racle」（123pts）。Free Pascal / Lazarus 製の Windows PE32 GUI アプリケーションで、テーマは「Oracle of Delphi」。正しい入力を与えると &amp;ldquo;The gods are pleased&amp;rdquo; と表示される。&lt;strong&gt;フラグは入力そのもの（40文字）&lt;/strong&gt; で、正解を逆算するのがゴールだ。&lt;/p&gt;
&lt;p&gt;一見ただの「入力チェック」問題だが、検証ロジックにたどり着くまでに &lt;strong&gt;XOR エンコード → 自己書き換えコード → Heaven&amp;rsquo;s Gate（32bit→64bit 切替）&lt;/strong&gt; という3枚の殻が被さっている。1枚ずつ剥がしていく。&lt;/p&gt;
&lt;h2 id="解析"&gt;解析&lt;/h2&gt;
&lt;h3 id="step-1-xor-エンコードされた文字列を剥がす"&gt;Step 1: XOR エンコードされた文字列を剥がす&lt;/h3&gt;
&lt;p&gt;バイナリ内の文字列は XOR &lt;code&gt;0x57&lt;/code&gt; でエンコードされている。デコードすると UI メッセージが出てくる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Speak your truth and i shall convene with the gods on your behalf!&amp;quot;&lt;/code&gt; — 入力プロンプト&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;I feel a bit woozy, what were you saying?&amp;quot;&lt;/code&gt; — 不正解&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;The gods are pleased and commend your insight.&amp;quot;&lt;/code&gt; — &lt;strong&gt;正解メッセージ&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正解メッセージの参照元をたどると、検証の入口が見える。&lt;/p&gt;</description></item></channel></rss>