Resolve eight nested README links from their owning directory. Preserve the shared README/website inventory contract by registering Malayalam with an explicitly untranslated catalog and the existing visible, noindex English fallback. Regenerate the shared website navigation and catalog references. Existing parsed translations remain unchanged. Validation: docs check, full website check (401 HTML pages, 27790 local references, 19 tests), all 19 generated Malayalam fallback pages, and two source reviews. No Malayalam website translation or browser layout claim. Fixes #4821
329 lines
18 KiB
HTML
329 lines
18 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Reverse Engineering Case Studies — REA</title>
|
|
<meta
|
|
name="description"
|
|
content="Follow REA investigations through code, figures and demos: an Android authenticator, DX-Ball, Notion, TH04 and a DownUnderCTF flag checker."
|
|
/>
|
|
<!-- website:sharing:start -->
|
|
<!-- prettier-ignore -->
|
|
<link rel="canonical" href="https://rea.tools/showcase/" />
|
|
<!-- website:languages:start -->
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="en" href="https://rea.tools/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="zh-CN" href="https://rea.tools/zh-CN/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="zh-TW" href="https://rea.tools/zh-TW/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="ja" href="https://rea.tools/ja/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="ko" href="https://rea.tools/ko/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="tr" href="https://rea.tools/tr/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="ru" href="https://rea.tools/ru/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="vi" href="https://rea.tools/vi/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="th" href="https://rea.tools/th/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="de" href="https://rea.tools/de/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="es" href="https://rea.tools/es/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="fr" href="https://rea.tools/fr/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="uk" href="https://rea.tools/uk/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="pl" href="https://rea.tools/pl/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="pt-BR" href="https://rea.tools/pt-BR/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="ar" href="https://rea.tools/ar/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="fa" href="https://rea.tools/fa/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="id" href="https://rea.tools/id/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="it" href="https://rea.tools/it/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="el" href="https://rea.tools/el/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="ml" href="https://rea.tools/ml/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<link rel="alternate" hreflang="x-default" href="https://rea.tools/showcase/" />
|
|
<!-- website:languages:end -->
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:type" content="website" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:site_name" content="REA" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:title" content="Reverse Engineering Case Studies — REA" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:description" content="Follow REA investigations through code, figures and demos: an Android authenticator, DX-Ball, Notion, TH04 and a DownUnderCTF flag checker." />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:url" content="https://rea.tools/showcase/" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:image" content="https://rea.tools/assets/social-card.png" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:image:type" content="image/png" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:image:width" content="1200" />
|
|
<!-- prettier-ignore -->
|
|
<meta property="og:image:height" content="630" />
|
|
<!-- prettier-ignore -->
|
|
<meta
|
|
property="og:image:alt"
|
|
content="REA — Find out how software works. Reverse engineering with your coding agent."
|
|
/>
|
|
<!-- prettier-ignore -->
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<!-- prettier-ignore -->
|
|
<meta name="twitter:title" content="Reverse Engineering Case Studies — REA" />
|
|
<!-- prettier-ignore -->
|
|
<meta name="twitter:description" content="Follow REA investigations through code, figures and demos: an Android authenticator, DX-Ball, Notion, TH04 and a DownUnderCTF flag checker." />
|
|
<!-- prettier-ignore -->
|
|
<meta name="twitter:image" content="https://rea.tools/assets/social-card.png" />
|
|
<!-- prettier-ignore -->
|
|
<meta
|
|
name="twitter:image:alt"
|
|
content="REA — Find out how software works. Reverse engineering with your coding agent."
|
|
/>
|
|
<!-- website:sharing:end -->
|
|
<!-- website:theme:start -->
|
|
<meta name="theme-color" content="#ffffff" />
|
|
<!-- Apply the saved theme before styles load, to avoid a flash on navigation. -->
|
|
<script src="../assets/theme.js"></script>
|
|
<!-- website:theme:end -->
|
|
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml" />
|
|
<link rel="stylesheet" href="../assets/styles.css" />
|
|
<script src="../assets/main.js" defer></script>
|
|
</head>
|
|
<body id="top">
|
|
<a class="skip-link" href="#main">Skip to content</a>
|
|
<!-- website:header:start -->
|
|
<!-- prettier-ignore -->
|
|
<header class="site-header">
|
|
<div class="container header-inner">
|
|
<a class="brand" href="../" aria-label="REA home"
|
|
><span class="brand-name">REA</span
|
|
><span class="brand-caption" data-i18n-skip>Reverse Engineer Anything</span></a
|
|
>
|
|
<nav class="navigation" aria-label="Main navigation">
|
|
<a href="../get-started/" class="nav-start">Get started</a>
|
|
<a href="../showcase/" aria-current="page">Showcases</a>
|
|
<a href="../blog/">Blog</a>
|
|
<a href="../guides/">Guides</a>
|
|
<a href="../faq/">FAQ</a>
|
|
<a href="../contributors/">Contributors</a>
|
|
</nav>
|
|
<div class="header-social">
|
|
<details class="language-picker" data-i18n-skip><summary><span aria-hidden="true">文 / A</span> <span>English</span></summary><nav aria-label="English"><a href="../showcase/" lang="en" dir="ltr" data-language="en" aria-current="true">English</a><a href="../zh-CN/showcase/" lang="zh-CN" dir="ltr" data-language="zh-CN">简体中文</a><a href="../zh-TW/showcase/" lang="zh-TW" dir="ltr" data-language="zh-TW">繁體中文</a><a href="../ja/showcase/" lang="ja" dir="ltr" data-language="ja">日本語</a><a href="../ko/showcase/" lang="ko" dir="ltr" data-language="ko">한국어</a><a href="../tr/showcase/" lang="tr" dir="ltr" data-language="tr">Türkçe</a><a href="../ru/showcase/" lang="ru" dir="ltr" data-language="ru">Русский</a><a href="../vi/showcase/" lang="vi" dir="ltr" data-language="vi">Tiếng Việt</a><a href="../th/showcase/" lang="th" dir="ltr" data-language="th">ไทย</a><a href="../de/showcase/" lang="de" dir="ltr" data-language="de">Deutsch</a><a href="../es/showcase/" lang="es" dir="ltr" data-language="es">Español</a><a href="../fr/showcase/" lang="fr" dir="ltr" data-language="fr">Français</a><a href="../uk/showcase/" lang="uk" dir="ltr" data-language="uk">Українська</a><a href="../pl/showcase/" lang="pl" dir="ltr" data-language="pl">Polski</a><a href="../pt-BR/showcase/" lang="pt-BR" dir="ltr" data-language="pt-BR">Português (Brasil)</a><a href="../ar/showcase/" lang="ar" dir="rtl" data-language="ar">العربية</a><a href="../fa/showcase/" lang="fa" dir="rtl" data-language="fa">فارسی</a><a href="../id/showcase/" lang="id" dir="ltr" data-language="id">Bahasa Indonesia</a><a href="../it/showcase/" lang="it" dir="ltr" data-language="it">Italiano</a><a href="../el/showcase/" lang="el" dir="ltr" data-language="el">Ελληνικά</a><a href="../ml/showcase/" lang="ml" dir="ltr" data-language="ml">മലയാളം</a></nav></details>
|
|
<button class="theme-toggle" type="button" data-theme-toggle hidden>
|
|
<svg class="theme-moon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
<path d="M20.9 13a9 9 0 0 1-9.9-9.9A9 9 0 1 0 20.9 13Z" />
|
|
</svg>
|
|
<svg class="theme-sun" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true" focusable="false">
|
|
<circle cx="12" cy="12" r="4" />
|
|
<path d="M12 2v2m0 16v2M2 12h2m16 0h2M4.93 4.93l1.42 1.42m11.3 11.3 1.42 1.42M4.93 19.07l1.42-1.42m11.3-11.3 1.42-1.42" />
|
|
</svg>
|
|
</button>
|
|
<a
|
|
class="nav-github"
|
|
href="https://github.com/morluto/rea"
|
|
aria-label="REA on GitHub"
|
|
title="REA on GitHub"
|
|
>
|
|
<svg
|
|
width="22"
|
|
height="22"
|
|
viewBox="0 0 16 16"
|
|
aria-hidden="true"
|
|
focusable="false"
|
|
>
|
|
<path
|
|
fill="currentColor"
|
|
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82a7.65 7.65 0 0 1 2-.27c.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"
|
|
/>
|
|
</svg>
|
|
<span class="nav-github-count" hidden aria-hidden="true"></span>
|
|
</a>
|
|
<a
|
|
class="nav-discord"
|
|
href="https://discord.gg/GkcryMnJDM"
|
|
aria-label="Join REA on Discord"
|
|
title="Join REA on Discord"
|
|
>
|
|
<svg
|
|
width="22"
|
|
height="22"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
focusable="false"
|
|
>
|
|
<path
|
|
fill="currentColor"
|
|
d="M20.317 4.3698a19.7913 19.7913 0 0 0-4.8851-1.5152.0741.0741 0 0 0-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 0 0-.0785-.037 19.7363 19.7363 0 0 0-4.8852 1.515.0699.0699 0 0 0-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 0 0 .0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 0 0 .0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 0 0-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 0 1-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 0 1 .0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 0 1 .0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 0 1-.0066.1276 12.2986 12.2986 0 0 1-1.873.8914.0766.0766 0 0 0-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 0 0 .0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 0 0 .0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 0 0-.0312-.0286ZM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189Zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"
|
|
/>
|
|
</svg>
|
|
</a>
|
|
<a
|
|
class="nav-x"
|
|
href="https://x.com/reatools"
|
|
aria-label="Follow REA on X"
|
|
title="Follow REA on X"
|
|
>
|
|
<svg
|
|
width="18"
|
|
height="18"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
focusable="false"
|
|
>
|
|
<path
|
|
fill="currentColor"
|
|
d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"
|
|
/>
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<!-- website:header:end -->
|
|
<main id="main" class="container">
|
|
<div class="page-heading">
|
|
<p class="breadcrumb"><a href="../">Home</a> / Showcases</p>
|
|
<h1>REA case studies.</h1>
|
|
<p class="lede">
|
|
Android, games, Electron and a CTF challenge, with code, figures and
|
|
checked results.
|
|
</p>
|
|
</div>
|
|
<div class="guide-index">
|
|
<section class="guide-entry">
|
|
<p class="eyebrow">Android · APK analysis</p>
|
|
<div>
|
|
<h2>How an authenticator generates a login code</h2>
|
|
<p>
|
|
Find Aegis's six-digit code calculation in its released APK. Trace
|
|
the generating methods with REA, then move a demo clock to see why
|
|
the code changes every 30 seconds.
|
|
</p>
|
|
<div class="guide-route">
|
|
<span>APK</span> <b aria-hidden="true">→</b>
|
|
<span>Generating code</span> <b aria-hidden="true">→</b>
|
|
<span>Recovered rule</span> <b aria-hidden="true">→</b>
|
|
<span>Adjustable clock</span>
|
|
</div>
|
|
<a class="text-link" href="aegis/">Read the Android case study</a>
|
|
</div>
|
|
</section>
|
|
<section class="guide-entry">
|
|
<p class="eyebrow">CTF · Native analysis</p>
|
|
<div>
|
|
<h2>Solve a CTF flag checker</h2>
|
|
<p>
|
|
Inspect an easy DownUnderCTF challenge with REA. Find its checking
|
|
functions, turn masks and sums into equations, then verify the
|
|
solved flag with the original program.
|
|
</p>
|
|
<div class="guide-route">
|
|
<span>Binary</span> <b aria-hidden="true">→</b>
|
|
<span>Checking code</span> <b aria-hidden="true">→</b>
|
|
<span>Equations</span> <b aria-hidden="true">→</b>
|
|
<span>Correct!</span>
|
|
</div>
|
|
<a class="text-link" href="ctf/">Read the CTF case study</a>
|
|
</div>
|
|
</section>
|
|
<section class="guide-entry">
|
|
<p class="eyebrow">Native · Reconstruction</p>
|
|
<div>
|
|
<h2>DX-Ball's sound-pan calculation</h2>
|
|
<p>
|
|
Recover a sound-pan calculation from a 1996 Windows game. REA's
|
|
instructions, caller references and numeric constants lead to a
|
|
small C function, checked against the original behavior and all 63
|
|
compiled bytes.
|
|
</p>
|
|
<div class="guide-route">
|
|
<span>Executable</span> <b aria-hidden="true">→</b>
|
|
<span>REA findings</span> <b aria-hidden="true">→</b>
|
|
<span>Recovered C</span> <b aria-hidden="true">→</b>
|
|
<span>Validation</span>
|
|
</div>
|
|
<a class="text-link" href="dx-ball/">Read the DX-Ball case study</a>
|
|
</div>
|
|
</section>
|
|
<section class="guide-entry">
|
|
<p class="eyebrow">Electron · Feature tracing</p>
|
|
<div>
|
|
<h2>How Notion copies text and HTML</h2>
|
|
<p>
|
|
Trace a page-facing API through Notion's packaged JavaScript.
|
|
Follow its IPC wrappers to the system clipboard, then see how a
|
|
small HTML marker keeps rich block data connected to a copy.
|
|
</p>
|
|
<div class="guide-route">
|
|
<span>Packaged app</span> <b aria-hidden="true">→</b>
|
|
<span>Exposed API</span> <b aria-hidden="true">→</b>
|
|
<span>IPC wrappers</span> <b aria-hidden="true">→</b>
|
|
<span>Clipboard</span>
|
|
</div>
|
|
<a class="text-link" href="notion/">Read the Notion case study</a>
|
|
</div>
|
|
</section>
|
|
<section class="guide-entry">
|
|
<p class="eyebrow">PC-98 DOS · Reconstruction</p>
|
|
<div>
|
|
<h2>How TH04 aims a ring of bullets</h2>
|
|
<p>
|
|
Inspect the original 16-bit angle helper with REA. Match its
|
|
multiply, divide and coordinate operations to readable C++, then
|
|
see how they produce a ring aimed at the player.
|
|
</p>
|
|
<div class="guide-route">
|
|
<span>Original DOS code</span> <b aria-hidden="true">→</b>
|
|
<span>REA instructions</span> <b aria-hidden="true">→</b>
|
|
<span>Angle calculation</span> <b aria-hidden="true">→</b>
|
|
<span>Bullet ring</span>
|
|
</div>
|
|
<a class="text-link" href="th04/">Read the TH04 case study</a>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
<section class="article-section">
|
|
<h2>Step-by-step guides</h2>
|
|
<p>
|
|
The guides walk through a native calculation, an Electron export and a
|
|
browser request. Each starts with a prompt and a concrete target.
|
|
</p>
|
|
<a class="text-link" href="../guides/">Read the guides</a>
|
|
</section>
|
|
</main>
|
|
<!-- website:footer:start -->
|
|
<!-- prettier-ignore -->
|
|
<footer class="site-footer">
|
|
<div class="container footer-inner">
|
|
<p>REA · Reverse Engineer Anything</p>
|
|
<div class="footer-links">
|
|
<a href="../contributors/">Contributors</a
|
|
><a href="https://github.com/morluto/rea">Source</a
|
|
><a href="https://github.com/morluto/rea/blob/main/LICENSE">MIT license</a
|
|
><a href="https://discord.gg/GkcryMnJDM">Join the community</a
|
|
><a href="https://x.com/reatools">Follow us on X</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
<p class="sr-only" id="copy-status" role="status" aria-live="polite"></p>
|
|
<a class="back-to-top" href="#top" aria-label="Back to top">
|
|
<span aria-hidden="true">↑</span> Top
|
|
</a>
|
|
<!-- website:footer:end -->
|
|
</body>
|
|
</html>
|