<?xml version="1.0" encoding="utf-8"?>
<search> 
  
  
    
    <entry>
      <title>Live2DViewerEX lpk文件加解密调试分析</title>
      <link href="/2022/07/23/l2d-lpk-decrypt/"/>
      <url>/2022/07/23/l2d-lpk-decrypt/</url>
      
        <content type="html"><![CDATA[<p>很早以前就在 Steam 里购买了 Live2DViewerEX 用来做桌面，并且其创意工坊的<del>二次元老婆</del>也很多。但是有的模型不能满足某些需求<del>（不能XX）</del>，需自己改模，但是里面的模型全部都被加密了，只有 lpk 文件，于是着手开始解密。  </p><span id="more"></span><blockquote><p>本文仅仅是技术向的学习和交流。<br>如果您认为本文侵犯了您的权益，请联系我删除。</p></blockquote><h2 id="文件分析"><a href="#文件分析" class="headerlink" title="文件分析"></a>文件分析</h2><p>在创意工坊中以物品文件 ID 命名的目录下有三个文件</p><pre><code>config.json       // 这个文件是记录创意工坊物品信息的***.lpk           // 这个文件就是加密后打包的 lpk 了，文件名是物品文件 ID***.png           // 这个文件是预览图，似乎是以打包时间命名的</code></pre><p>随意看下，很容易就可以发现 lpk 文件就是应一个普通的 zip 压缩包，解压后有大量文件  </p><pre><code>1d862f7d02e6008f4550188a31ca654f    // 一个固定名字无后缀的小文件，未加密，内容与模型的信息有关***.bin 或 ***.bin3                 // 一堆以 md5 格式命名的加密后的文件***                                 // 一个无后缀的较大的文件，与前面的预览图是同一个文件</code></pre><p>里面固定名字的文件 <code>1d862f7d02e6008f4550188a31ca654f</code> 是一个 JSON 格式文件，记录了模型的信息，其中 costum 中 path 的值是加密后的 model3.json 的文件名，是 Live2D 模型的模型配置文件。<br>对于这些 bin&#x2F;bin3 文件的加密方式很无头绪，大概只能逆向解决，但是不知道应从何处入手，直到找到了两篇大佬的文章<a href="https://chr.fan/lpk-decrypt/">Live2DViewerEX 创意工坊lpk文件分析 – 动态调试Unity程序</a> <a href="https://www.chinuno.com/blog/lpk-decrypt/">Live2DViewerEX lpk格式加密分析</a> 给了我很大启发。  </p><h2 id="调试分析"><a href="#调试分析" class="headerlink" title="调试分析"></a>调试分析</h2><p>关于调试的准备工作如使用 <a href="https://github.com/dnSpy/dnSpy">dnSpy</a>、修复 <code>momo.dll</code> 的 <a href="https://github.com/dnSpy/dnSpy-Unity-mono">dnSpy-Unity-mono</a> 等，原仓库的 README 与大佬的文章都写得非常详细，这里就不多提了。  </p><blockquote><p><del>不过修补的 <code>momo.dll</code> 不同小版本似乎可以混合使用</del></p></blockquote><p>Live2DViewerEX 中最易调试的是 EXStudio，替换 <code>mono-2.0-bdwgc.dll</code> 后直接在 dnSpy 里开始调试，并把 <code>Assembly-CSharp.dll</code> 也拖入 dnSpy 中。<br>先去 GitHub 随意找了一个 <a href="https://github.com/imuncle/live2d">Live2D 模型仓库</a>，搜索 lpk 到 ExportLpk 函数下断点，让 EXStudio 处理模型以便动态调试。<br>很容易就会看到一个疑似获取 key 的代码<br><img src="/images/lpk1.png" alt="获取 key"><br>当导出的是普通 lpk 文件时，key 是打包 KeyId（可以很容易知道是时间戳，而这个在 <code>1d862f7d02e6008f4550188a31ca654f</code> 中存储）与文件名的字符串拼接合成的（文件名通过 <code>ComputeHash</code> 计算，为原始文件名经过处理后计算的 md5）。<br>当导出的是创意工坊文件时，key 是打包的 keyId、创意工坊文件 ID、文件名、创意工坊 metaData拼接而成（创意工坊的信息则在 <code>config.json</code> 中）。<br>进一步调试课发现这个 key 经过一系列运算生成了一个 num，这个 num 后面被用来加密文件<br><img src="/images/lpk2.png" alt="生成 num"><br>加密用的是很简单的异或，可以很容易解密出来。加密时每次加密1024字节，每加密一个字节都让 num 与自身进行了一系列运算，然后与对应字节异或运算，每次加密结束会重新传入原 num<br><img src="/images/lpk3.png" alt="加密"></p><h2 id="编写解密程序"><a href="#编写解密程序" class="headerlink" title="编写解密程序"></a>编写解密程序</h2><p>知道了解密算法，用自己熟悉的语言即可写出解密程序。<br><del>我是废物，只会用 C 简单写个单文件通用解密程序，然后 Node.js 写了批量调用的程序来解密。</del><br>文件类型重命名则直接判断解密后的文件头即可（记得把 JSON 里的 <code>*.bin</code> 文件名也换成新文件名）。<br>解密很成功，<del>可以愉快的改模了</del>。<br><img src="/images/lpk4.png" alt="解密后"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p><del>无总结</del><br><del>（因为我太废物了，搞这些花了我挺多时间）</del></p>]]></content>
      
      
      <categories>
          
          <category> 加解密 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> Live2D </tag>
            
            <tag> Live2DViewerEX </tag>
            
            <tag> lpk </tag>
            
            <tag> 逆向 </tag>
            
            <tag> 加解密 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>悲，jsDelivr 似乎已经彻底被墙</title>
      <link href="/2022/05/17/jsdelivr/"/>
      <url>/2022/05/17/jsdelivr/</url>
      
        <content type="html"><![CDATA[<p>下午发现博客突然寄了，查明原因是 jsDelivr 似乎彻底被墙了，紧急修复了</p><span id="more"></span><h2 id="为-jsDelivr-默哀"><a href="#为-jsDelivr-默哀" class="headerlink" title="为 jsDelivr 默哀"></a>为 jsDelivr 默哀</h2><p>真没想到在被吊销备案后几个月内，jsDelivr 又被盯上了，现在已经完全无法使用了。<br>可惜了这么好的 CDN 加速站。 </p><h2 id="修复-jsDelivr-无法访问导致网页错乱的问题"><a href="#修复-jsDelivr-无法访问导致网页错乱的问题" class="headerlink" title="修复 jsDelivr 无法访问导致网页错乱的问题"></a>修复 jsDelivr 无法访问导致网页错乱的问题</h2><p>我已经把本博客的 CDN 站紧急切换到七牛云的 CDN 上了，七牛云似乎是国内各 CDN 中唯一能保证最新版本的 cdnjs 加速站。<br>在修复 CDN 问题的同时也把手机版的博客页面改了下<br>下面是几个常用的替代品 </p><h3 id="几个比较大的国内-CDN"><a href="#几个比较大的国内-CDN" class="headerlink" title="几个比较大的国内 CDN"></a>几个比较大的国内 CDN</h3><p><a href="https://staticfile.org/">七牛云</a> <a href="https://cdn.bytedance.com/">字节跳动</a> <a href="https://www.bootcdn.cn/">BootCDN</a> <a href="https://cdn.baomitu.com/">360</a> </p><h3 id="常用的国际-CDN"><a href="#常用的国际-CDN" class="headerlink" title="常用的国际 CDN"></a>常用的国际 CDN</h3><p><a href="https://unpkg.com/">UNPKG</a> <a href="https://cdnjs.com/">cdnjs</a> </p><h3 id="常用图床"><a href="#常用图床" class="headerlink" title="常用图床"></a>常用图床</h3><p><a href="https://github.com/Suxiaogang/WeiboPicBed">微博图床</a> <a href="https://github.com/xlzy520/typora-plugin-bilibili">哔哩哔哩图床</a> <a href="https://sm.ms/">sm.ms</a> </p>]]></content>
      
      
      <categories>
          
          <category> jsDelivr </category>
          
      </categories>
      
      
        <tags>
            
            <tag> jsDelivr </tag>
            
            <tag> GFW </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>关于 Chromium 的部分研究-2022年2月</title>
      <link href="/2022/02/04/chromium-202202/"/>
      <url>/2022/02/04/chromium-202202/</url>
      
        <content type="html"><![CDATA[<p>本文为 Dimole 在2022年2月更新迪莫乐浏览器时对 Chromium 的部分研究  </p><span id="more"></span><h2 id="前情"><a href="#前情" class="headerlink" title="前情"></a>前情</h2><p>这个月搞的内容这些其实在之前的版本就已经做了，但是买到的黑片固态不给力导致数据丢失，现在从头来过。（  </p><h2 id="使用非谷歌搜索引擎时启用新标签页的搜索框"><a href="#使用非谷歌搜索引擎时启用新标签页的搜索框" class="headerlink" title="使用非谷歌搜索引擎时启用新标签页的搜索框"></a>使用非谷歌搜索引擎时启用新标签页的搜索框</h2><p>通过调试及 <a href="https://source.chromium.org/">Chromium Code Search</a> 易知， Chromium 新标签页的谷歌版和非谷歌版的区别在 <code>chrome/browser/search/search.cc</code> 中的  </p><pre><code>const GURL local_url(DefaultSearchProviderIsGoogle(profile)                         ? chrome::kChromeUINewTabPageURL                         : chrome::kChromeUINewTabPageThirdPartyURL);</code></pre><p>进行了判断（ kChromeUINewTabPageURL 为谷歌版）<br>事实上，只需要让 DefaultSearchProviderIsGoogle 永远返回 true 来“欺骗” Chromium 就可以做到永远显示谷歌版的带搜索框的新标签页了。<del>也许会有 Bug ，不管了，又不是不能用.jpg</del><br>而 DefaultSearchProviderIsGoogle 的最终定义在 <code>components/search/search.cc </code>中  </p><pre><code class="cpp">bool DefaultSearchProviderIsGoogle(    const TemplateURLService* template_url_service) &#123;  if (!template_url_service)    return false;  const TemplateURL* default_provider =      template_url_service-&gt;GetDefaultSearchProvider();  if (!default_provider)    return false;  return default_provider-&gt;GetEngineType(             template_url_service-&gt;search_terms_data()) ==         SearchEngineType::SEARCH_ENGINE_GOOGLE;&#125;</code></pre><p>把这里的代码改掉即可。<br>为了防止没有搜索引擎等特殊情况时产生更多 Bug ，我只把最后对谷歌的判断改了，即  </p><pre><code class="cpp">bool DefaultSearchProviderIsGoogle(    const TemplateURLService* template_url_service) &#123;  if (!template_url_service)    return false;  const TemplateURL* default_provider =      template_url_service-&gt;GetDefaultSearchProvider();  if (!default_provider)    return false;  return true;&#125;</code></pre><h2 id="开启“下载前询问每个文件的保存位置”时让下载的-crx-扩展能自动安装"><a href="#开启“下载前询问每个文件的保存位置”时让下载的-crx-扩展能自动安装" class="headerlink" title="开启“下载前询问每个文件的保存位置”时让下载的 .crx 扩展能自动安装"></a>开启“下载前询问每个文件的保存位置”时让下载的 .crx 扩展能自动安装</h2><p>这个实际上是 Chromium 代码有个判断，如果提示用户输入保存位置，那这个下载对象就作为普通文件，而不会作扩展程序。<br>可以很容易定位到相关的代码在 <code>chrome/browser/download/download_crx_util.cc</code> 中  </p><pre><code class="cpp">bool IsExtensionDownload(const DownloadItem&amp; download_item) &#123;  if (download_item.GetTargetDisposition() ==      DownloadItem::TARGET_DISPOSITION_PROMPT)    return false;</code></pre><p>这里直接把这第一个判断注释即可。  </p><h2 id="给刷新按钮增加开发者工具的高级菜单"><a href="#给刷新按钮增加开发者工具的高级菜单" class="headerlink" title="给刷新按钮增加开发者工具的高级菜单"></a>给刷新按钮增加开发者工具的高级菜单</h2><p>这个菜单实际上开启开发者工具的时候就会自动启用，但是可以修改代码让其始终启用。<br>可以很容易定位到相关的代码在 <code>chrome/browser/ui/views/toolbar/reload_button.cc</code> 中</p><pre><code class="cpp">void ReloadButton::SetMenuEnabled(bool enable) &#123;  menu_enabled_ = enable;&#125;</code></pre><p>直接简单粗暴把 <code>enable</code> 改成 <code>true</code>。  </p><h2 id="默认关闭谷歌登录功能"><a href="#默认关闭谷歌登录功能" class="headerlink" title="默认关闭谷歌登录功能"></a>默认关闭谷歌登录功能</h2><p>谷歌实在是作恶多端，把第三方 Chromium 对 API 的访问<a href="https://blog.chromium.org/2021/01/limiting-private-api-availability-in.html">限制</a>了，导致不能登录谷歌进行云同步。<br>这里不如直接把功能关了，<del>眼不见心不烦</del>。<br><del>还是可以很容易定位到相关的代码在 <code>chrome/browser/signin/account_consistency_mode_manager.cc</code> 中</del></p><pre><code class="cpp">registry-&gt;RegisterBooleanPref(prefs::kSigninAllowedOnNextStartup, true);</code></pre><p>经典的改法，<code>true</code> 改 <code>false</code>  </p><h2 id="默认开启滚动标签页及按钮"><a href="#默认开启滚动标签页及按钮" class="headerlink" title="默认开启滚动标签页及按钮"></a>默认开启滚动标签页及按钮</h2><p>这个功能 Chromium 很早就已经做到了，不过是处于默认禁用的状态。<br>在 <code>chrome/browser/ui/ui_features.cc</code> 中  </p><pre><code class="cpp"> // Enables tabs to scroll in the tabstrip. https://crbug.com/951078const base::Feature kScrollableTabStrip&#123;&quot;ScrollableTabStrip&quot;,                                        base::FEATURE_DISABLED_BY_DEFAULT&#125;;const char kMinimumTabWidthFeatureParameterName[] = &quot;minTabWidth&quot;;// Enables buttons to permanently appear on the tabstrip when// scrollable-tabstrip is enabled. https://crbug.com/1116118const base::Feature kScrollableTabStripButtons&#123;    &quot;ScrollableTabStripButtons&quot;, base::FEATURE_DISABLED_BY_DEFAULT&#125;;</code></pre><p>把 <code>base::FEATURE_DISABLED_BY_DEFAULT</code> 改成 <code>base::FEATURE_ENABLED_BY_DEFAULT</code><br>光改这俩还不够，因为 feature 里面没有默认值，可以修改默认值，也可以直接在代码里改，我是直接动代码。<br>即 <code>chrome/browser/ui/views/tabs/tab_style_views.cc</code> 中活跃标签的  </p><pre><code class="cpp">int TabStyleViews::GetMinimumActiveWidth() &#123;  int min_active_width =      TabCloseButton::GetGlyphSize() + GetContentsHorizontalInsetSize() * 2;  if (base::FeatureList::IsEnabled(features::kScrollableTabStrip)) &#123;    return std::max(        min_active_width,        base::GetFieldTrialParamByFeatureAsInt(            features::kScrollableTabStrip,            features::kMinimumTabWidthFeatureParameterName, min_active_width));  &#125;  return min_active_width;&#125;</code></pre><p>把 <code>GetFieldTrialParamByFeatureAsInt</code> 里的 <code>min_active_width</code> 改成想要的默认值，例如140。<br>还有非活跃标签的  </p><pre><code class="cpp">int TabStyleViews::GetMinimumInactiveWidth() &#123;  // Allow tabs to shrink until they appear to be 16 DIP wide excluding  // outer corners.  constexpr int kInteriorWidth = 16;  // The overlap contains the trailing separator that is part of the interior  // width; avoid double-counting it.  int min_inactive_width =      kInteriorWidth - GetSeparatorSize().width() + GetTabOverlap();  if (base::FeatureList::IsEnabled(features::kScrollableTabStrip)) &#123;    return std::max(min_inactive_width,                    base::GetFieldTrialParamByFeatureAsInt(                        features::kScrollableTabStrip,                        features::kMinimumTabWidthFeatureParameterName,                        min_inactive_width));  &#125;  return min_inactive_width;&#125;</code></pre><p><code>min_inactive_width</code> 同理。  </p><h2 id="设置默认搜索引擎为百度"><a href="#设置默认搜索引擎为百度" class="headerlink" title="设置默认搜索引擎为百度"></a>设置默认搜索引擎为百度</h2><p>由于众所周知的原因，Chromium 默认的谷歌在大陆是无法使用的，这里把它改成百度。<br><code>components/search_engines/template_url_prepopulate_data.cc</code> 中的</p><pre><code class="cpp">std::vector&lt;std::unique_ptr&lt;TemplateURLData&gt;&gt; GetPrepopulatedEngines(    PrefService* prefs,    size_t* default_search_provider_index) &#123;  // If there is a set of search engines in the preferences file, it overrides  // the built-in set.  std::vector&lt;std::unique_ptr&lt;TemplateURLData&gt;&gt; t_urls =      GetPrepopulatedTemplateURLData(prefs);  if (t_urls.empty()) &#123;    t_urls = GetPrepopulationSetFromCountryID(        country_codes::GetCountryIDFromPrefs(prefs));  &#125;  if (default_search_provider_index) &#123;    const auto itr = std::find_if(        t_urls.begin(), t_urls.end(),        [](const auto&amp; t_url) &#123; return t_url-&gt;prepopulate_id == google.id; &#125;);    *default_search_provider_index =        itr == t_urls.end() ? 0 : std::distance(t_urls.begin(), itr);  &#125;  return t_urls;&#125;</code></pre><p>把 <code>google.id</code> 改成 <code>baidu.id</code>  </p><h2 id="增加-H-265-的软解码支持"><a href="#增加-H-265-的软解码支持" class="headerlink" title="增加 H.265 的软解码支持"></a>增加 H.265 的软解码支持</h2><p>这个太多了，先放着，未完待续，咕咕咕（<br><img src="https://tva1.sinaimg.cn/large/ceeb653ely1g0tn09sqefj205a04kmx0.jpg" alt="咕咕咕"></p><h2 id="最后宣传下我的浏览器不过分吧（"><a href="#最后宣传下我的浏览器不过分吧（" class="headerlink" title="最后宣传下我的浏览器不过分吧（"></a>最后宣传下我的浏览器不过分吧（</h2><p>下载地址：<a href="https://llq.dml.ink/">https://llq.dml.ink</a></p>]]></content>
      
      
      <categories>
          
          <category> Chromium 研究 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> Chromium </tag>
            
            <tag> 迪莫乐浏览器 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>再见2021，你好2022</title>
      <link href="/2022/01/01/hello2022/"/>
      <url>/2022/01/01/hello2022/</url>
      
        <content type="html"><![CDATA[<p>再见2021，你好2022</p>]]></content>
      
      
      <categories>
          
          <category> 灌水文 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 新年 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>2021/12/30 Blog更新</title>
      <link href="/2021/12/30/blog-update-20211230/"/>
      <url>/2021/12/30/blog-update-20211230/</url>
      
        <content type="html"><![CDATA[<p>花了一天时间修改了Blog主题</p><span id="more"></span><h2 id="修改内容"><a href="#修改内容" class="headerlink" title="修改内容"></a>修改内容</h2><p>把之前用的 <a href="https://github.com/tangyuxian/hexo-theme-tangyuxian">hexo-theme-tangyuxian</a> 和 <a href="https://github.com/theme-nexmoe/hexo-theme-nexmoe">hexo-theme-nexmoe</a> 进行了合并和修改<br>将前者的深度定制的hexo-theme-nexmoe更新到现在的最新版3.2.3（语言文件和搜索功能除外）（纯人工合并）<br>同时加入了显示文章更新时间的功能<br>将两者中我需要的功能全部合并到一起<br>把它作为新的Blog主题  </p><!-- 并决定重新**开源** [hexo-theme-dimole-blog](https://github.com/dmlgzs/hexo-theme-dimole-blog) 算了，有点麻烦，暂不开源了（ --> <p><del>（当然我也不会去分叉）</del>  </p><h2 id="修改过程"><a href="#修改过程" class="headerlink" title="修改过程"></a>修改过程</h2><p><del>离谱的是我当时居然忘记了git可以直接用patch，在那边傻傻搞了那么久</del><br><del>我是伞兵（</del><br>由于 hexo-theme-tangyuxian 的 Git 仓库并没有直接分叉 hexo-theme-nexmoe ，而我当时脑抽了，没想到用 patch，然后就盯着屏幕对照着 hexo-theme-nexmoe 的提交，一个 commit 一个 commit 地改，<del>眼镜都瞎了</del><br>还在自己的Blog仓库里多刷几十个 commit<br>最后花了半天终于把 hexo-theme-nexmoe 的 commit 搞完<br>本来可以几秒钟完成的事情我花了半天，麻了  </p><h2 id="发牢骚（"><a href="#发牢骚（" class="headerlink" title="发牢骚（"></a>发牢骚（</h2><p>另外Chrome你***就不能稳定一点吗？！<br>调试的时候遇到Chrome的bug，滚动条被卡成手机的滚动条，整体的样式也卡成和手机一样，根本无法自适应，而且这个滚动条还会随意错位，还以为是主题改错了，修了半天都修不好，最后重启Chrome才正常<br>多浪费一个小时时间在找这个问题，人麻了<br><del>所以Google能快点修BUG并赔偿吗（</del><br>还有 Firefox 兼容性还是不如人意啊（<br>Chromium 支持的东西 Firefox 没有全部支持，<br>比如右上角隐藏的某个插件（  </p>]]></content>
      
      
      <categories>
          
          <category> Blog修订 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> Blog </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>升级MIUI13</title>
      <link href="/2021/12/29/miui13/"/>
      <url>/2021/12/29/miui13/</url>
      
        <content type="html"><![CDATA[<p>今天把K40升级了MIUI13</p><span id="more"></span><p><del>提到MIUI，请和我一起喊：雷军！金凡！</del><br>实际上体验感觉还行吧，比之前的MIUI12.5流畅<br>但是小米社区传出有大bug的消息（开无障碍会死机重启）被撤包了。<br>我没用过所以没遇到（  </p><h2 id="评测"><a href="#评测" class="headerlink" title="评测"></a>评测</h2><p><del>我懒，不评测了（润了</del>  </p><h2 id="吐槽"><a href="#吐槽" class="headerlink" title="吐槽"></a>吐槽</h2><p>最后要吐槽的就是新字体Mi Sans，太难看了，远不及以前的小米兰亭Pro  </p><ul><li>英文太高，大小小写连续字会叠在一起  </li><li>符号太宽，影响排版美观性</li></ul><p>而且还把原来的小米兰亭Pro删了，没法用回原字体<br>看起来不习惯，非常难受  </p><p><del>（引用米狗的一句话：我 看 今 天 谁 敢 买 小 米 奇 迹 ！！！）</del></p>]]></content>
      
      
      <categories>
          
          <category> 灌水文 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> MIUI </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>快速白嫖 Hax 1核512MB内存 纯 IPV6 VPS</title>
      <link href="/2021/12/25/freevps/"/>
      <url>/2021/12/25/freevps/</url>
      
        <content type="html"><![CDATA[<p>快速白嫖一个纯IPV6的VPS，可用于建站</p><span id="more"></span><h2 id="官网链接"><a href="#官网链接" class="headerlink" title="官网链接"></a>官网链接</h2><p><a href="https://hax.co.id/">https://hax.co.id/</a></p><h2 id="VPS配置"><a href="#VPS配置" class="headerlink" title="VPS配置"></a>VPS配置</h2><p>CPU：1核<br>内存：512M<br>磁盘：5GB<br>IPv6：1<br>数据中心：欧洲、印度尼西亚、美国（最近增加了对中国优化的美国机房）  </p><h2 id="申请条件"><a href="#申请条件" class="headerlink" title="申请条件"></a>申请条件</h2><p>自备梯子，有TG账号  </p><h2 id="申请步骤"><a href="#申请步骤" class="headerlink" title="申请步骤"></a>申请步骤</h2><meta name="referrer" content="no-referrer">1、打开 TG，搜索并打开机器人 @HaxTG_bot  <p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_1.jpg" alt="1"></p><p>2、找到机器人后，单击START。  </p><p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_2.jpg" alt="2"></p><p>3、然后输入命令&#x2F;getid 获取电报 ID。  </p><p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_3.jpg" alt="3"></p><p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_4.jpg" alt="4"></p><h2 id="注册网站"><a href="#注册网站" class="headerlink" title="注册网站"></a>注册网站</h2><p>1、打开：<a href="https://hax.co.id/register">https://hax.co.id/register</a>  </p><p>2、网站内粘贴你的用户 ID, 接下来会通过 @HatTG_bot 发送一个密钥，复制并填入网站内  </p><p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_5.jpg" alt="5"></p><p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_8.jpg" alt="8"></p><p>3、注册完成后登录  </p><h2 id="创建-VPS"><a href="#创建-VPS" class="headerlink" title="创建 VPS"></a>创建 VPS</h2><p>点击 Create one here，设置系统信息，选择机房及用途（EU1-5 是 kvm 区，EU-OpenVZ 是 ovz 区），同意协议  </p><p><img src="https://wiki.hax.co.id/wp-content/uploads/2021/09/Screenshot_12.jpg" alt="12"></p><p>点击 VPS Info，即可进入 VPS 管理界面，有 IPV6 地址, SSH 教程，VPS 管理等工具  </p><h2 id="续期"><a href="#续期" class="headerlink" title="续期"></a>续期</h2><p>该平台的VPS虽说“永久免费”，但需要续期。<br>默认只有一周时间，需要持续在过期前三天内续期，不嫌麻烦可以一直续期一直用下去  </p><p><img src="https://s2.loli.net/2021/12/25/ecVYfjG1wTQ96UX.png" alt="renewvps.png">  </p><h2 id="4to6-通道"><a href="#4to6-通道" class="headerlink" title="4to6 通道"></a>4to6 通道</h2><p>网站贴心地提供了免费添加IPV4连接IPV6的功能  </p><p><img src="https://s2.loli.net/2021/12/25/D8IGe4zuYLqPkXU.png" alt="4t6"></p><h2 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h2><p>别把VPS拿来挖矿等高占用活动</p>]]></content>
      
      
      <categories>
          
          <category> 瞎折腾 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> VPS </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>Blog的大变化</title>
      <link href="/2021/12/25/great-changes/"/>
      <url>/2021/12/25/great-changes/</url>
      
        <content type="html"><![CDATA[<p>今天心血来潮把Blog改了（</p><span id="more"></span><p>原来Blog最早的仓库在自己X79的服务器上，但是由于疫情原因无法回去使用（关机了），今天凌晨熬夜把GitLab配置好，把Blog仓库重新做好了。<br>这次修改把主题换了（不过两个没多大变化），修好了友情链接。<br>就用这篇文章记录一下吧（  </p>]]></content>
      
      
      <categories>
          
          <category> Blog修订 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> Blog </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>一次破解同方易教的尝试</title>
      <link href="/2018/10/09/tfyj/"/>
      <url>/2018/10/09/tfyj/</url>
      
        <content type="html"><![CDATA[<p>尝试破解同方易教管理平台的记录</p><span id="more"></span><p>同方易教管理平台是清华同方和华锐联创共同推出的硬盘保护系统，这个系统和其他的保护系统一样，看似非常完善，但实际上几乎没有什么防护，用 OllyDbg 就可以轻松干掉其密码判断从而直接进入还原卡控制面板。  </p><p>（之前的 Blog 的炸了，这篇文章要重写，但是比较懒）（咕咕咕）</p>]]></content>
      
      
      <categories>
          
          <category> 瞎折腾 </category>
          
      </categories>
      
      
    </entry>
    
    
  
  
</search>
