<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Obfuscation on Qtnes</title><link>http://qtnes.com/tags/obfuscation/</link><description>Recent content in Obfuscation on Qtnes</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 15 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://qtnes.com/tags/obfuscation/index.xml" rel="self" type="application/rss+xml"/><item><title>3 - Smoke: Bypassing StringFog and Decoding a Custom String Cipher</title><link>http://qtnes.com/posts/3---smoke---bypassing-stringfog-and-decoding-a-custom-string-cipher/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>http://qtnes.com/posts/3---smoke---bypassing-stringfog-and-decoding-a-custom-string-cipher/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Smoke was a StringFog challenge. StringFog is an open-source Android string obfuscation tool that transforms every string literal in the bytecode into an encrypted hex payload, decoded on demand by a runtime method injected into the class. The goal is to make static analysis significantly harder: decompiling the APK produces no human-readable strings, only opaque calls like &lt;code&gt;AbstractC0006a5.o(&amp;quot;e30385842152b38cc3ab85&amp;quot;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The challenge used a custom variant of StringFog with its own cipher. The goal was to identify the encryption algorithm, port it to Python, and bulk-decrypt all string payloads in the decompiled source tree to find the flag.&lt;/p&gt;</description></item></channel></rss>