<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[绀漓の锟斤拷]]></title><description><![CDATA[锟斤拷烫烫烫]]></description><link>https://blog.sevtinge.com</link><image><url>https://avatars.githubusercontent.com/u/89193494?v=4</url><title>绀漓の锟斤拷</title><link>https://blog.sevtinge.com</link></image><generator>Shiro (https://github.com/Innei/Shiro)</generator><lastBuildDate>Thu, 08 Oct 2026 01:51:22 GMT</lastBuildDate><atom:link href="https://blog.sevtinge.com/feed" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Oct 2026 01:51:22 GMT</pubDate><language><![CDATA[zh-CN]]></language><item><title><![CDATA[Phigros 存档解密]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/49tixcens5j0ld9wvm.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/4o4z0dejqko6kv7hb2.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/2d46nnwhkvzu26zln1.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/8q8ob6crxkbn8fxb77.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/heqlpbyxmhqab40koj.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/tjwxpxovqxicncpkvm.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/02g4neq4sg8b6prmgq.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/1nevgj2c4z4y47ap50.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/m9r644ishom2wfgaax.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/shjj4xuwrq7atl35ff.jpg"/><div><div><pre class=""><code class="">样本信息：
文件名 Phigros_4.0.0.apks
样本来源 Google Play
包名 com.PigeonGames.Phigros
版本 4.0.0(155)
SHA-256 b62d3d1a6fe9b0a834b47222b730c13d250ebe421dfc72cee3a1a47281ca7f76
</code></pre>
<h1 id="">〇、我真的是穷怕了</h1><p>Phigros，我从小玩到大的音游，也在最近迎来了主线最终章。</p><p>讲真，这么一款陪了自己好几年的游戏突然完结了，心里总是有点空空的。</p><p>依稀记得很久之前，Data 不够用之时，我都是直接去改游戏存档，来给自己拿足够解锁歌曲的 Data。</p><p>（现在我真的没有改了，没事打歌攒出来的 10 个多 GB 的 Data 够我用到天荒地老了）</p><p>时过境迁，现在的存档怎么样了呢？</p><p>也许该去探望一下这位老朋友了。</p>
<h1 id="">一、旧地重游，物是人非</h1><p>Phigros 作为一款 Unity 开发的游戏，根据 <a href="https://docs.unity3d.com/6000.7/Documentation/ScriptReference/PlayerPrefs.html">Unity 官方文档</a> 的介绍，Android 端默认位置是在 <code>/data/data/&lt;包名&gt;/shared_prefs/&lt;包名&gt;.v2.playerprefs.xml</code>。</p><p>回到这个熟悉的地方，果然这位老朋友还在那里静静的等着我。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/49tixcens5j0ld9wvm.jpg" alt="/data/data/com.PigeonGames.Phigros/shared_prefs/com.PigeonGames.Phigros.v2.playerprefs.xml" height="569" width="1440"/></p><p>满心欢喜地打开这位老朋友，眼前的景象却让我感到陌生：</p><pre class="language-xml lang-xml"><code class="language-xml lang-xml">&lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;utf-8&#x27; standalone=&#x27;yes&#x27; ?&gt;
&lt;map&gt;
    &lt;string name=&quot;RAxss7MtEi68v2JOObh1mg%3D%3D&quot;&gt;84nt4CDG41fhF5EXHkVpow%3D%3D&lt;/string&gt;
    &lt;string name=&quot;xaHiFItVgoS6CBFNHTR2%2BA%3D%3D&quot;&gt;84nt4CDG41fhF5EXHkVpow%3D%3D&lt;/string&gt;
    &lt;string name=&quot;Cgw4SttKwRFIjb68TF8z5EC%2FLwVpK8KjKmjcm9T3M78%3D&quot;&gt;%2Bpyf2R4Qt4zJE6UG3UUydn0ltWNFpXzVDKoi8cnw5gWJGqNfIK4bx8bwl8iZ4y%2Fe&lt;/string&gt;
    &lt;string name=&quot;RF7IYRhPKOOGn7Qea60lKexh7u7Uqrzkqc1fw%2FiLFYE%3D&quot;&gt;Nj0hx6%2B2z%2BpWeORt16R4VMepzdKiDJCP%2FQavEe2O%2BHTm2IFSUZugJjoTcLQL4XnT&lt;/string&gt;
...
</code></pre>
<p>很明显，这是加密了。</p>
<h1 id="">二、见其心性，窥见其心</h1><p>Phigros 是一款本地游戏，存档的加解密肯定是在本地进行。</p><p>但我之前只听说过这是一款 Unity 游戏，详细的技术细节我从未了解。</p><p>没办法，发挥一下老手艺吧——开拆！</p>
<h2 id="">分析包体特征与反编译</h2><p><code>apks</code> 文件内含多个 <code>apk</code> 分包，我决定先在 <code>split_config.arm64_v8a.apk</code> 里面找找线索。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/4o4z0dejqko6kv7hb2.jpg" alt="Phigros_4.0.0.apks"/></p><p>等下，为什么不是 <code>base.apk</code>？你是不是开了？</p><p>通常 Unity IL2CPP 的 native 部分会以 <code>.so</code> 的形式存在。对于 Google Play 的 App Bundle 构建，ABI 对应的 native library 往往会被拆分到 ABI split APK 中；这份样本的 <code>base.apk</code> 没有 lib 目录，因此需要到 <code>split_config.arm64_v8a.apk</code> 中寻找。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/2d46nnwhkvzu26zln1.jpg" alt="可见 base.apk 内无 lib 目录"/></p><p>这就是老一辈艺术家的自信。</p><p>打开 <code>/split_config.arm64_v8a.apk/lib/arm64-v8a/</code> 目录，我们能看到其中包含 <code>libil2cpp.so</code> 与 <code>libunity.so</code> 。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/8q8ob6crxkbn8fxb77.jpg" alt="/split_config.arm64_v8a.apk/lib/arm64-v8a/"/></p><p>这是很典型的 Unity IL2CPP 特征。</p><p>这让我想起了一位老朋友—— <a href="https://github.com/Perfare/Il2CppDumper">Il2CppDumper</a> 。</p><p>把在 <code>/assets/bin/Data/Managed/Metadata/</code> 下的 <code>global-metadata.dat</code> 一起喂给 Il2CppDumper。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/heqlpbyxmhqab40koj.png" alt="Il2CppDumper"/></p><p>我们能得到 <code>script.json</code> 和 <code>il2cpp.h</code> 这两个文件。</p><p>然后启动我们的另一位老朋友 IDA，打开 <code>libil2cpp.so</code>。</p><p>等待 IDA 分析完成后，我们在 IDA 内执行 Il2CppDumper 自带的 <code>ida_with_struct_py3.py</code> 脚本，选择 <code>script.json</code> 和 <code>il2cpp.h</code> 来恢复符号。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/tjwxpxovqxicncpkvm.png" alt="ida_with_struct_py3.py"/></p>
<h2 id="-sharedpreference-">寻找 <code>SharedPreference</code> 保存逻辑</h2><p>既然是保存存档，那么可以试着搜索关键字 <code>save</code>。</p><p>很快，<code>SaveManagement</code> 进入了视野。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/02g4neq4sg8b6prmgq.png" alt="SaveManagement"/></p><p>先打开最容易理解的 <code>SaveManagement$$SaveString</code>，按 <code>F5</code> 看看。地址是 <code>0x1CA8D70</code>。把自动生成的类初始化代码略过去，真正做事的只有三句：</p><pre class="language-cpp lang-cpp"><code class="language-cpp lang-cpp">v5 = SaveManagement__Encrypt(keyName, ...);
v7 = SaveManagement__Encrypt(value, ...);
UnityEngine_PlayerPrefs__SetString(v5, v7, 0);
</code></pre>
<p>这佐证了我们打开存档时，看到的 key 和 value 都被加密的事实。</p><p>这里的 <code>SetString</code> 是 Unity 的 <code>PlayerPrefs</code> 接口；在 Android 上，相关数据会落到应用自己的 <code>shared_prefs</code> XML 中。整份 XML 的标签还是明文，并不是整个文件被 AES 一把梭。</p><p>接下来顺着 <code>SaveManagement__Encrypt</code> 点进去。</p>
<h2 id="-aes">一路跟到 AES，但密钥在哪？</h2><p><code>SaveManagement.Encrypt(string)</code> 的地址是 <strong><code>0x1CA81B8</code></strong>。</p><p>IDA 生成的伪代码比较长，主要是 IL2CPP 的对象分配、虚函数调用和释放资源。节约时间，只看关键的这几句——它们在函数的不同位置，中间省掉了对象创建和资源清理：</p><pre class="language-cpp lang-cpp"><code class="language-cpp lang-cpp">aes = v4-&gt;static_fields-&gt;aes;
System_Security_Cryptography_CryptoStream___ctor(v8, (System_IO_Stream_o *)v3, v6, 1, 0);
v18 = System_Convert__ToBase64String(v17, 0);
</code></pre>
<p>其中 <code>v6</code> 是通过 <code>aes</code> 的 <code>_20_CreateEncryptor</code> 得到的。<code>str</code> 经 <code>StreamWriter</code> 写入 <code>v8</code>，密文字节从内存流取出成为 <code>v17</code>，最后转成 Base64。</p><p>原来 XML 里的那些长字符串并不是直接显示 AES 的二进制密文。游戏先把字符串写进 <code>CryptoStream</code>，再把得到的密文字节转成 Base64，最后才写入 <code>PlayerPrefs</code>。</p><p>知道了存档用了 AES，那当然要去找找 Key 和 IV 了。但是这里的 <code>aes</code> 已经存在于 <code>SaveManagement_TypeInfo-&gt;static_fields</code>，<code>Encrypt</code> 只是取出来使用。密钥不是在这个函数里生成的。</p><p>静态字段是什么时候赋值的？</p><p>看看 <code>SaveManagement$$.cctor</code>。这个名字里的 <code>cctor</code> 是静态构造方法，地址 <code>0x1CAA238</code>。这里先创建了两个 AES 对象：</p><pre class="language-cpp lang-cpp"><code class="language-cpp lang-cpp">SaveManagement_TypeInfo-&gt;static_fields-&gt;aes = System_Security_Cryptography_Aes__Create(0);
v1 = System_Security_Cryptography_Aes__Create(0);
</code></pre>
<p>第二个随后赋给 <code>aes2</code>。刚才 <code>Encrypt(string)</code> 取的是第一个 <code>aes</code>，所以只追它。</p><p>还有两句关键调用，分别位于 Key 和 IV 的赋值前：</p><pre class="language-cpp lang-cpp"><code class="language-cpp lang-cpp">ASCII = BinaryUtils__LoopReverseXor(v6, 0);
ASCII = BinaryUtils__LoopReverseXor(v8, 0);
</code></pre>
<p>在各自前面，<code>v6</code> 来自 <code>StringLiteral_7107</code>，<code>v8</code> 来自 <code>StringLiteral_7291</code>；变换后的 <code>ASCII</code> 分别被传入 <code>aes-&gt;klass-&gt;vtable._12_set_Key.methodPtr</code> 和 <code>v7-&gt;klass-&gt;vtable._10_set_IV.methodPtr</code>。</p><p>那么 <code>StringLiteral_7107</code> 和 <code>StringLiteral_7291</code> 又是什么？</p><p>查 Il2CppDumper 给出的 <code>stringliteral.json</code>，再与 APK 内 <code>global-metadata.dat</code> 对照，得到：</p><pre class=""><code class="">StringLiteral_7107 → Phigros.enc.j57vnvr8wlZssXM7eWpa
StringLiteral_7291 → Q4zHm5vUEMJJ3iS9
</code></pre>
<p>哦我的上帝，这不就是 Key 和 IV 吗！</p><p>我知道你很急，但是你先别急——</p><p>这两串还不能直接塞进 AES。</p><p>静态构造方法在 <code>ASCII.GetBytes</code> 之后又调用了 <code>BinaryUtils__LoopReverseXor</code>。</p><p>只在 metadata 中搜到字符串，最多能证明它存在；跟着 IDA 里的赋值走到 <code>set_Key</code> / <code>set_IV</code>，才能说明它到底怎么被使用。</p>
<h2 id="loopreversexor-"><code>LoopReverseXor</code> 在干什么</h2><p>在 IDA 中进入 <code>BinaryUtils$$LoopReverseXor</code>，按 <code>F5</code> 获取 Pseudocode。</p><p>函数里有一长串移位和掩码，看着有点绕。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/1nevgj2c4z4y47ap50.png" alt="BinaryUtils$$LoopReverseXor"/></p><p>先不管那些细节，盯住 F5 循环中的关键部分：</p><pre class="language-cpp lang-cpp"><code class="language-cpp lang-cpp">v6 = (2 * v2-&gt;m_Items[v5]) &amp; 0xFFAA | (v2-&gt;m_Items[v5] &gt;&gt; 1) &amp; 0x55;
v7 = (4 * v6) &amp; 0xFFFFFFCF | (v6 &gt;&gt; 2) &amp; 0x33;
data-&gt;m_Items[v5] = v2-&gt;m_Items[v5 + 1] ^ (((unsigned __int8)v7 &gt;&gt; 4) | (16 * v7));
++v5;
v8 = v2-&gt;max_length - 1;
v9 = (__int64)(max_length + 1) &lt; v8;
LODWORD(max_length) = v2-&gt;max_length;
</code></pre>
<p>从 <code>v2-&gt;m_Items[v5]</code> 与 <code>v2-&gt;m_Items[v5 + 1]</code> 的读取，以及最后写入 <code>data-&gt;m_Items[v5]</code>，可以对照当前字节与下一个字节的作用。函数末尾还有单独处理最后一个字节的分支。</p><p>它不是把整串字符倒过来，而是把<strong>每个字节内部的八个 bit 倒序</strong>，再和原料中的下一个字节 XOR。最后一个位置则绕回原料的第一个字节。</p><p>拿开头两个字节算一下：</p><p><code>P</code> 是 <code>0x50</code>，二进制为 <code>01010000</code>；</p><p>bit 倒序得到 <code>00001010</code>，也就是 <code>0x0a</code>。</p><p>下一个字符 <code>h</code> 是 <code>0x68</code>。</p><p>所以最终 Key 的第一字节为 <code>0x68 XOR 0x0a = 0x62</code>。</p><p>对两段原料全部执行，就得到真正传给 AES 的参数：</p><pre class=""><code class="">Key
627ff1942185e011c815e81e639b9a00001c766b826c29bd96578589f19a6fd6

IV
be56167f83da3befeff81861a5c5f3cd
</code></pre>
<h2 id="">往回看读取路径</h2><p>Key 和 IV 都有了，让我们回到 <code>SaveManagement$$Decrypt</code>（<code>0x1CA9258</code>）。</p><p>它先用 <code>Convert.FromBase64String</code> 把文本还原为密文字节，再用同一个静态 <code>aes</code> 创建解密器，经 <code>CryptoStream</code> 和 <code>StreamReader</code> 读回字符串。</p><p><code>SaveManagement$$LoadString</code>（<code>0x1CA9C5C</code>）则把这一步和 <code>PlayerPrefs</code> 接起来：</p><pre class="language-cpp lang-cpp"><code class="language-cpp lang-cpp">v5 = SaveManagement__Encrypt(keyName, (const MethodInfo *)defaultValue);
if ( UnityEngine_PlayerPrefs__HasKey(v5, 0) )
{
  String_60782072 = UnityEngine_PlayerPrefs__GetString_60782072(v5, 0);
  if ( !SaveManagement_TypeInfo-&gt;_2.cctor_finished )
    j_il2cpp_runtime_class_init_0(SaveManagement_TypeInfo);
  result = SaveManagement__Decrypt(String_60782072, v7);
  if ( !result )
    return v3;
}
</code></pre>
<p>这里还有一个兼容旧数据的分支：找不到 AES 键时会试 <code>EncryptDES(keyName)</code>，如果读到旧值，再 <code>DecryptDES</code> 并用当前 AES 写回。这应该就是旧 DES 格式的键值迁移为当前 AES 格式的逻辑。</p>
<h2 id="">实践才是检验真理的唯一标准</h2><p>我们已经获得了完整解密流程。</p><p>从 XML 拿到一个字符串，解密顺序是：</p><pre class=""><code class="">URL 编码反转义
  → Base64 解码
  → AES-256-CBC 解密
  → PKCS#7 去填充
  → UTF-8 读回字符串
</code></pre>
<p>那么我们按刚才得到的内容，写个 Python 脚本，验证一下结果吧。</p><p>为了方便脚本对内容进行加密，我顺便保存了原内容。</p><pre class="language-xml lang-xml"><code class="language-xml lang-xml">&lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;utf-8&#x27; standalone=&#x27;yes&#x27; ?&gt;
&lt;map phigros_research_count=&quot;1654&quot;&gt;
    &lt;string name=&quot;1keyzhanshi2&quot; phigros_research_v1=&quot;WyJlR0ZJYVVaSmRGWm5iMU0yUTBKR1RraFVVaklsTWtKQkpUTkVKVE5FIiwiT0RSdWREUkRSRWMwTVdab1JqVkZXRWhyVm5CdmR5VXpSQ1V6UkE9PSIsIjAzMTI1N2NhNTk3ZDk3MmIxNWU0MTNhODA3YmIyY2UwMmEwYzYwNTYyNmI4OTBjYjhhOTFiMTIzY2UyNTM3YTEiXQ==&quot;&gt;1&lt;/string&gt;
    &lt;string name=&quot;GetBack.CAP3.0.Record.IN&quot; phigros_research_v1=&quot;WyJVa1kzU1ZsU2FGQkxUMDlIYmpkUlpXRTJNR3hMWlhob04zVTNWWEZ5ZW10eFl6Rm1keVV5Um1sTVJsbEZKVE5FIiwiVG1vd2FIZzJKVEpDTW5vbE1rSndWMlZQVW5ReE5sSTBWazFsY0hwa1MybEVTa05RSlRKR1VXRjJSV1V5VHlVeVFraFViVEpKUmxOVlduVm5TbXB2VkdOTVVVdzBXRzVVIiwiNWU2YWU1ZDdiYzMwNDIzOGU4M2RkY2NjM2Q1M2E4OTkxNDIzODcxNWE0ZjAxY2E3OTI0NzUyNzhiMDI1Y2M0MCJd&quot;&gt;{&quot;s&quot;:996886,&quot;a&quot;:99.6539535522461,&quot;c&quot;:1}&lt;/string&gt;                        &lt;!--这一行就是 Get Back IN--&gt;
    &lt;string name=&quot;MARENOL.LeaF.0.Record.EZ&quot; phigros_research_v1=&quot;WyJRMmQzTkZOMGRFdDNVa1pKYW1JMk9GUkdPSG8xUXpKb1NGSk1Ta2REYkNVeVFrTTBOV3BFTTFnNFYyMDBKVE5FIiwiVVRsQllsaHhiRlpqYzBaYVozUllNblpTU0ROU2JFdHpUMUpJZVc5ek5FRTRNRVpqY0dNNFJXdE9TVmxQWkVSdVFXaHZSRUZFY0dOdk5ISlVOWFp3ZVE9PSIsIjVlMzM4MzZmMzdlMWY0OGViM2Q5Y2JkODIyN2FhNmE4OTNiMzExNTc1ZjA3ZDczZTdkMWY3ODA1MGU0ZDkwNDciXQ==&quot;&gt;{&quot;s&quot;:996684,&quot;a&quot;:99.63157653808594,&quot;c&quot;:1}&lt;/string&gt;
    &lt;string name=&quot;magicballballCollectionTextOpened&quot; phigros_research_v1=&quot;WyJjbTlEYkUweWFIQm1WMWRVTUhSMWNVeFVNR1pUZVZoRVNFbDNOWFpxTUc5MU1HZFBUV0pCWVV4dVlYbGlVVnBSWTFWTU1FMWtNMGN4WVZOQlQwY3djZz09IiwiT0RSdWREUkRSRWMwTVdab1JqVkZXRWhyVm5CdmR5VXpSQ1V6UkE9PSIsImY1OTk3NGM2ZDY2MzI1ZTdlMjBkMTYwN2E4MjExOGU4NGYxMzZiMjM1Y2JkNDg1ZmRhNDBjYTg0NmZiODhiNzIiXQ==&quot;&gt;1&lt;/string&gt;
...
</code></pre>
<p>可以看到我 Get Back IN 的成绩是 996886 分，ACC 是 99.6539535522461。</p><p>这和我游戏内的成绩一致。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/m9r644ishom2wfgaax.jpg" alt="Get Back IN 的成绩与 ACC，可见为 996886 与 99.65%"/></p><p>让我们把 Get Back IN 的成绩改成 1000000 分，ACC 改成 100.0，并试着加密：</p><pre class="language-xml lang-xml"><code class="language-xml lang-xml">&lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;utf-8&#x27; standalone=&#x27;yes&#x27; ?&gt;
&lt;map&gt;
    &lt;string name=&quot;xaHiFItVgoS6CBFNHTR2%2BA%3D%3D&quot;&gt;84nt4CDG41fhF5EXHkVpow%3D%3D&lt;/string&gt;
    &lt;string name=&quot;RF7IYRhPKOOGn7Qea60lKexh7u7Uqrzkqc1fw%2FiLFYE%3D&quot;&gt;kqfwO1uMaucCSyOs3f6pHGjYkZEn9aTrYVErEemEy30%3D&lt;/string&gt;                        &lt;!--这一行就是 Get Back IN--&gt;
    &lt;string name=&quot;Cgw4SttKwRFIjb68TF8z5C2hHRLJGCl%2BC45jD3X8Wm4%3D&quot;&gt;Q9AbXqlVcsFZgtX2vRH3RlKsORHyos4A80Fcpc8EkNIYOdDnAhoDADpco4rT5vpy&lt;/string&gt;
    &lt;string name=&quot;roClM2hpfWWT0tuqLT0fSyXDHIw5vj0ou0gOMbAaLnaybQZQcUL0Md3G1aSAOG0r&quot;&gt;84nt4CDG41fhF5EXHkVpow%3D%3D&lt;/string&gt;
...
</code></pre>
<p>嗯，好像没什么问题。</p><p>导入游戏看看（导入前记得停止游戏，并检查应用数据文件的所有者、权限和安全上下文）：</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/shjj4xuwrq7atl35ff.jpg" alt="Get Back IN 的成绩与 ACC 均已成功修改"/></p>
<h1 id="">三、有福同享，有难同当</h1><p>Python 脚本我已开源至 GitHub，有需要的可以前往查看。</p><p><a href="https://github.com/Sevtinge/Phigros-Save-Crypto">https://github.com/Sevtinge/Phigros-Save-Crypto</a></p><p>开源出来的目的是为了一起讨论，而不是满足 yyw 的一己私欲。</p><p>爱护圈内环境，你我有责。</p><p>7 年过去了，Phigros 也迎来了完结，当年对着破破烂烂的板子打歌的音游人现在又在哪呢。</p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/tech/3#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/tech/3</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/tech/3</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sun, 27 Sep 2026 15:06:31 GMT</pubDate></item><item><title><![CDATA[纸上谈兵——有关 HyperCeiler Next 和 Remote Hook 的一些想法]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/6abm67hy10mbt29xfi.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/vuf0nd635qmnd09a0y.png"/><div><div><h1 id="">前言</h1><p>HyperCeiler，我的一个 Xposed 模块，风风雨雨已经走过了 3 年。</p><p>虽然说有一定前瞻的项目设计，以及后期的几次大大小小更改，为它续了好几次命。</p><p>但有个问题，是所有 Xposed 模块都逃不掉的——</p><p><strong>在宿主更新后，Hook 极其容易失效。</strong></p><p>对于一个 Xposed 模块而言，Hook 本身通常并不复杂（如果你在讲 HyperOS Runtime Hook 那当我没说），真正麻烦的是宿主在不断变化：类名、方法名、混淆结果，甚至项目重构，都能让之前所针对的 Hook 前功尽弃。</p><p>虽然已经出现了 DexKit 之类的反混淆与定位工具，但也是只能针对部分版本进行非常局限的匹配。</p><p>传统 Xposed 模块对此的处理方式通常是修改模块代码，重新构建 APK，然后发布一个新的模块版本。</p><p>这也就意味着一个很小的 Hook 修复，也可能需要经历：</p><pre class=""><code class="">发现问题
  ↓
逆向新宿主内容
  ↓
修改 Hook
  ↓
测试和编译
  ↓
发布新版本
  ↓
用户更新模块
</code></pre>
<p>这一漫长过程。</p><p>而 HyperCeiler 作为一个有着数百 Hook 特大项目，短时间内多次发包进行修补显然是不现实的。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/6abm67hy10mbt29xfi.png" alt="HyperCeiler 大致的 Hook 数量" height="864" width="661"/></p><p>于是我开始思考一个问题：</p><blockquote><p>如果 Hook 本身不一定要跟着 APK 一起发布呢？</p></blockquote>
<p>这是我最近游玩 Rizline 的时候突然冒出来的一个想法。</p><p>理论上，如果这套逻辑能够顺利落地，那 APK 本身将会成为一个 Hook 和配置工具，而 Hook 本身可以解耦出来。</p><p>而这，就是目前我正在考虑的 <strong>HyperCeiler Next——Remote Hook</strong>。</p>
<h1 id="-hook-">一、为什么要让 Hook 分家？</h1><p>传统的 Xposed 模块基本是：</p><pre class=""><code class="">Module.apk
 ├── Hook A
 ├── Hook B
 ├── Hook C
 ├── Hook D
 └── ...
</code></pre>
<p>在编译的那一刻，所有 Hook 都永久固定在了 APK 当中。</p><p>如果某个宿主更新导致 <code>Hook A</code> 失效，那么通常只能等待开发者修复后安装新的模块版本解决。</p><p>但实际上，很多时候变化的只是某一个版本，甚至某一个点位的实现。</p><p>如果 Hook 主体逻辑没有发生变化，只是目标类发生移动，那么为了修改这几个类名而重新发布整个模块，并不是一个十分理想和划得来的做法。</p><p>至于 CI 构建版本，对于普通用户而言风险又实在太高——我可不能保证我一个错都不犯。</p><p>更何况最近越来越多的声音在说 HyperCeiler 看起来有些臃肿，大量用不到的宿主的 Hook 也存在于模块当中（虽然可以在管理器内取消应用作用域，但是用户心里的那个满足机制并没有被激活）。</p><p>因此，可以考虑把针对每个宿主的 Hook 都拿出来并拆分：</p><pre class=""><code class="">Module.apk
 ├── Hook Loader
 ├── Hook Tools
 └── ...

Remote Hook
 ├── com.example.a (version 1)
 ├── com.example.b (version 2)
 └── ...
</code></pre>
<p>这样主程序只需要提供运行环境，而具体的适配和 Hook 则可以独立且灵活的更新。</p>
<h1 id="">二、一个最初的设想</h1><p>最简单的架构大概是</p><pre class=""><code class="">   Module.apk
       |
       | 请求当然宿主及其版本的 Hook 配置
       ↓
      API
       ↓
Hook Repository
       |
       ├── com.example.a
       |          ├── version 1
       |          ├── version 2
       |          └── ...
       ├── com.example.b
       |          ├── version 1
       |          ├── version 2
       |          └── ...
       └── ...
</code></pre>
<p>服务器根据客户端提供的信息返回所需的 Hook 功能列表。</p><p>例如客户端提供：</p><pre class="language-json lang-json"><code class="language-json lang-json">{
    &quot;moduleVersion&quot;: 100,
    &quot;androidVersion&quot;: 16,
    &quot;systemVersion&quot;: 4,
    &quot;device&quot;: &quot;xxx&quot;,
    &quot;targetPackage&quot;: &quot;com.example.a&quot;,
    &quot;targetPackageVersion&quot;: 1,
}
</code></pre>
<p>服务器返回：</p><pre class="language-json lang-json"><code class="language-json lang-json">{
    &quot;hookVersion&quot;: 12,
    &quot;minModuleVersion&quot;: 24,
    &quot;targetPackage&quot;: &quot;com.example.a&quot;,
    &quot;targetPackageVersion&quot;: 1,
    &quot;config&quot;: &quot;https://api-hyperceiler.sevtinge.com/hook/com.example.a/1/12.json&quot;,
    &quot;hook&quot;: &quot;https://api-hyperceiler.sevtinge.com/hook/com.example.a/1/12.dex&quot;,
    &quot;sha256&quot;: &quot;...&quot;,
    &quot;signature&quot;: &quot;...&quot;
}
</code></pre>
<p>然后模块验证完整性后执行即可。</p><p>这样，Hook 的更新就不一定需要等待整个 APK 的更新。</p>
<h1 id="-dex">三、为什么选择 Dex？</h1><p>Android 本身就提供 Dex 热加载机制。</p><p>传统 APK：</p><pre class=""><code class="">Module.apk
 ├── assets
 ├── lib
 ├── META-INF
 ├── res
 ├── classes.dex         ← 这里通常是 Hook 的所在位置
 ├── resources.arsc
 └── ...
</code></pre>
<p>而这种方案可以变成：</p><pre class=""><code class="">Module.apk
 ├── assets
 ├── lib
 ├── META-INF
 ├── res
 ├── classes.dex         ← 这里只留存 Runtime 和部分 Built-in Hook
 ├── resources.arsc
 └── ...

Remote Hook
 └── hook.dex
</code></pre>
<p>通过 <code>ClassLoader</code> 加载额外的 Dex 后，再由 Xposed 对目标进行 Hook。</p><p>从架构上来看，相当于：</p><pre class=""><code class="">            HyperCeiler
                 │
           Hook Runtime
                 │
       ┌─────────┴─────────┐
       │                   │
   Built-in Hook       Remote Hook
       │                   │
       └─────────┬─────────┘
                 │
             Xposed API
                 ↓
                App
</code></pre>
<p>这样，Dex 就成为了一种相对独立的 &quot;Hook 插件&quot;。</p>
<h1 id="">四、本地缓存</h1><p>光有云端下发逻辑可不太够。</p><p>如果每次启动宿主的时候都需要联网下载 Hook，显然是不现实的——这会导致宿主需要等待 Hook 下载完成才可以执行，本地配置也会随时更新，进程可能也会出现阻塞而被 Android 杀掉。</p><p>更何况按 HyperCeiler 现在的日活数据，我怕是掏空了钱包也支撑不起如此体量的下载。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/vuf0nd635qmnd09a0y.png" alt="sevtinge.com 在 2026.9.26-2026.9.27 平峰时期的请求总数"/></p><p>所以我们应当设计本地缓存机制。</p><p>本地缓存路径应处在私有目录下，目录结构可参考服务器端。</p><p>启动流程则应变为</p><pre class=""><code class="">启动
  ↓
读取本地 Hook
  ↓
验证是否可用于当前宿主
  ↓是           ↓否
加载 Hook      更新 Hook
  ↓
后台检查可用更新
</code></pre>
<p>这也就意味着大幅降低云端依赖度和请求数量，满足了离线时也可 Hook 的需求。</p>
<h1 id="">五、安全问题</h1><p>Hook 的权力特别大，可以随意更改宿主的任何可执行内容。</p><p>更何况 HyperCeiler 部分功能依赖 Root 权限，那么我们在面对安全问题时，应当更为谨慎。</p><p>动态加载远程 Dex，这意味着：</p><blockquote><p>服务器可以改变模块实际执行的代码</p></blockquote>
<p>这和普通的远程配置完全不是一个风险等级。</p><p>例如，服务器遭受远程攻击，dex 被替换，那么所有在线客户端都会被执行恶意代码。</p><p>因此，我初步构思应当在以下几个方面构建安全屏障。</p>
<h2 id="">服务器安全</h2><p>这自然是不必多说的，服务器端即使不干这些活，暴露在公网也应当做好安全防护。</p><p>此处不展开讲述技术细节。</p>
<h2 id="">服务器权限管理</h2><p>进一步考虑后，我认为 Remote Hook 的权限应当收到进一步限制。</p><p>服务器应当只能决定下发哪个配置，而不能直接执行 Hook、命令、配置。</p><p>也就是说，服务器只提供代码，而是否加载应由客户端自行决定。</p>
<h2 id="">本地下载前和下载时</h2><p>本地应当使用 https 获取内容，甚至通过自有加密方式加密内容进行联络。</p><p>为了安全，我甚至计划不采用断点续传技术，一是本身文件就不大，二是可能存在一定风险。</p>
<h2 id="">本地下载后和加载时</h2><p>本地通过 https 下载完成后，应当对下载内容进行鉴权。</p><p>SHA-256——用于确认下载文件没有发生意外变化。</p><p>数字签名——用于确认文件是由 HyperCeiler 发布，而并非第三方替换的恶意内容。攻击者完全可以把 SHA-256 也一并替换以绕过验证，所以数字签名显得格外重要。</p><p>视情况，也应加上其他验证。</p><p>确保以上内容都无误后，下发内容才允许存储和加载</p>
<h2 id="apk-">APK 安全</h2><p>之前就存在过通过修改 HyperCeiler APK 注入恶意内容的先例，在此之后 HyperCeiler 针对进行了 APK 安全改进。</p><p>但对于使用云端 Hook 方案的 HyperCeiler Next 而言，安全需要更进一步。</p><p>可能会采取 APK 加壳方式或把 Hook Runtime 全部迁移至 Native，并针对自身完整性进行云端校验。</p>
<h1 id="hyperceiler-">六、HyperCeiler 的骄傲——主动安全模式</h1><p>HyperCeiler 开创的主动安全模式也不应该在使用云端 Hook 时失效。也应当做出些许改进。</p><p>当检测到宿主发生 Crash 时，应当首先尝试回退上一个版本的 Hook，并可以自动标记此版本 Hook 存在异常。</p><p>若 Crash 持续出现，则触发主动安全模式，取消对其的 Hook。</p>
<h1 id="">七、踌躇不前</h1><p>从技术角度来说，这套方案确实可行，也有 Xposed 模块小范围的进行了测试。</p><p>但是它会引入大量新的复杂度：</p><ul><li>ClassLoader 和空加载保护</li><li>Dex 分包开发</li><li>版本匹配和同版本不同 Dex 应对</li><li>本地缓存管理</li><li>签名</li><li>网络安全和远程是否可用</li><li>Xposed API 限制</li><li>Hook 兼容性</li></ul><p>所以，它并不是简单的：</p><blockquote><p>&quot;把 Hook 改成云端下发。&quot;</p></blockquote>
<p>真正需要解决的问题是：</p><blockquote><p>如何让远程 Hook 的可靠性持平甚至超越内置 Hook。</p></blockquote>
<p>若这个问题无法解决，远程 Hook 比本地 Hook 更为脆弱，上面所说的一切都是纸上谈兵。</p>
<h1 id="0924">八、0.9.24</h1><p>若这个项目真的可以落地，一定是先做一个非常小的 PoC，而不是让它直接面向大众。</p><p>它的测试周期可能很长，HyperCeiler(Cemiuiler) 从 0.9 走向 1.0 正式公开用了 5 个月。</p><p>而 HyperCeiler Next 可能需要一年甚至更久。</p><p>在热情几乎消磨殆尽的背景下，我可能很难坚持把它做出来并公开给大众。</p><p>更何况 HyperOS 在逐渐转向 Rust+Flutter 的垃圾配置，Hook 甚至需要用到汇编，难度直线上升。</p>
<h1 id="">结语</h1><p>对于 Xposed 模块开发而言，宿主更新并不是最麻烦的事。</p><p>真正麻烦的是：</p><blockquote><p>宿主更新后，原本写死在模块里的假设可能全部失效。</p></blockquote>
<p>传统模块把所有内容全部打包在了一起，而云端 Hook 的核心思路是把它们拆开。</p><p>这样一来，模块本身就不再需要知道所有未来宿主的实现细节。</p><p>APK 所需要的，只是一个完整健全稳定的 Hook Runtime。</p><p><strong>这可以是 HyperCeiler 未来的一种架构方向，但目前也仅限于 &quot;可以是&quot;。</strong></p><p>期待一下吧，万一这个系列有续作呢。</p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/tech/2#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/tech/2</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/tech/2</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sat, 26 Sep 2026 19:44:19 GMT</pubDate></item><item><title><![CDATA[香港 Club Sim]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/2sr2yejmvyrr33nb1a.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/dywc3r6jhvrhfdgihu.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/vquvv30ndzzysfgtfs.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/5lz4jojq1fmjizm2d2.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/krolxjqzlzjooto740.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/6yzgbedbaxlr3f8dlk.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/mikwv9tqw8gx7tz4co.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/nel7iemmyoq79kwbbn.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/ygt3t0ctke0sgll4d2.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/mussrmmcaab8dcm7a2.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/nhkue43plui761238f.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/a9o96rkkw2nlx96x3a.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/er1oyh94ugtqt30ohb.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/rmkr19pi0lq13oi3fy.png"/><div><div><h2 id="">前言</h2><p>不少朋友很喜欢开港卡，备一张来自香港的SIM总是好的。</p><p>香港，世界第三大金融中心，当地国际电话区号+852，与纽约、伦敦并称为 &quot;纽伦港&quot;，静静的伫立在珠三角的东南，总人口753.42万人，是世界上人口密度最高的地区之一，人均寿命全球第一，人类发展指数全球第四。</p><p>二战之后，香港与韩国、台湾、新加坡共称为 &quot;亚洲四小龙&quot;，更成为全球最富裕、经济最发达和生活水准最高的地区之一。1997年7月1日，中国政府对香港恢复行使主权，港英政府的时代结束，香港特别行政区成立。</p><p>Club Sim是大名鼎鼎的香港电讯 (即CSL) 于2017年推出的子品牌，主打无合约、性价比高的套餐，是不少朋友的第一张+852。但因其漫游时无法主叫/被叫语音或发送短信，这张卡更适合保号和接码的朋友。</p>
<h2 id="">信息概览</h2><h3 id="kyc">KYC</h3><p>是。短信下发网页端验证或APP内验证。支持中华人民共和国往来港澳通行证。</p><h3 id="">初始成本</h3><p>HKD$50.00起。</p><h3 id="">使用成本</h3><p><strong>中国大陆</strong><br/>接收短信免费</p><p><strong>香港 (或Wi-Fi通话)</strong><br/>主叫/被叫语音HKD$28.00/月<br/>发送网内短信HKD$6.00/月+HKD$0.30/条<br/>发送网外短信HKD$6.00/月+HKD$0.60/条<br/>发送国际短信HKD$6.00/月+HKD$3.00/条<br/>接收短信免费</p><h3 id="">维护成本及规则</h3><p>最低维护成本HKD$6.00/年。<br/>每自然年内需订购过至少一个套餐，以套餐订购时间计时。</p><h3 id="">漫游信号</h3><p>中国联通4G<br/>中国电信4G</p><h3 id="">技术细节</h3><p><strong>Wi-Fi通话</strong> 支持 (香港)<br/><strong>eSIM</strong> 支持<br/><strong>eSIM转移</strong> APP内转移<br/><strong>号码长度</strong> 8<br/><strong>APP管理</strong> 支持 (Club Sim)</p>
<h2 id="">获取</h2><h3 id="sim">实体SIM</h3><ol start="1"><li><p>在香港地区任意csl / 1O1O门店或7-Eleven便利店购买Club Sim卡板；</p></li><li><p>根据监管要求，需要先进行KYC后才可正常使用，插入SIM到您的设备并启用，您会收到来自 &quot;#ClubSim&quot; 的两条KYC入口短信，进入短信提供的链接，根据提示进行KYC；</p></li><li><p>KYC提交完成后需等待审核，审核通过后方可正常使用。</p></li></ol><h3 id="esim">eSIM</h3><ol start="1"><li><p>前往 <a href="https://www.clubsim.com.hk/zh/">主頁 | Club Sim</a> ，点击右上角 &quot;登入&quot;，并在下一个页面点击 &quot;註冊&quot; 以注册您的Club Sim账户；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/2sr2yejmvyrr33nb1a.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/dywc3r6jhvrhfdgihu.png"/></p></li><li><p>选择您注册Club Sim账户的方式，按照提示完成注册流程；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/vquvv30ndzzysfgtfs.png"/></p></li><li><p>注册并认证完成后的页面如图，可个性化您的设置后，选择 &quot;現在購買新Club Sim&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/5lz4jojq1fmjizm2d2.png"/></p></li><li><p>选择 &quot;eSIM&quot;，并选择您的设备 (若您的设备不在列表中或您使用eSIM卡板，任选设备即可，此步骤仅确认您的设备支持eSIM)，之后点击 &quot;下一步&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/krolxjqzlzjooto740.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/6yzgbedbaxlr3f8dlk.png"/></p></li><li><p>Club Sim要求开卡套餐最低HKD$50.00，选择您所需要的套餐，建议选择 &quot;4.5G 無合約期 本地數據及通話服務&quot; 的 &quot;20GB 4.5G 本地數據及通話服務&quot; 服务，也可按需选择其他服务，并建议关闭 &quot;啟動每月自動續購&quot; 以防计划之外的付费，之后点击 &quot;下一步&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/mikwv9tqw8gx7tz4co.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/nel7iemmyoq79kwbbn.png"/></p></li><li><p>填写您的信息，此处 &quot;名字&quot; 与 &quot;姓氏&quot; 应填写您用于KYC的真实姓名，&quot;電郵地址&quot; 应填写您用于接收付款回执和eSIM二维码的邮箱地址，确认信息无误后付款；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/ygt3t0ctke0sgll4d2.png"/></p></li><li><p>付款后，页面将显示您的eSIM二维码，其也会同步发送至您登记的邮箱；</p></li><li><p>根据监管要求，需要先进行KYC后才可正常使用，下载eSIM到您的设备并启用，您会收到来自 &quot;#ClubSim&quot; 的两条KYC入口短信，进入短信提供的链接，根据提示进行KYC；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/mussrmmcaab8dcm7a2.png"/></p></li><li><p>KYC提交完成后需等待审核，审核通过后方可正常使用。</p></li></ol><h2 id="">维护</h2><p>您可以在 <a href="https://www.clubsim.com.hk/zh/mySimCards">我的SIM卡 | Club Sim</a> 或APP内查看您的电话号码、ICCID和套餐使用情况。APP内可管理eSIM或建立密码。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/nhkue43plui761238f.png" height="1173" width="1764"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/a9o96rkkw2nlx96x3a.jpg"/></p><p>若需最小维护成本，可购买 &quot; <a href="https://www.clubsim.com.hk/zh/smspack">短訊組合</a> &quot;。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/er1oyh94ugtqt30ohb.png"/></p><p>若需在非香港地区使用Wi-Fi通话，请开启飞行模式并关闭设备的定位服务后，使用下述代理规则或全局代理，需要香港原生IP。</p><pre class="language-YAML lang-YAML"><code class="language-YAML lang-YAML">DOMAIN,csl.prod.ondemandconnectivity.com
</code></pre>
<p>若您是Apple设备，需另行确保countryd和gs处于香港 (访问 <a href="https://gspe1-ssl.ls.apple.com/pep/gcc">https://gspe1-ssl.ls.apple.com/pep/gcc</a> ，若显示HK则gs处于香港)，可尝试下述规则以更改gs。</p><pre class="language-YAML lang-YAML"><code class="language-YAML lang-YAML">DOMAIN, gspe1-ssl.ls.apple.com
</code></pre>
<p>支持VISA、MasterCard及UnionPay的信用卡和借记卡、Alipay HK、WeChat Pay HK、八達通Octopus、Payme、支付宝、微信付款。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/rmkr19pi0lq13oi3fy.png"/></p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/sim/hk-club#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/sim/hk-club</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/sim/hk-club</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sun, 07 Jun 2026 23:27:02 GMT</pubDate></item><item><title><![CDATA[新西兰 2degrees]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/uqldo37uvelobk5cin.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/r7ifuk73pva5v0zhne.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/0bxmavghvbze1of2q1.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/ehf31zoex0jepuaf1h.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/uknyic8l96eesxwwp3.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/pyfvhp2rfcywax2wet.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/dsgfahu4xbiu6tf278.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/5etevztztsw9oj5i8d.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/afuxocao6on4g2vfwn.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/orfeopl9lcmt9e1jq2.png"/><div><div><h2 id="">前言</h2><p>新西兰，当地国际电话区号+64，位于南太平洋的岛国，以其丰富的旅游与自然资源闻名于世。拥有发达的市场经济，被认为是亚太地区最繁荣的国家之一。</p><p>2degrees，号段022，作为当地的主要运营商之一，成立于2001年，由新西兰本土投资者创立，旨在打破长期由Spark和Vodafone主导的市场垄断。</p>
<h2 id="">信息概览</h2><h3 id="kyc">KYC</h3><p>否。</p><h3 id="">初始成本</h3><p>NZD$8.00起。</p><h3 id="">使用成本</h3><p><strong>中国大陆</strong><br/>主叫语音NZD$3.59/min<br/>被叫语音NZD$1.15/min<br/>发送短信NZD$1.50/条<br/>接收短信免费<br/>或购买NZD$8.00/天的附加包，提供基于新西兰本地服务 (Monthly or 14 Day Prepay Plan) 的主叫/被叫、语音信箱、短信、1GB高速数据漫游费用倍率 (超出后限制最高速度为128Kbps)</p><p><strong>新西兰/澳大利亚 (或Wi-Fi通话)</strong><br/>主叫/被叫语音NZD$0.49/min (套餐内免费)<br/>发送/接收短信免费<br/>发送彩信NZD$0.50/条<br/>接收彩信免费</p><h3 id="">维护成本及规则</h3><p>最低维护成本NZD$10.00/365天。<br/>每365天号码存在余额变动即可。</p><h3 id="">漫游信号</h3><p>中国移动4G/5G<br/>中国联通4G</p><h3 id="">技术细节</h3><p><strong>Wi-Fi通话</strong> 支持 (无IP限制)<br/><strong>eSIM</strong> 支持<br/><strong>eSIM转移</strong> Apple Quick Transfer<br/><strong>号码长度</strong> 9<br/><strong>APP管理</strong> 支持 (2degrees NZ)</p>
<h2 id="">获取</h2><ol start="1"><li><p>前往 <a href="https://www.2degrees.nz/mobile-plans/prepay">2degrees Prepay Plans</a> ，在 &quot;Monthly plans&quot; 表下的 &quot;$8/month&quot; 计划 (或按需选择) 选择 &quot;Join now&quot;，并在接下来弹出的两个窗口中均选择 &quot;$8 to pay today&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/uqldo37uvelobk5cin.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/r7ifuk73pva5v0zhne.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/0bxmavghvbze1of2q1.png"/></p></li><li><p>填写您的邮箱，此处填写的邮箱地址将被用作您的2degrees账户和接收eSIM二维码；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/ehf31zoex0jepuaf1h.png"/></p></li><li><p>填写您的详细信息，Contact number 不做验证，并在接下来的两个单选框中选择 &quot;Select a new number&quot; (若您想要携当地号码转至2degrees，选择 &quot;Bring a number over&quot;) 和 &quot;eSIM&quot;，&quot;Refresh list&quot; 可以刷新号码列表，选择您喜欢的号码；</p><blockquote><p>注意: 此处填写的姓名若需更改，需要提交申请表格和更改证明至 <code>CreditTeam@2degrees.nz</code><br/>详情请见 <a href="https://www.2degrees.nz/help/account-and-billing/manage-account/update-your-account-details">2degrees Help</a></p></blockquote>
</li></ol><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/uknyic8l96eesxwwp3.png" height="2607" width="1921"/></p><ol start="4"><li>支付完成后等待一段时间，可能需要1小时以上，eSIM二维码和账号重置密码邮件会发送至您登记的邮箱。</li></ol><h2 id="">维护</h2><p>您可以在 <a href="https://my.2degrees.nz/login">My 2degrees</a> 或APP内登录您的2degrees账户并管理内容。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/pyfvhp2rfcywax2wet.jpg"/></p><p>建议在获得eSIM后立刻前往 <a href="https://my.2degrees.nz/mobile">Mobile - My 2degrees</a> 关闭自动续费，以免产生不必要的费用。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/dsgfahu4xbiu6tf278.png"/></p><p>也可禁用您不希望使用的服务。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/5etevztztsw9oj5i8d.png"/></p><p>每365天最少充值NZD$10.00以使号码存在余额变动。</p><p>当账户无可用计划时，建议开启Wi-Fi通话以主叫/被叫语音及发送短信，否则可能产生额外费用 (在非新西兰/澳大利亚的国家或地区收取NZD$8.00/天的费用，部分国家或地区不可用)。</p><p>Wi-Fi通话暂无IP限制，2degrees也建议在非新西兰/澳大利亚的国家或地区使用时启用Wi-Fi通话。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/afuxocao6on4g2vfwn.jpg"/></p><p>若直连无法拉起Wi-Fi Calling，可尝试关闭对蜂窝服务的代理，或添加下述规则：</p><pre class="language-YAML lang-YAML"><code class="language-YAML lang-YAML">DOMAIN-SUFFIX,epdg.ims.2degrees.net.nz
IP-CIDR,118.148.0.0/15,no-resolve
</code></pre>
<p>充值支持Visa、MasterCard及American Express的信用卡及借记卡，由CuscalPaymark提供服务。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/orfeopl9lcmt9e1jq2.png"/></p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/sim/nz-2degrees#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/sim/nz-2degrees</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/sim/nz-2degrees</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Thu, 04 Jun 2026 22:32:00 GMT</pubDate></item><item><title><![CDATA[美国 T-Mobile (Prepaid)]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/5u1fvadteir57e7a1i.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/hjvg3qqzim5phbpc15.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/frhcpose4u8uj1btsh.jpeg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/frhpj283ai7uptko0k.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/rq7v1o2m0xgou446i3.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/hvwwrc42gkuveoe5rz.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/x9ke0td01sutzy2uer.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/wsht73wzoljiwzfuqv.jpg"/><div><div><h2 id="">前言</h2><p>美国，互联网的老家，当地国际电话区号使用北美电话区号计划区号 (+1) ，按州分配3位次级区号，移动通信产业十分发达。</p><p>T-Mobile在当地市场以其低廉的价格著称。作为美国三大移动运营商之一，其历史可追溯至1994年成立的VoiceStream Wireless。2001年，德国电信旗下品牌T-Mobile正式进入美国市场，并逐步发展壮大。2013年后，T-Mobile通过 &quot;Un-carrier&quot; 战略打破传统运营商模式，以不限流量套餐、灵活资费和积极的市场竞争策略迅速扩张。2020年，T-Mobile完成与Sprint Corporation的合并，成为美国第二大移动运营商。</p><p>本文主要介绍来自T-Mobile的$3 PayGo套餐，所有价格均未含税。</p><p>2019年7月，T-Mobile将不能带来太大利润的$3 PayGo套餐转给了Ultra Mobile，现如今致电611或T-Life客服均会告知无法开通。但我们仍可利用TOS自动机制来获得此套餐。</p>
<h2 id="">信息概览</h2><h3 id="kyc">KYC</h3><p>否。</p><h3 id="">初始成本</h3><p>USD$15.00起。</p><h3 id="">使用成本</h3><p><strong>中国大陆</strong><br/>月租USD$3.00 (含30条短信或30min美国国内通话)<br/>主叫/被叫语音USD$3.59/min<br/>发送短信USD$0.50/条<br/>接收短信USD$0.10/条</p><p><strong>美国 (或Wi-Fi通话)</strong><br/>月租USD$3.00 (含30条短信或30min美国国内通话)<br/>主叫/被叫语音USD$0.25/min (套餐内免费)<br/>发送短信USD$0.25/条 (套餐内免费)<br/>接收短信USD$0.25/条 (套餐内免费)</p><h3 id="">维护成本及规则</h3><p>最低维护成本USD$3.00/90天，但仅前30天可用，最低可用维护成本USD$3.00/30天。<br/>余额低于套餐费用USD$3.00超出180天时，号码将被回收，账户将被删除。</p><h3 id="">漫游信号</h3><p>中国移动2G<br/>中国联通3G</p><h3 id="">技术细节</h3><p><strong>Wi-Fi通话</strong> 支持 (无IP限制)<br/><strong>eSIM</strong> 支持<br/><strong>eSIM转移</strong> Apple Quick Transfer或联系客服<br/><strong>号码长度</strong> 10<br/><strong>APP管理</strong> 不支持</p>
<h2 id="">获取</h2><ol start="1"><li><p>下载T-Mobile Prepaid eSIM应用并打开；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/5u1fvadteir57e7a1i.png"/></p></li><li><p>选择 &quot;Explore other plans&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/hjvg3qqzim5phbpc15.png"/></p></li><li><p>建议选择 &quot;Limited data&quot; 表下的 &quot;5GB ($15/month)&quot; 套餐，也可按需选择；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/frhcpose4u8uj1btsh.jpeg"/></p></li><li><p>输入您的邮箱、PIN和美国邮编，此处填写的邮箱地址将被用作您的T-Mobile账户；</p><blockquote><p>TIP: <code>89012</code>为免税州邮编</p></blockquote>
</li></ol><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/frhpj283ai7uptko0k.png" height="2868" width="1320"/></p><ol start="5"><li><p>确认信息并付款；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/rq7v1o2m0xgou446i3.png"/></p></li><li><p>付款成功后，若您的设备支持eSIM，将会拉起EUICC并下载到您的设备，若不支持则会发送二维码至您登记的邮箱；</p></li><li><p>在此期间漫游不可用，但可以使用Wi-Fi通话，可前往 <a href="https://prepaid.t-mobile.com/my-profile/e911Ppu-address">T-Mobile Prepaid</a> 设置e911地址后开启Wi-Fi通话；<br/>Wi-Fi通话可能会被GFW拦截，建议添加下述规则使用：</p><pre class="language-YAML lang-YAML"><code class="language-YAML lang-YAML">IP-CIDR,66.94.0.0/19,no-resolve
IP-CIDR,206.29.177.36/32,no-resolve
IP-CIDR,208.54.0.0/16,no-resolve
DOMAIN-SUFFIX,t-mobile.com
DOMAIN,epdg.epc.mnc240.mcc310.pub.3gppnetwork.org
DOMAIN,epdg.epc.mnc260.mcc310.pub.3gppnetwork.org
DOMAIN,ss.epdg.epc.mnc260.mcc310.pub.3gppnetwork.org
DOMAIN,ss.epdg.epc.geo.mnc260.mcc310.pub.3gppnetwork.org
</code></pre><p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/hvwwrc42gkuveoe5rz.jpg"/></p></li><li><p>保持账户内余额大于等于USD$3.00且小于你目前的套餐价格，静置等待120天后将会自动转为$3 PayGo套餐，若中间出现任何购买操作将会重置计时。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/x9ke0td01sutzy2uer.jpg"/></p></li></ol><h2 id="">维护</h2><p>您可以在 <a href="https://prepaid.t-mobile.com/">T-Mobile Prepaid</a> 登录您的T-Mobile账户并管理内容。</p><p>充值支持Visa、MasterCard、American Express及Discover的信用卡及借记卡。目前风控较为严格，可能会拒绝部分卡的付款。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/wsht73wzoljiwzfuqv.jpg"/></p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/sim/us-tmobile#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/sim/us-tmobile</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/sim/us-tmobile</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sat, 30 May 2026 19:00:08 GMT</pubDate></item><item><title><![CDATA[格鲁吉亚 Cellfie]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/9lj5g4hly2bhs3ds28.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/ziswcitfittrm31ofj.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/w6kykdiet5nxl2abov.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/hxi1c79lwabp2ej4g1.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/5za0oymm0noc1iy2ow.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/1e3ajn60qzkuksewvi.png"/><div><div><h2 id="">前言</h2><p>格鲁吉亚位于高加索地区，当地国际电话区号+995，连接欧洲与亚洲，自古就是丝绸之路的重要节点。苏联解体后，格鲁吉亚逐步建立现代通信体系，移动通信市场也迅速发展。</p><p>作为当地主要运营商之一的Cellfie，其前身为Beeline Georgia，最早于2003年进入格鲁吉亚市场。2022年，该公司被本土投资集团收购，并于2023年正式更名为Cellfie。</p><p>近年来，Cellfie积极推进4G、5G网络建设和数字化服务发展，成为格鲁吉亚通信行业的重要参与者之一，也见证了该国信息化与移动互联网时代的发展历程。</p><p>Cellfie提供前缀501、568、571、574、579、592和597。</p>
<h2 id="">信息概览</h2><h3 id="kyc">KYC</h3><p>是。网页端提供标准护照验证，支持照片上传或网络摄像头捕捉。由identomat提供服务。</p><h3 id="">初始成本</h3><p>GEL₾6.00起。含GEL₾1.00起的Number Price与GEL₾5.00的Tariff Price。</p><h3 id="">使用成本</h3><p><strong>中国大陆</strong><br/>主叫/被叫语音GEL₾0.60/min (主叫/被叫国际长途语音GEL₾10.00/min)<br/>发送短信GEL₾0.60/条<br/>接收短信免费<br/>数据GEL₾6.00/50MB</p><h3 id="">维护成本及规则</h3><p>最低维护成本GEL₾0.10/30天。当每月使用超过GEL₾5.00时，将会加收GEL₾0.40的附加费，用于112紧急救援服务。<br/>每90天需要号码有余额变动。自第91天起，每天将会扣除GEL₾0.50的服务费，直至余额用尽。</p><h3 id="">漫游信号</h3><p>中国移动2G<br/>中国联通3G/4G</p><h3 id="">技术细节</h3><p><strong>Wi-Fi通话</strong> 不支持<br/><strong>eSIM</strong> 支持<br/><strong>eSIM转移</strong> 联网删除旧设备上的eSIM后，在新设备上扫描原先的二维码以添加<br/><strong>号码长度</strong> 9<br/><strong>APP管理</strong> 支持 (MyCellfie)</p>
<h2 id="">获取</h2><ol start="1"><li><p>前往 <a href="https://cellfie.ge/en/nomris-yidva">Cellfie</a> 选择号码，并选择eSIM，注意非Standard号码存在附加费用；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/9lj5g4hly2bhs3ds28.png"/></p></li><li><p>选择GEL₾5.00的All Unlimited套餐；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/ziswcitfittrm31ofj.png"/></p></li><li><p>根据提示进行KYC；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/w6kykdiet5nxl2abov.png"/></p></li><li><p>KYC通过后会识别到你的身份和证件信息，并在下方填写邮箱以接收验证码和eSIM二维码；</p></li><li><p>阅读并同意TOS，建议选择不发送推广信息 (I do not want to receive promotional messages from any entity)；</p></li><li><p>付款；</p></li><li><p>付款后会获取到付款回执、eSIM二维码、LPA，eSIM信息也会同步发送到你登记的邮箱。</p></li></ol><h2 id="">维护</h2><p>您可以在 <a href="https://cellfie.ge/en/subscriber">My Cellfie</a> 找到PIN/PUK及eSIM信息。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/hxi1c79lwabp2ej4g1.png" height="1003" width="2460"/></p><p>充值支持Visa及MasterCard的信用卡和借记卡。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/5za0oymm0noc1iy2ow.png"/></p><p>若需最小维护成本，可前往 <a href="https://cellfie.ge/en/services#Additional-services">Additional Service</a> ，激活Number Maintenance，或拨打<code>*110*110#</code>。此服务每30天将扣除GEL₾0.10，当第30天余额小于GEL₾0.10时，将会等待10天再次尝试扣款，若等待10天后再次尝试扣款时余额仍不足，将会自动取消该服务。也可前往My Cellfie或拨打<code>*110*9110#</code>手动取消该服务。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/1e3ajn60qzkuksewvi.png"/></p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/sim/ge-cellfie#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/sim/ge-cellfie</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/sim/ge-cellfie</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sat, 30 May 2026 09:23:15 GMT</pubDate></item><item><title><![CDATA[英国 giffgaff]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/umsb9rosf323i75cj2.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/cjmbdjse4ttapbvjmu.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/20s6pkksodkxcvsxph.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/t8i6a9sseacy2g2q7p.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/vn6dh36h7cmue03swu.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/7utf8vrakr7mt02y7x.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/j7in6yw8fytqrprrc2.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/cjfqqou12oahiggvno.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/ns7sv553pqjt27niaj.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/wpgh1dgz036hlhu5gg.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/7quq8z02hzb6cmxzhr.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/223uc7o48kvajvf06l.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/v15dnbb162q05h0akp.jpg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/k928orll3s8rleyt2a.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/0r289vb3ls5i5obb14.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/y3ktjhxk20uvky31is.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/577xjzfvxhjrx83a6i.jpeg"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/ch6ymjt6w4jj4tlebi.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/image/tns3jybkc14awruely.png"/><div><div><h2 id="">前言</h2><p>英国，即大不列颠及北爱尔兰联合王国，当地国际电话区号+44，最有资格说英语是自己的语言的国家，对于当地的印象基本只有温带海洋性气候带来的阴冷潮湿和老牌工业城市伦敦的标志性口音。</p><p>giffgaff，是一家总部位于英国的移动虚拟网络电信运营商，成立于2009年11月25日，设有营业网点，使用O2的网络，是O2的全资子公司，以低廉的套餐价格而闻名。</p><p>与传统的移动电话运营商不同，giffgaff的用户也可以参与公司的部分运营，如销售、客服、营销环节等。作为参与运营的回报，用户从公司的 &quot;Payback&quot; 系统中获得补偿。</p><p>作为保号界最高的山最长的河，其+44区号权重较高，保号费用低廉，支持范围广，在此之前也有不少文章对其进行了介绍。本文主要从客观角度出发，简述giffgaff eSIM的获取和使用。</p>
<h2 id="">信息概览</h2><h3 id="kyc">KYC</h3><p>否。</p><h3 id="">初始成本</h3><p>GBP£10.00起。</p><h3 id="">使用成本</h3><p><strong>中国大陆</strong><br/>主叫/被叫语音GBP£1.00/min<br/>发送短信GBP£0.30/条<br/>接收短信免费<br/>数据GBP£0.20/MB</p><p><strong>英国/曼岛/根西岛/泽西岛 (或Wi-Fi通话)</strong><br/>主叫语音GBP£0.03/min (套餐内免费)<br/>被叫语音免费<br/>发送短信GBP£0.08/条 (套餐内免费)<br/>接收短信免费<br/>发送彩信GBP£0.30/条 (至英国/曼岛/根西岛/泽西岛号码) 或 GBP£0.24/条 (至非英国/曼岛/根西岛/泽西岛号码)<br/>数据GBP£0.20/MB (套餐内免费)</p><h3 id="">维护成本及规则</h3><p>最低维护成本GBP£0.03/6月。<br/>在6个月内号码存在余额变动即可。</p><h3 id="">漫游信号</h3><p>中国移动4G/5G<br/>中国联通4G/5G</p><h3 id="">技术细节</h3><p><strong>Wi-Fi通话</strong> 支持 (英国)<br/><strong>eSIM</strong> 支持<br/><strong>eSIM转移</strong> APP内转移<br/><strong>号码长度</strong> 10<br/><strong>APP管理</strong> 支持 (giffgaff)</p>
<h2 id="">获取</h2><h3 id="sim">实体SIM</h3><ol start="1"><li>前往 <a href="https://www.giffgaff.com/freesim-international">International Free SIM Cads | giffgaff</a> ，选择 &quot;No thanks, I just want a free SIM&quot;，填写你的收件地址，并选择 &quot;Order your free SIM&quot;；</li></ol><blockquote><p>注意: giffgaff配送使用标准邮政服务，即平邮，存在一定丢件概率。</p></blockquote>
<p><img src="https://api-blog.sevtinge.com/api/v2/objects/image/umsb9rosf323i75cj2.png" height="2650" width="1927"/></p><ol start="2"><li><p>等待寄送实体SIM至您填写的收件地址；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/cjmbdjse4ttapbvjmu.jpg"/></p></li><li><p>收到实体SIM后，插入SIM卡，前往 <a href="https://www.giffgaff.com/activate">SIM Activation | giffgaff</a> 输入卡板正面的6位或背面的13位号码，点击 &quot;Activate your SIM&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/20s6pkksodkxcvsxph.png"/></p></li><li><p>填写您的邮箱，此邮箱地址将被用作您的giffgaff账户，点击 &quot;Next&quot;，在下一个页面输入您收到的验证码，点击 &quot;Confrim&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/t8i6a9sseacy2g2q7p.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/vn6dh36h7cmue03swu.png"/></p></li><li><p>创建您的giffgaff账户的密码，点击 &quot;Register&quot;，之后您将会收到欢迎邮件，其中包含您的member name，您可以根据邮件指引更改member name，但请注意您只有一次机会；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/7utf8vrakr7mt02y7x.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/j7in6yw8fytqrprrc2.jpg"/></p></li><li><p>个性化您的设置，选择是否接收活动邮件，以及可选的填写您的生日。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/cjfqqou12oahiggvno.png"/></p></li><li><p>选择 &quot;Pay as you go&quot; 表下的 &quot;Pay as you go - No monthly plan&quot; (也可按需选择)，点击 &quot;Continue&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/ns7sv553pqjt27niaj.png"/>
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/wpgh1dgz036hlhu5gg.png"/></p></li><li><p>充值最少GBP£10.00的账户余额，点击 &quot;Pay now&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/7quq8z02hzb6cmxzhr.png"/></p></li><li><p>确认信息并付款；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/223uc7o48kvajvf06l.png"/></p></li><li><p>付款完成后将会显示giffgaff分配给您的电话号码，等待来自43432的激活短信即可。</p></li></ol><h3 id="esim">eSIM</h3><ol start="1"><li><p>在支持eSIM的设备上下载giffgaff应用并打开；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/v15dnbb162q05h0akp.jpg"/></p></li><li><p>登录或创建您的giffgaff账户，进入应用主页；</p></li><li><p>选择 &quot;eSIM&quot;，点击 &quot;Choose your plan&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/k928orll3s8rleyt2a.png"/></p></li><li><p>选择 &quot;I don&#x27;t want a plan&quot; (也可按需选择)，点击 &quot;Continue&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/0r289vb3ls5i5obb14.png"/></p></li><li><p>充值最少GBP£10.00的账户余额，点击 &quot;Continue&quot;；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/y3ktjhxk20uvky31is.png"/></p></li><li><p>确认信息并付款；
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/577xjzfvxhjrx83a6i.jpeg"/></p></li><li><p>付款完成后，应用将会拉起EUICC并下载到您的设备。</p></li></ol><h2 id="">维护</h2><p>您可以在 <a href="https://www.giffgaff.com/dashboard">My giffgaff</a> 或APP内登录您的giffgaff账户并管理内容。</p><p>可发送 <code>number</code> 至 <code>2020</code> 查询当前giffgaff卡号码，或拨打 <code>*100#</code> 查询可用余额。</p><p>giffgaff默认开启语音信箱功能，若拒接将会自动转入语音信箱，产生额外费用。可拨打 <code>##002#</code> 、 <code>1626</code> 或联系 <a href="https://support2.giffgaff.com/app/ask/Calls-texts-and-data-not-working/Accessing-voicemail-in-the-UK/form/">giffgaff Support</a> 关闭语音信箱 (拨打 <code>**61*443*10*20#</code> 或 <code>1616</code> 可启用语音信箱)。</p><p>giffgaff在欧盟地区每月享有14天5GB的免漫游费漫游流量，超出将会收取漫游费用。</p><p>Wi-Fi通话仅下列设备支持。</p><table><thead><tr><th> 厂商 </th><th> 设备 </th></tr></thead><tbody><tr><td> Apple        </td><td> iPhone SE (2及之后的版本), XR, XS Max, XS, 11, 11 Pro, 11 Pro Max, 12, 12 mini, 12 Pro, 12 Pro Max, 13, 13 mini, 13 Pro, 13 Pro Max, 14, 14 Plus, 14 Pro, 14 Pro Max, 15, 15 Plus, 15 Pro, 15 Pro Max, 16, 16 Pro, 16 Plus, 16 Pro Max, 17, 17 Pro, 17 Pro Max, Air及之后的版本<br/><br/><em>需要iOS 17.4及之后的版本，或运营商IPCC 58.0及之后的版本</em> </td></tr><tr><td> Samsung      </td><td> Galaxy A04s, A05s, A13, A14, A15, A23, A24, A25, A33, A34, A35, A52, A53, A54, A55及之后的版本<br/>S21系列, S21 FE, S22系列, S23系列, S24系列, S25系列, S26系列及之后的版本<br/>M33及之后的版本<br/>Tab A7 Lite, Tab A8, Tab A9, Tab 28, Tab 29, Tab S9 FE及之后的版本<br/>Z Flip3 5G, Z Flip4, Z Flip5, Z Flip6, Z Fold3 5G, Z Fold4, Z Fold5, Z Fold6 </td></tr><tr><td> Nokia        </td><td> Nokia C12, Nokia XR20, Nokia G22, G60, G85及之后的版本 </td></tr><tr><td> Google       </td><td> Pixel 7, Pixel 7 Pro, Pixel 7a, Fold, 8/Pro及之后的版本 </td></tr><tr><td> Motorola     </td><td> Cancun<br/><br/><em>等待来自Motorola确认</em> </td></tr><tr><td> Sony         </td><td> Xperia 1V和10V及之后的版本 </td></tr><tr><td> Xiaomi       </td><td> 所有搭载高通骁龙处理器的设备 </td></tr></tbody></table><p>Wi-Fi通话仅在英国可用，若需在非英国地区使用，请开启飞行模式并关闭定位服务，并使用下述代理规则或全局代理。</p><pre class="language-YAML lang-YAML"><code class="language-YAML lang-YAML">IP-CIDR,87.194.0.0/19
IP-CIDR,87.194.88.0/23
DOMAIN-SUFFIX,epdg.epc.mnc010.mcc234.pub.3gppnetwork.org
</code></pre>
<p>若您是Apple设备，需另行确保countryd和gs处于英国 (访问 <a href="https://gspe1-ssl.ls.apple.com/pep/gcc">https://gspe1-ssl.ls.apple.com/pep/gcc</a> ，若显示GB则gs处于英国)，可尝试下述规则以更改gs。</p><pre class="language-YAML lang-YAML"><code class="language-YAML lang-YAML">DOMAIN, gspe1-ssl.ls.apple.com
</code></pre>
<p>可在支持eSIM功能的设备上下载giffgaff APP，登录您的giffgaff账户，前往 &quot;Account&quot; -&gt; &quot;SIM&quot; -&gt; &quot;Replace my SIM&quot; -&gt; &quot;Switch to a new eSIM&quot; 将号码转为eSIM，APP将会拉起EUICC并下载eSIM到当前设备。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/ch6ymjt6w4jj4tlebi.png"/></p><p>也可前往 &quot;Account&quot; -&gt; &quot;SIM&quot; -&gt; &quot;Replace my SIM&quot; -&gt; &quot;Switch to a new physical SIM&quot; 或在 <a href="https://www.giffgaff.com/profile/details#simswap">Profile and Settings | giffgaff</a> 选择 &quot;Replace my SIM&quot; 将号码转为实体SIM</p><p>支持3次随机更换号码，前往 <a href="https://www.giffgaff.com/profile/details/getnumber">Get number | giffgaff</a> 操作即可。</p><p>充值支持Visa及MasterCard的信用卡及借记卡。
<img src="https://api-blog.sevtinge.com/api/v2/objects/image/tns3jybkc14awruely.png"/></p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/sim/uk-giffgaff#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/sim/uk-giffgaff</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/sim/uk-giffgaff</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Fri, 12 Sep 2025 08:05:18 GMT</pubDate></item><item><title><![CDATA[使用自有域名搭建电子邮件地址]]></title><description><![CDATA[<link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/icon/suc36gkuyp3nqqtebq.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/icon/m6njw7srcdklxqxjja.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/icon/i9t9myih7b0szwi9ir.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/icon/24itzeovsb5ujp4261.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/icon/2jmwluc3xfnbt1peor.png"/><link rel="preload" as="image" href="https://api-blog.sevtinge.com/api/v2/objects/icon/ieeprqfgyl8vbe3g5v.png"/><div><div><p><strong>本文简要讲述如何使用CloudFlare为自有域名搭建邮件地址，并使用Gmail代收发。</strong></p><p>在此之前的准备工作：</p><ul><li>注册域名</li><li>使用CloudFlare为域名配置DNS解析</li><li>开启Gmail账号2FA</li></ul><hr/><h2 id="">配置电子邮件转发</h2><p>前往<a href="https://dash.cloudflare.com/">CloudFlare面板</a>-网站-你想为其配置电子邮件地址的域名-电子邮件，创建一个你想要的电子邮件地址。</p><ul><li>&quot;自定义地址&quot; 处填写希望的电子邮件名；</li><li>&quot;目标地址&quot; 处填写希望转发到的邮件地址。</li></ul><p><img src="https://api-blog.sevtinge.com/api/v2/objects/icon/suc36gkuyp3nqqtebq.png" alt="创建自定义地址" height="955" width="1672"/></p><p>点击<code>创建并继续</code>后，会要求验证希望转发到的邮件地址，前往你在 \&quot;目标地址\&quot; 填写的邮件地址进行验证即可。</p><p>在下一个页面，CloudFlare会要求添加记录，直接点击<code>添加记录</code>即可。</p><p>之后等待生效。可以使用其他电子邮件地址往新建的电子邮件地址发送电子邮件，能收到即代表成功。
成功后建议开启<code>Catch-all地址</code>，将所有邮件转发到你填写的目标邮件地址。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/icon/m6njw7srcdklxqxjja.png" alt="电子邮件路由" height="952" width="1671"/></p>
<hr/><h2 id="gmail">配置Gmail代收发</h2><p>首先前往<a href="https://myaccount.google.com/apppasswords">应用专用密码</a>，为你的电子邮件地址生成新的密码。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/icon/i9t9myih7b0szwi9ir.png" alt="应用专用密码" height="950" width="1674"/></p><p>生成完成后妥善保存。</p><p>前往<a href="https://mail.google.com/mail/u/0/#settings/accounts">Gmail设置</a>-账号与导入，点击<code>用这个地址发送邮件下</code>的<code>添加其他电子邮件地址</code>。</p><p><img src="https://api-blog.sevtinge.com/api/v2/objects/icon/24itzeovsb5ujp4261.png" alt="Gmail设置" height="947" width="1681"/></p><p>在新跳转的页面中，填写你的电子邮箱的信息。</p><ul><li>&quot;名称&quot; 处填写希望展示的发件人名称；</li><li>&quot;电子邮件地址&quot; 处填写你的电子邮件地址。</li></ul><p><img src="https://api-blog.sevtinge.com/api/v2/objects/icon/2jmwluc3xfnbt1peor.png" alt="添加电子邮件地址" height="505" width="615"/></p><p>在下一个页面中配置SMTP服务器信息。</p><ul><li>&quot;SMTP服务器&quot; 处填写<code>smtp.gmail.com</code>；</li><li>&quot;端口&quot; 处填写<code>587</code>；</li><li>&quot;用户名&quot; 处填写你的Gmail用户名 (即你的Gmail电子邮件名)；</li><li>&quot;密码&quot; 填写上文生成的应用专用密码。</li></ul><p><img src="https://api-blog.sevtinge.com/api/v2/objects/icon/ieeprqfgyl8vbe3g5v.png" alt="配置SMTP服务器信息" height="508" width="616"/></p><p>点击<code>添加账号</code>，Gmail会要求验证电子邮件地址，前往你希望转发到的邮件地址，找到验证邮件进行验证即可。</p>
<hr/><p><strong>至此，你的全新电子邮箱地址就配置完毕了。</strong></p>
<p>  </p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/tech/1#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/tech/1</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/tech/1</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sun, 11 May 2025 05:44:23 GMT</pubDate></item><item><title><![CDATA[Vojazento 1.0.100 (100)]]></title><description><![CDATA[<div><div><p><strong>『携君之柳，共抵群星』</strong></p>
<h2>模块自述</h2><p>Vojazento 是一款 Xposed 模块，可用于切换 MIUI 和 HyperOS 软件的国际版标识，从而使用国际版/中国版内容。</p><p>目前已支持修改如下标识符：</p><pre class=""><code class="">miui.os.Build.IS_INTERNATIONAL_BUILD
miuix.os.Build.IS_INTERNATIONAL_BUILD
miui.os.Build.IS_GLOBAL_BUILD
miui.os.Build.IS_CM_CUSTOMIZATION
miui.os.Build.IS_CM_CUSTOMIZATION_TEST
android.os.SystemProperties.get(String, String) -&gt; contains(\\&quot;_global\\&quot;)
miuix.core.util.SystemProperties.get(String, String) -&gt; contains(\\&quot;_global\\&quot;)
</code></pre>
<h2>使用方法</h2><p>使用 Xposed 管理器，激活模块，并选取相应的作用域。随后强行停止作用域即可。</p><h2>注意事项</h2><p>当前版本为首次发布版本，可能存在不稳定的内容，请谨慎使用。
默认发布版本为使用国际版内容，若你需使用中国版内容，请 clone 项目至本地后，更改 <code>com.sevtinge.vojazento.XposedInit.IS_CHINA_MAINLAND_BUILD</code> 的值为 <code>true</code> 后自行编译。</p><h2>开源地址</h2><p><a href="https://github.com/Sevtinge/Vojazento">https://github.com/Sevtinge/Vojazento</a></p><h2>下载</h2><p><a href="https://sevtinge.lanzouw.com/iTYep1yelsaj">https://sevtinge.lanzouw.com/iTYep1yelsaj</a></p><p>密码<code>2jbb</code></p></div><p style="text-align:right"><a href="https://blog.sevtinge.com/posts/default/vojazento100#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.sevtinge.com/posts/default/vojazento100</link><guid isPermaLink="true">https://blog.sevtinge.com/posts/default/vojazento100</guid><dc:creator><![CDATA[绀漓]]></dc:creator><pubDate>Sun, 11 May 2025 05:39:19 GMT</pubDate></item></channel></rss>