<?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>Android on Wuyukwi's Notebook</title><link>https://wuyukwi.duckdns.org/tags/android/</link><description>Recent content in Android on Wuyukwi's Notebook</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Thu, 05 Feb 2026 14:15:44 +0900</lastBuildDate><atom:link href="https://wuyukwi.duckdns.org/tags/android/index.xml" rel="self" type="application/rss+xml"/><item><title>🧠 AndroidビルドでPlayFabのSecretKeyが丸見えだった話と、ビルド時に自動変換する対策</title><link>https://wuyukwi.duckdns.org/posts/zenn-6817fe00d739b4/</link><pubDate>Thu, 05 Feb 2026 14:15:44 +0900</pubDate><guid>https://wuyukwi.duckdns.org/posts/zenn-6817fe00d739b4/</guid><description>&lt;blockquote&gt;
&lt;p&gt;📌 &lt;em&gt;この記事は &lt;a href="https://zenn.dev/wuyukwi/articles/6817fe00d739b4"&gt;Zenn&lt;/a&gt; に投稿した内容のアーカイブです。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="はじめに"&gt;はじめに&lt;/h3&gt;
&lt;p&gt;PlayFab を使ったプロジェクトで、&lt;br&gt;
&lt;code&gt;TitleId&lt;/code&gt; や &lt;code&gt;DeveloperSecretKey&lt;/code&gt; をどう管理するかは、最初に一度は悩むポイントだと思います。&lt;/p&gt;
&lt;p&gt;自分も最初は深く考えずに、&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const string TitleId = &amp;quot;XXXX&amp;quot;;
const string DeveloperSecretKey = &amp;quot;YYYY&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;のようにコードに直接書いていました。&lt;/p&gt;
&lt;p&gt;ところが Android ビルド後に apk を確認してみると、&lt;br&gt;
&lt;code&gt;strings&lt;/code&gt; コマンドで &lt;strong&gt;平文のままキーが抜ける&lt;/strong&gt; ことに気づき、&lt;br&gt;
「これはさすがにまずいな……」となったのが今回のきっかけです。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="問題点apk-内に平文で残る"&gt;問題点：apk 内に平文で残る&lt;/h3&gt;
&lt;p&gt;C# のコードに直接書いた文字列は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;IL2CPP でも&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;難読化をしていても&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最終的に &lt;strong&gt;文字列リテラルとして apk 内に残ります&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;つまり、&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;strings app.apk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;を叩くだけで、TitleId や SecretKey が見えてしまう状態でした。&lt;/p&gt;
&lt;p&gt;もちろん「完全に隠す」ことは不可能ですが、&lt;br&gt;
&lt;strong&gt;平文で置いておくのはリスクが高すぎる&lt;/strong&gt; と判断しました。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="方針コードには平文を置かない"&gt;方針：コードには平文を置かない&lt;/h3&gt;
&lt;p&gt;今回の方針はシンプルです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ソースコード内に &lt;strong&gt;平文のキーを一切書かない&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ビルド時に Editor 側で変換・生成する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ランタイムでは最小限の復号処理だけ行う&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;いわゆる「秘匿」というより、&lt;br&gt;
&lt;strong&gt;apk を覗かれたときに即バレしない状態を作る&lt;/strong&gt; のが目的です。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="実装概要"&gt;実装概要&lt;/h3&gt;
&lt;p&gt;実装は以下の流れにしました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Editor フォルダ内&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>