GitHub avatar

Fox's Blog

How to get any cape on Minecraft Bedrock

A third-party launcher, an old version of the game, and a cape selector that never learned to say no. Full tutorial plus the likely explanation of why it works.

How to get any cape on Minecraft Bedrock

On Java, there are plenty of twisted ways to end up with a cape you shouldn't have (see the cape-mod article). On Bedrock, the game is different, the auth is different, but there's still a way -- no mods needed, no network packet trickery. Just a third-party launcher and a version of the game old enough to not have the validation you'd expect.

Here's how to do it, and then we'll look at what's probably happening under the hood.

What you need

  • A Microsoft account that already owns Minecraft Bedrock (yours works fine)
  • The official Minecraft launcher installed
  • BedrockLauncher, an open-source third-party launcher that lets you install and run any historical version of Bedrock
  • .NET 8.0 Desktop Runtime
  • Developer mode enabled on Windows

Step 1 -- Install Bedrock at least once with the official launcher

Before doing anything else, open the official Minecraft launcher, go to the Minecraft: Bedrock Edition tab, and click Install. Bedrock needs to have been installed and launched at least once through the official channel before touching BedrockLauncher.

Install Bedrock Edition from the official launcher

Step 2 -- Download BedrockLauncher

Head to the project's GitHub releases page. Grab the zip of the latest version listed under Assets.

BedrockLauncher GitHub releases page

Step 3 -- Extract the archive

Once the zip is downloaded, extract it to your Downloads folder (or anywhere, as long as you can find the folder afterwards).

Extracting the BedrockLauncher archive

Step 4 -- Run the executable

Go into the extracted folder and run BedrockLauncher.exe.

Launching BedrockLauncher.exe

Step 5 -- Install .NET Desktop Runtime and enable developer mode

On first launch, Windows will very likely ask you for the .NET 8.0 Desktop Runtime -- install it. You also need to enable developer mode in Settings > System > For developers, because BedrockLauncher installs the game as a loose package (raw files, not a real signed Store package), and Windows refuses this kind of install without that mode.

Installing .NET runtime and enabling developer mode

Step 6 -- Create a new installation

Launch BedrockLauncher again, sign in with your Microsoft account, go to the Installations tab, then click New installation.

Creating a new installation in BedrockLauncher

Step 7 -- Pick an old version

Give the installation a name, then in the version list, pick an old version -- typically 1.16.x or earlier. Click Create.

Selecting an old version, here 1.16.0.2

Step 8 -- Launch the installation

Click Play. File extraction can take up to ten minutes depending on your machine -- the launcher will appear frozen ("Not Responding"), this is normal, let it run.

Extraction in progress, launcher appears unresponsive

Step 9 -- Choose the cape

Once the game launches, sign in with your account, create a new character and go to the skin editor, Capes tab. There, you'll find the complete list of every cape that exists in the game -- including ones you never owned (promo event capes, past festivals, Mob Vote capes, etc). Pick whichever one you want.

Don't touch the rest of the skin appearance at this stage, just leave the cape.

Selecting a cape in the character editor

Step 10 -- Reinstall the official version

Go back to the official launcher, Installation tab, and click Uninstall on the main Bedrock installation, then reinstall it (or hit Check for Updates). Launch Minecraft Bedrock from the official launcher this time.

Uninstalling and reinstalling from the official launcher

And there you go -- your cape is there, on the official version, on your actual profile.

What's probably happening

I haven't dug into Bedrock's closed-source code (unlike Java which is decompilable), so what follows is a likely explanation, not absolute certainty. But the observed behavior fits the following hypothesis pretty well.

The cape selector was never an access control

On Bedrock, the cape selection screen most likely shows the full list of capes that exist in the game, not just the ones your account owns. On recent clients, an application filter (client-side or via a network call to an Xbox/Microsoft entitlement service) greys out or hides capes you don't own.

The key point is that this filter was probably added after the fact, on a sufficiently recent version of the game. A version like 1.16.x predates this filter, or uses a different (or absent) verification mechanism: everything in the list becomes selectable, entitlement or not.

Where exactly is the cape stored?

This is the part that explains why it survives reinstallation. Your skin/cape choice on Bedrock isn't just a throwaway local file -- it's likely synced to the Xbox Live profile associated with your Microsoft account (the same system that manages your skin on other Bedrock platforms -- mobile, console, etc.). When you select a cape in the old client, it most likely sends that selection to the profile service, exactly the same way an up-to-date client would with a legitimate cape -- because from the client's perspective, there's no difference between a cape "you own" and a cape "chosen". The profile service, for its part, trusts the client on this point: it records the selection without revalidating whether the entitlement actually exists behind it, at least not at write time.

Result: when you relaunch the up-to-date official game, it fetches your current skin/cape from the profile service -- and the service faithfully returns whatever was saved, non-legitimate cape included. The entitlement check, if it exists, likely happens at selection time in the UI (hence the filter on recent clients), not at display time of what's already saved on the profile.

The parallel with Java

It's the same family of logic flaw as the cape-mod on Java: a service trusts data without rechecking its origin at every step. On Java, it's a valid RSA signature replayed on the wrong profile. On Bedrock, it's likely a cape selection accepted by an old client that never had the right filter, then propagated without re-validation to the account's persistent state. In both cases, the problem isn't the entry point (the Java mod, the old Bedrock client) -- it's that the layer that should revalidate the entitlement downstream doesn't do it, or only does it once, in the wrong place.

Why it still works

Two possible explanations, not mutually exclusive:

  1. Mojang likely doesn't consider this a priority. It requires a third-party launcher, a multi-step process, and the result is purely cosmetic -- no gameplay advantage, no other people's data compromised.
  2. Fixing this properly would require revalidating entitlements on every profile read, not just on selection -- which means an extra network call on every skin display, for a problem that only concerns aesthetics.

Conclusion

This tutorial fits in ten screenshots, but it illustrates a principle you find everywhere in software security: as soon as a legacy system (an old client version, a legacy API, a never-updated service) can still write into a shared state, the present-day access control only protects what goes through the present. Anything that can still talk to the old API bypasses the newer filter -- not because the filter is broken, but because it was never applied to the version that came before it.


Resources

3 key takeaways

  1. The cape selector in an old Bedrock version likely shows the full list of all game capes, with no entitlement filter.
  2. The selection then syncs to your Xbox Live profile like any legitimate cape -- the profile service trusts the client.
  3. The entitlement check, if it exists, happens at selection in the recent UI -- not at read time of what's already saved on the account.

Comment obtenir n'importe quelle cape sur Minecraft Bedrock

Un launcher tiers, une vieille version du jeu, et un sélecteur de capes qui n'a jamais appris à dire non. Tuto complet plus l'explication probable du pourquoi ça marche.

Comment obtenir n'importe quelle cape sur Minecraft Bedrock

Sur Java, il existe plein de moyens tordus de se retrouver avec une cape qu'on ne devrait pas avoir (voir l'article sur cape-mod). Sur Bedrock, le jeu est différent, l'auth est différente, mais il existe quand même un moyen -- pas besoin de mod, pas besoin de toucher au moindre paquet réseau. Juste un launcher tiers et une version du jeu suffisamment vieille pour ne pas avoir la validation qu'on croit acquise.

Voici comment faire, et ensuite on regarde ce qui se passe probablement sous le capot.

Ce qu'il te faut

  • Un compte Microsoft qui possède déjà Minecraft Bedrock (le tien fait très bien l'affaire)
  • Le launcher Minecraft officiel installé
  • BedrockLauncher, un launcher tiers open source qui permet d'installer et de lancer n'importe quelle version historique de Bedrock
  • .NET 8.0 Desktop Runtime
  • Le mode développeur activé sur Windows

Étape 1 -- Installer Bedrock au moins une fois avec le launcher officiel

Avant de faire quoi que ce soit d'autre, ouvre le launcher Minecraft officiel, va sur l'onglet Minecraft: Bedrock Edition, et clique sur Install. Il faut que Bedrock ait été installé et lancé au moins une fois par la voie officielle avant de toucher à BedrockLauncher.

Installer Bedrock Edition depuis le launcher officiel

Étape 2 -- Télécharger BedrockLauncher

Direction la page des releases GitHub du projet. Prends le zip de la dernière version listée dans les Assets.

Page des releases GitHub de BedrockLauncher

Étape 3 -- Extraire l'archive

Une fois le zip téléchargé, extrais-le dans ton dossier Downloads (ou n'importe où, tant que tu retrouves le dossier après).

Extraction de l'archive BedrockLauncher

Étape 4 -- Lancer l'exécutable

Va dans le dossier extrait et lance BedrockLauncher.exe.

Lancement de BedrockLauncher.exe

Étape 5 -- Installer .NET Desktop Runtime et activer le mode développeur

Au premier lancement, Windows va très probablement te réclamer le .NET 8.0 Desktop Runtime -- installe-le. Il faut aussi activer le mode développeur dans Paramètres > Système > Pour les développeurs, parce que BedrockLauncher installe le jeu comme un paquet loose (des fichiers bruts, pas un vrai paquet signé du Store), et Windows refuse ce genre d'installation sans ce mode.

Installation du runtime .NET et activation du mode développeur

Étape 6 -- Créer une nouvelle installation

Relance BedrockLauncher, connecte-toi avec ton compte Microsoft, va dans l'onglet Installations, puis clique sur New installation.

Création d'une nouvelle installation dans BedrockLauncher

Étape 7 -- Choisir une vieille version

Donne un nom à l'installation, puis dans la liste des versions, choisis une vieille version -- typiquement une version 1.16.x ou plus ancienne. Clique sur Create.

Sélection d'une ancienne version, ici 1.16.0.2

Étape 8 -- Lancer l'installation

Clique sur Play. L'extraction des fichiers peut prendre jusqu'à dix minutes selon la machine -- le launcher va sembler figé (« Not Responding »), c'est normal, laisse-le tourner.

Extraction en cours, le launcher semble ne plus répondre

Étape 9 -- Choisir la cape

Une fois le jeu lancé, connecte-toi avec ton compte, crée un nouveau personnage et va dans l'éditeur de skin, onglet Capes. Là, tu vas retrouver la liste complète de toutes les capes qui existent dans Minecraft -- y compris celles que tu n'as jamais eues (capes d'events promo, de festivals passés, de Mob Vote, etc). Choisis celle que tu veux.

Ne touche pas au reste de l'apparence du skin à ce stade, laisse juste la cape.

Sélection d'une cape dans l'éditeur de personnage

Étape 10 -- Réinstaller la version officielle

Retourne dans le launcher officiel, onglet Installation, et clique sur Uninstall sur l'installation Bedrock principale, puis réinstalle-la (ou fais Check for Updates). Relance Minecraft Bedrock depuis le launcher officiel cette fois.

Désinstallation et réinstallation depuis le launcher officiel

Et voilà -- ta cape est là, sur la version officielle, sur ton vrai profil.

Ce qu'il se passe probablement

Je n'ai pas mis les mains dans le code source fermé de Bedrock (contrairement à Java qui est décompilable), donc ce qui suit est une explication probable, pas une certitude absolue. Mais le comportement observé colle assez bien à l'hypothèse suivante.

Le sélecteur de capes n'a jamais été un contrôle d'accès

Sur Bedrock, l'écran de sélection de capes affiche vraisemblablement la liste complète des capes qui existent dans le jeu, pas seulement celles que ton compte possède. Sur les clients récents, un filtre applicatif (côté client ou via un appel réseau vers un service d'entitlements Xbox/Microsoft) grise ou masque les capes que tu ne possèdes pas.

Le point clé, c'est que ce filtre a probablement été ajouté après coup, sur une version du jeu suffisamment récente. Une version comme 1.16.x est antérieure à ce filtre, ou utilise un mécanisme de vérification différent (voire absent) : tout ce qui est dans la liste devient sélectionnable, entitlement ou pas.

La cape est stockée où, exactement ?

C'est la partie qui explique pourquoi ça survit à la réinstallation. Le choix de skin/cape sur Bedrock n'est pas juste un fichier local jetable -- il est probablement synchronisé sur le profil Xbox Live associé à ton compte Microsoft (le même système qui gère ton skin sur les autres plateformes Bedrock -- mobile, console, etc.). Quand tu sélectionnes une cape dans le vieux client, celui-ci envoie très probablement cette sélection au service de profil, exactement comme le ferait un client à jour avec une cape légitime -- parce que du point de vue du client, il n'y a aucune différence entre une cape « à toi » et une cape « choisie ». Le service de profil, lui, fait confiance au client sur ce point : il enregistre la sélection sans revalider si l'entitlement existe réellement derrière, du moins pas au moment de l'écriture.

Résultat : quand tu relances le jeu officiel à jour, il va chercher ton skin/cape actuel sur le service de profil -- et le service renvoie fidèlement ce qui a été enregistré, cape non-légitime comprise. Le check d'entitlement, s'il existe, se fait probablement au moment de la sélection dans l'UI (d'où le filtre sur les clients récents), pas au moment de l'affichage de ce qui est déjà enregistré sur le profil.

Le parallèle avec Java

C'est la même famille de faille logique que celle du cape-mod sur Java : un service fait confiance à une donnée sans revérifier son origine à chaque étape. Sur Java, c'est une signature RSA valide mais replayée sur le mauvais profil. Sur Bedrock, c'est vraisemblablement une sélection de cape acceptée par un vieux client qui n'a jamais eu le bon filtre, puis propagée sans re-vérification vers l'état persistant du compte. Dans les deux cas, le problème n'est pas le point d'entrée (le mod Java, le vieux client Bedrock) -- c'est que la couche qui devrait revalider l'entitlement en aval ne le fait pas, ou ne le fait qu'une fois, au mauvais endroit.

Pourquoi ça marche encore

Deux explications possibles, pas incompatibles entre elles :

  1. Mojang ne considère probablement pas ça comme prioritaire. Il faut un launcher tiers, une manipulation en plusieurs étapes, et le résultat est purement cosmétique -- aucun avantage de gameplay, aucune donnée d'autrui compromise.
  2. Patcher ça correctement demanderait de revalider les entitlements à chaque lecture du profil, pas seulement à la sélection -- ce qui veut dire un appel réseau supplémentaire à chaque affichage de skin, pour un problème qui ne concerne que l'esthétique.

Conclusion

Ce tuto tient en dix captures d'écran, mais il illustre un principe qu'on retrouve partout en sécurité logicielle : dès qu'un système historique (une vieille version de client, une API legacy, un service jamais mis à jour) peut encore écrire dans un état partagé, le contrôle d'accès du présent ne protège que ce qui passe par le présent. Tout ce qui peut encore parler à l'ancienne API contourne le filtre plus récent -- pas parce que le filtre est cassé, mais parce qu'il n'a jamais été appliqué à la version qui l'a précédé.


Ressources

3 points clés

  1. Le sélecteur de capes d'une vieille version de Bedrock affiche probablement la liste complète des capes du jeu, sans filtre d'entitlement.
  2. La sélection est ensuite synchronisée sur ton profil Xbox Live comme n'importe quelle cape légitime -- le service de profil fait confiance au client.
  3. Le check d'entitlement, s'il existe, se fait à la sélection dans l'UI récente -- pas à la lecture de ce qui est déjà enregistré sur le compte.

如何在 Minecraft 基岩版上获取任意披风

一个第三方启动器、一个旧版本游戏、还有一个从没学会说「不」的披风选择器。完整教程,加上它为什么会奏效的可能解释。

如何在 Minecraft 基岩版上获取任意披风

在 Java 版上,有各种歪门邪道让你搞到不该有的披风(参考 cape-mod 文章)。在基岩版上,游戏不同了,认证也不同了,但方法依然存在----不需要模组,不需要动任何网络数据包。只需要一个第三方启动器和一个旧到还没做好验证的游戏版本。

教你怎么做,然后我们看看这背后到底是怎么回事。

你需要什么

  • 一个已经拥有 Minecraft 基岩版的 Microsoft 账号(你自己的就行)
  • 已安装官方 Minecraft 启动器
  • BedrockLauncher,一个开源的第三方启动器,允许你安装和运行基岩版的任意历史版本
  • .NET 8.0 Desktop Runtime
  • Windows 上启用了开发人员模式

第 1 步----用官方启动器至少安装一次基岩版

在做其他事情之前,打开官方 Minecraft 启动器,进入 Minecraft: Bedrock Edition 标签页,点击 Install。在碰 BedrockLauncher 之前,基岩版必须至少通过官方渠道安装并启动过一次。

从官方启动器安装基岩版

第 2 步----下载 BedrockLauncher

前往项目的 GitHub Releases 页面。下载 Assets 下列出的最新版本的 zip 文件。

BedrockLauncher 的 GitHub Releases 页面

第 3 步----解压文件

下载完 zip 之后,解压到你的 Downloads 文件夹(或任何你能找到的地方)。

解压 BedrockLauncher

第 4 步----运行可执行文件

进入解压后的文件夹,运行 BedrockLauncher.exe。

运行 BedrockLauncher.exe

第 5 步----安装 .NET Desktop Runtime 并启用开发人员模式

第一次运行时,Windows 很可能会让你安装 .NET 8.0 Desktop Runtime----装就完了。你还需要在 设置 > 系统 > 开发人员 中启用开发人员模式,因为 BedrockLauncher 以松散包的形式安装游戏(原始文件,不是真正签名的商店包),而没有这个模式 Windows 会拒绝这种安装。

安装 .NET 运行时并启用开发人员模式

第 6 步----创建新安装

重新打开 BedrockLauncher,用你的 Microsoft 账号登录,进入 Installations 标签页,点击 New installation。

在 BedrockLauncher 中创建新安装

第 7 步----选择一个旧版本

给安装起个名字,然后在版本列表中选择一个旧版本----一般是 1.16.x 或更早的。点击 Create。

选择旧版本,这里是 1.16.0.2

第 8 步----启动安装

点击 Play。文件提取根据电脑配置可能需要长达十分钟----启动器看起来会像卡死了(「未响应」),这是正常的,让它跑。

提取进行中,启动器似乎未响应

第 9 步----选择披风

游戏启动后,用你的账号登录,创建新角色,然后进入皮肤编辑器,**披风(Capes)**标签页。在这里,你会看到游戏中存在的所有披风的完整列表----包括你从未拥有过的那些(促销活动披风、过往节日披风、Mob Vote 披风等)。挑你想要的随便选。

在这个阶段不要动皮肤的其他部分,只留下披风就行。

在角色编辑器中选取披风

第 10 步----重装官方版本

回到官方启动器,安装标签页,点击主基岩版安装的 Uninstall,然后重新安装(或点击 检查更新)。这次从官方启动器启动 Minecraft 基岩版。

从官方启动器卸载并重装

这就行了----你的披风就在官方版本上,在你真实的个人资料里。

可能发生了什么

我没有逆向基岩版的闭源代码(不像 Java 版可以反编译),所以下面是一个可能的解释,不是百分百确定的。但观察到的行为与以下假设非常吻合。

披风选择器从来就不是一个权限控制

在基岩版上,披风选择界面很可能展示的是游戏中存在的所有披风的完整列表,而不仅是你账号拥有的那些。在较新的客户端上,一个应用层过滤器(客户端侧或通过网络调用 Xbox/Microsoft 的游戏权益服务)会把你未拥有的披风变灰或隐藏。

关键在于,这个过滤器很可能是后来加上的,在一个足够新的版本才有的。像 1.16.x 这样的版本在这个过滤器之前,或者使用了不同的(甚至没有的)验证机制:列表里的一切都可以选择,管你有没有权益。

披风到底存在哪里?

这个部分解释了为什么重装之后还能保留。在基岩版上,皮肤/披风的选择不只是一个用完就丢的本地文件----它很可能是同步到你 Microsoft 账号关联的 Xbox Live 个人资料上的(跟管理你在其他基岩版平台----手机、主机等----上的皮肤是同一个系统)。当你在旧客户端选择一个披风时,它极有可能把这次选择发给了个人资料服务,就像一个最新客户端发送合法披风选择的方式一模一样----因为在客户端的视角里,「你拥有的」披风和「被选中的」披风没有任何区别。而个人资料服务在这一点上信任客户端:它记录这次选择,并不重新验证这权益背后是否真的存在,至少在写入时不做。

结果就是:当你重新启动最新版官方游戏时,它从个人资料服务拉取你当前的皮肤/披风----而服务忠实地返回了之前保存的内容,非法披风也包括在内。权益检查如果存在的话,很可能发生在最新 UI 中选择的时候(所以新客户端有过滤器),而不是显示已经存到账号上的内容的时候。

与 Java 版的相似之处

这跟 Java 版的 cape-mod 是同一类逻辑漏洞:一个服务相信了数据,却不在每一步都重新验证它的来源。Java 版上,是一个有效的 RSA 签名被重放到错误的个人资料上。基岩版上,则很可能是一个旧客户端接受了一个披风选择(因为它从来没有正确的过滤器),然后这个选择在没有重新验证的情况下被传播到账号的持久状态里。两种情况下,问题都不是入口(Java 的 mod、旧的基岩版客户端)----而是应该在下游重新验证权益的那一层没有这样做,或者只做了一次,在错误的地方。

为什么现在还能用

两种可能的解释,互不排斥:

  1. Mojang 大概率不把这当回事。 这需要一个第三方启动器、一个多步操作,而且结果纯属外观类----没有游戏性优势,没有他人的数据受到威胁。
  2. 想彻底修复这个问题,需要在每次读取个人资料时都重新验证权益,而不仅仅在选择时----这就意味着每次显示皮肤都要多一次网络调用,为了一个只关乎外观的问题。

总结

这个教程用十张截图能讲完,但它展示了一个你在软件安全领域随处可见的原则:只要一个遗留系统(一个旧版客户端、一个遗留 API、一个从未更新过的服务)仍然可以写入共享状态,当今的访问控制就只能保护经过当今系统的东西。任何还能跟旧 API 对话的东西都能绕过新过滤器----不是因为过滤器坏了,而是因为它从未被应用到之前的版本上。


资源

3 个要点

  1. 旧版基岩版的披风选择器很可能展示所有游戏披风的完整列表,没有权益过滤器。
  2. 选择会像任何合法披风一样同步到你的 Xbox Live 个人资料----个人资料服务信任客户端。
  3. 权益检查如果存在的话,发生在最新 UI 的选择时----而不是读取已保存在账号上的内容时。

Minecraft Bedrockでどんなケープでも入手する方法

サードパーティのランチャー、古いバージョンのゲーム、そして「ノー」を覚えたことのないケープセレクター。完全なチュートリアルに加えて、なぜこれが動くのかの推測解説。

Minecraft Bedrockでどんなケープでも入手する方法

Java版には、本来持つべきでないケープを手に入れるための曲がった方法が山ほどある(cape-modの記事参照)。Bedrockではゲームも認証も違うが、それでも方法はある――MODもいらないし、ネットワークパケットの細工もいらない。サードパーティのランチャーと、検証がまだ甘い古いバージョンのゲームだけあればいい。

やり方を説明して、そのあと内部で何が起きているのか見ていこう。

必要なもの

  • すでにMinecraft Bedrockを所有しているMicrosoftアカウント(自分のやつでOK)
  • 公式Minecraftランチャーがインストール済み
  • BedrockLauncher、Bedrockの任意の過去バージョンをインストールして起動できるオープンソースのサードパーティランチャー
  • .NET 8.0 Desktop Runtime
  • Windowsで開発者モードが有効

ステップ1 ―― 公式ランチャーでBedrockを最低一度はインストール

他のことをする前に、公式Minecraftランチャーを開き、Minecraft: Bedrock Editionタブに行ってインストールをクリックする。BedrockLauncherを触る前に、Bedrockが公式ルートで少なくとも一度インストール・起動済みである必要がある。

公式ランチャーからBedrock Editionをインストール

ステップ2 ―― BedrockLauncherをダウンロード

プロジェクトのGitHubリリースページへ。Assetsの下に表示されている最新バージョンのzipを取ってくる。

BedrockLauncherのGitHubリリースページ

ステップ3 ―― アーカイブを展開

zipをダウンロードしたら、Downloadsフォルダ(または後で見つけられる場所ならどこでも)に展開する。

BedrockLauncherのアーカイブを展開

ステップ4 ―― 実行ファイルを起動

展開したフォルダに入り、BedrockLauncher.exeを実行する。

BedrockLauncher.exeを起動

ステップ5 ―― .NET Desktop Runtimeをインストールして開発者モードを有効化

初回起動時に、Windowsがほぼ確実に**.NET 8.0 Desktop Runtimeを要求してくるのでインストールする。さらに開発者モード**を設定 > システム > 開発者向けで有効にする必要がある。BedrockLauncherはゲームをルースパッケージ(生ファイルで、署名された正式なStoreパッケージではない)としてインストールするため、このモードがないとWindowsが拒否する。

.NETランタイムのインストールと開発者モードの有効化

ステップ6 ―― 新しいインストールを作成

もう一度BedrockLauncherを起動し、Microsoftアカウントでログイン、Installationsタブに行ってNew installationをクリックする。

BedrockLauncherで新しいインストールを作成

ステップ7 ―― 古いバージョンを選ぶ

インストールに名前を付け、バージョン一覧から古いバージョンを選ぶ――典型的には1.16.x以前。Createをクリック。

古いバージョンの選択、ここでは1.16.0.2

ステップ8 ―― インストールを起動

Playをクリック。マシンによってファイル展開は最大10分かかることがある――ランチャーが固まったように見えても(「応答なし」)、それは正常なのでそのまま走らせる。

展開中、ランチャーが応答なしに見える

ステップ9 ―― ケープを選ぶ

ゲームが起動したら、自分のアカウントでログインし、新しいキャラクターを作ってスキンエディターのケープタブに移動する。すると、持ったことのないケープを含め、ゲーム内に存在するすべてのケープの完全なリストが表示される(プロモイベント、過去のフェス、Mob Voteなどのケープ)。好きなものを選ぼう。

この段階ではスキンの他の部分には触らず、ケープだけにしておく。

キャラクターエディターでケープを選択

ステップ10 ―― 公式バージョンを再インストール

公式ランチャーに戻り、インストールタブでメインのBedrockインストールをアンインストールし、それから再インストールする(または更新をチェックをクリック)。今度は公式ランチャーからMinecraft Bedrockを起動する。

公式ランチャーからアンインストールと再インストール

これで完了――ケープが公式バージョン上で、お前の実際のプロフィールに表示されているはずだ。

おそらく何が起きているのか

Bedrockのクローズドソースコードを掘り返したわけじゃないから(Javaと違ってデコンパイルできない)、以下は推測であって絶対確実ではない。でも観測された挙動は以下の仮説とかなりよく合致する。

ケープセレクターはもともとアクセス制御じゃなかった

Bedrockでは、ケープ選択画面はおそらくゲーム内に存在する全ケープの完全なリストを表示していて、アカウントが所有しているものだけではない。最近のクライアントでは、アプリケーションフィルター(クライアント側またはXbox/Microsoftのエンタイトルメントサービスへのネットワーク呼び出し経由)が所有していないケープをグレーアウトするか非表示にする。

重要なのは、このフィルターがおそらく後付けで追加されたということだ。1.16.xのようなバージョンはこのフィルターより前か、異なる(あるいは存在しない)検証メカニズムを使っている:リストにあるものすべてが選択可能になり、エンタイトルメントがあろうがなかろうが関係ない。

ケープは正確にはどこに保存されるのか?

ここが再インストール後も生き残る理由を説明する部分だ。Bedrockでのスキン/ケープ選択は単なる使い捨てのローカルファイルじゃない――Microsoftアカウントに紐づいたXbox Liveプロフィールにおそらく同期されている(モバイルやコンソールなど他のBedrockプラットフォームでスキンを管理するのと同じシステムだ)。古いクライアントでケープを選択すると、最新のクライアントが正当なケープで行うのとまったく同じ方法で、プロフィールサービスにその選択を送る可能性が高い――なぜならクライアントの視点では、「お前が所有している」ケープと「選択された」ケープの間に違いはないからだ。プロフィールサービスはこの点でクライアントを信頼する:選択を記録し、その背後に実際にエンタイトルメントが存在するかどうかを再確認しない、少なくとも書き込み時には。

結果:最新の公式ゲームを再起動すると、現在のスキン/ケープをプロフィールサービスから取得し――サービスは保存されたとおりに忠実に返す、非正規なケープも含めて。エンタイトルメントチェックが存在するなら、おそらく最近のUIでの選択時に発生し(だから最近のクライアントでフィルターがある)、すでにプロフィールに保存されたものを表示する時ではない。

Java版との類似

Java版のcape-modと同じ系統のロジック欠陥だ:サービスがデータを信頼し、あらゆる段階でその出所を再チェックしない。Java版では、有効なRSA署名が間違ったプロフィールにリプレイされる。Bedrock版では、正しいフィルターを持たなかった古いクライアントがケープ選択を受け入れ、それが再検証なしにアカウントの永続状態に伝播される。どちらの場合も、問題は入り口(Javaのmod、古いBedrockクライアント)ではなく――エンタイトルメントを下流で再検証すべき層がそれをしないか、一度だけ、間違った場所でやってしまうことだ。

なぜまだ使えるのか

二つの可能な説明、相互排他的ではない:

  1. Mojangはおそらくこれを優先事項とは考えていない。 サードパーティのランチャー、複数ステップの操作が必要で、結果は純粋に見た目だけ――ゲームプレイ上の利点もなく、他人のデータも侵害されない。
  2. これをちゃんと修正するには、選択時だけでなくプロフィール読み取りのたびにエンタイトルメントを再検証する必要がある――つまりスキン表示のたびにネットワーク呼び出しが追加され、見た目だけの問題のためにそれは割に合わない。

結論

このチュートリアルはスクリーンショット10枚で説明できるが、ソフトウェアセキュリティの至る所で見られる原則を示している:レガシーシステム(古いクライアントバージョン、レガシーAPI、更新されていないサービス)がまだ共有状態に書き込める限り、現在のアクセス制御は現在を通過するものだけを守る。旧APIとまだ通信できるものはすべて新しいフィルターを迂回する――フィルターが壊れているからではなく、それが前のバージョンに適用されたことが一度もないからだ。


リソース

3つのポイント

  1. 古いBedrockバージョンのケープセレクターは、エンタイトルメントフィルターなしで全ゲーム内ケープの完全なリストを表示する可能性が高い。
  2. 選択は正当なケープと同じようにXbox Liveプロフィールに同期される――プロフィールサービスはクライアントを信頼する。
  3. エンタイトルメントチェックは、存在するならば最近のUIでの選択時に発生し――すでにアカウントに保存されたものを読み取る時には発生しない。

Minecraft Bedrock에서 어떤 망토든 얻는 방법

서드파티 런처, 오래된 게임 버전, 그리고 '아니오'를 배운 적 없는 망토 선택기. 전체 튜토리얼과 작동 원리에 대한 추정 해설.

Minecraft Bedrock에서 어떤 망토든 얻는 방법

자바 에디션에는 가질 수 없는 망토를 얻는 꼬인 방법이 많다(cape-mod 글 참고). 베드락은 게임도 다르고 인증도 다르지만, 그래도 방법이 있다 -- 모드도 필요 없고 네트워크 패킷 조작도 필요 없다. 그냥 서드파티 런처 하나와, 검증이 덜 들어간 오래된 버전의 게임만 있으면 된다.

하는 방법을 알려주고, 그다음에 내부에서 무슨 일이 일어나는지 살펴보자.

필요한 것

  • Minecraft Bedrock을 이미 소유한 Microsoft 계정 (네 걸로 충분)
  • 공식 Minecraft 런처 설치됨
  • BedrockLauncher, Bedrock의 모든 과거 버전을 설치하고 실행할 수 있는 오픈소스 서드파티 런처
  • .NET 8.0 Desktop Runtime
  • Windows에 개발자 모드 활성화

1단계 -- 공식 런처로 Bedrock을 최소 한 번 설치하기

다른 걸 하기 전에, 공식 Minecraft 런처를 열고 Minecraft: Bedrock Edition 탭으로 가서 Install을 클릭한다. BedrockLauncher를 건드리기 전에 공식 경로로 Bedrock이 최소 한 번 설치되고 실행되어야 한다.

공식 런처에서 Bedrock Edition 설치하기

2단계 -- BedrockLauncher 다운로드

프로젝트의 GitHub 릴리스 페이지로 간다. Assets 아래에 나열된 최신 버전의 zip을 받는다.

BedrockLauncher GitHub 릴리스 페이지

3단계 -- 압축 풀기

zip을 다운로드한 후, Downloads 폴더(혹은 나중에 찾을 수 있는 아무 곳)에 압축을 푼다.

BedrockLauncher 압축 풀기

4단계 -- 실행 파일 실행

압축 푼 폴더로 들어가서 BedrockLauncher.exe를 실행한다.

BedrockLauncher.exe 실행

5단계 -- .NET Desktop Runtime 설치 및 개발자 모드 활성화

처음 실행할 때 Windows가 .NET 8.0 Desktop Runtime을 요구할 가능성이 높다 -- 설치한다. 또한 설정 > 시스템 > 개발자용에서 개발자 모드를 활성화해야 한다. BedrockLauncher가 게임을 루스 패키지(원시 파일, 서명된 진짜 Store 패키지가 아님)로 설치하기 때문에, 이 모드 없이는 Windows가 설치를 거부한다.

.NET 런타임 설치 및 개발자 모드 활성화

6단계 -- 새 설치 만들기

BedrockLauncher를 다시 실행하고, Microsoft 계정으로 로그인한 후 Installations 탭으로 가서 New installation을 클릭한다.

BedrockLauncher에서 새 설치 만들기

7단계 -- 오래된 버전 선택

설치에 이름을 붙이고, 버전 목록에서 오래된 버전을 선택한다 -- 보통 1.16.x 이하. Create를 클릭한다.

오래된 버전 선택, 여기서는 1.16.0.2

8단계 -- 설치 실행

Play를 클릭한다. 파일 추출은 컴퓨터에 따라 최대 10분까지 걸릴 수 있다 -- 런처가 멈춘 것처럼 보여도("응답 없음") 정상이니 그대로 둔다.

추출 진행 중, 런처가 응답하지 않는 것처럼 보임

9단계 -- 망토 선택

게임이 실행되면 계정으로 로그인하고, 새 캐릭터를 만든 후 스킨 편집기에서 망토(Capes) 탭으로 간다. 거기에는 한 번도 가져본 적 없는 망토를 포함해 게임에 존재하는 모든 망토의 전체 목록이 표시된다(프로모션 이벤트, 지난 축제, Mob Vote 등). 원하는 걸 골라라.

이 단계에서는 스킨의 나머지 외형을 건드리지 말고, 망토만 남겨둔다.

캐릭터 편집기에서 망토 선택

10단계 -- 공식 버전 재설치

공식 런처로 돌아가서 설치 탭에서 메인 Bedrock 설치를 제거한 후 다시 설치한다(혹은 업데이트 확인을 누른다). 이번에는 공식 런처에서 Minecraft Bedrock을 실행한다.

공식 런처에서 제거 및 재설치

이제 됐다 -- 망토가 공식 버전에서, 네 실제 프로필에 적용되어 있다.

아마도 내부에서 일어나는 일

베드락의 폐쇄 소스 코드를 직접 들여다본 건 아니라서(자바는 디컴파일 가능하지만), 아래 설명은 추정이지 확실한 건 아니다. 하지만 관찰된 동작은 다음 가설과 꽤 잘 맞는다.

망토 선택기는 원래 접근 제어가 아니었다

베드락에서 망토 선택 화면은 네 계정이 소유한 망토만이 아니라 게임에 존재하는 전체 망토 목록을 표시할 가능성이 크다. 최신 클라이언트에서는 애플리케이션 필터(클라이언트 측 또는 Xbox/Microsoft 자격 서비스로의 네트워크 호출)가 소유하지 않은 망토를 회색으로 표시하거나 숨긴다.

핵심은 이 필터가 아마도 나중에 추가된 것이라는 점이다. 1.16.x 같은 버전은 이 필터보다 이전이거나, 다른(혹은 없는) 검증 메커니즘을 사용한다: 목록에 있는 모든 것이 선택 가능해지며, 자격 여부는 상관없다.

망토는 정확히 어디에 저장되는가?

이 부분이 재설치 후에도 살아남는 이유를 설명한다. Bedrock에서 스킨/망토 선택은 그냥 버리는 로컬 파일이 아니다 -- Microsoft 계정에 연결된 Xbox Live 프로필에 동기화될 가능성이 크다(모바일, 콘솔 등 다른 Bedrock 플랫폼에서 스킨을 관리하는 것과 동일한 시스템). 오래된 클라이언트에서 망토를 선택하면, 최신 클라이언트가 정상 망토와 똑같이 보내는 것과 같은 방식으로 프로필 서비스에 그 선택을 전송할 가능성이 크다 -- 클라이언트 입장에서는 "네가 소유한" 망토와 "선택된" 망토 사이에 차이가 없기 때문이다. 프로필 서비스는 이 지점에서 클라이언트를 신뢰한다: 적어도 쓰기 시점에는 실제 자격이 존재하는지 재검증하지 않고 선택을 기록한다.

결과: 최신 공식 게임을 다시 실행하면, 현재 스킨/망토를 프로필 서비스에서 가져오고 -- 서비스는 저장된 그대로 충실히 반환하며, 비정상 망토도 포함된다. 자격 확인이 존재한다면 아마도 최근 UI에서 선택 시점에 이루어지며(그래서 최신 클라이언트에서 필터가 있는 것), 이미 프로필에 저장된 것을 표시하는 시점에는 이루어지지 않는다.

자바와의 평행

자바의 cape-mod와 동일한 계열의 논리 결함이다: 서비스가 모든 단계에서 데이터의 출처를 재확인하지 않고 신뢰한다. 자바에서는 유효한 RSA 서명이 잘못된 프로필에 재생되는 방식이다. 베드락에서는 올바른 필터가 없었던 오래된 클라이언트가 망토 선택을 수락하고, 그게 계정의 영구 상태로 재검증 없이 전파되는 방식일 것이다. 두 경우 모두 문제는 진입점(자바 모드, 오래된 베드락 클라이언트)이 아니라 -- 자격을 하류에서 재검증해야 하는 계층이 그걸 하지 않거나, 한 번만, 잘못된 위치에서 한다는 점이다.

왜 아직도 되는가

두 가지 가능한 설명, 상호 배타적이지 않다:

  1. Mojang은 이걸 우선순위로 보지 않을 가능성이 크다. 서드파티 런처와 여러 단계의 조작이 필요하고, 결과는 순수하게 치장용이다 -- 게임플레이 이점도 없고, 타인의 데이터도 손상되지 않는다.
  2. 이걸 제대로 고치려면 프로필을 읽을 때마다 자격을 재검증해야 한다, 선택할 때만이 아니라 -- 즉 스킨을 표시할 때마다 네트워크 호출이 추가되어야 하며, 이건 순수 미관 문제다.

결론

이 튜토리얼은 스크린샷 10장으로 끝나지만, 소프트웨어 보안 어디에서나 볼 수 있는 원칙을 보여준다: 레거시 시스템(오래된 클라이언트 버전, 레거시 API, 업데이트되지 않은 서비스)이 여전히 공유 상태에 쓸 수 있는 한, 현재의 접근 제어는 현재를 통과하는 것만 보호한다. 여전히 과거 API와 통신할 수 있는 모든 것은 최신 필터를 우회한다 -- 필터가 깨져서가 아니라, 그 이전 버전에 적용된 적이 없기 때문이다.


자료

3가지 핵심

  1. 오래된 Bedrock 버전의 망토 선택기는 아마도 자격 필터 없이 게임 내 모든 망토의 전체 목록을 보여준다.
  2. 선택은 일반 망토와 마찬가지로 Xbox Live 프로필에 동기화된다 -- 프로필 서비스는 클라이언트를 신뢰한다.
  3. 자격 확인이 있다면 최근 UI의 선택 시점에 이루어지며 -- 이미 계정에 저장된 것을 읽을 때는 이루어지지 않는다.

Minecraft Bedrock'ta herhangi bir pelerini nasil alirsiniz

Ucuncu parti bir baslatici, oyunun eski bir surumu ve hayir demeyi asla ogrenmemis bir pelerin secici. Tam rehber arti neden calistiginin olasi aciklamasi.

Minecraft Bedrock'ta herhangi bir pelerini nasil alirsiniz

Java'da olmamaniz gereken bir pelerine sahip olmanin bir suru dolambaçli yolu var (cape-mod yazisina bakin). Bedrock'ta oyun farkli, kimlik dogrulama farkli, ama yine de bir yolu var -- mod gerekmiyor, ag paketiyle oynamak gerekmiyor. Sadece ucuncu parti bir baslatici ve beklenen dogrulamaya sahip olmayacak kadar eski bir oyun surumu.

Iste nasil yapilacagi, ardindan da kaputun altinda muhtemelen neler olduguna bakalim.

Ihtiyaciniz olanlar

  • Halihazirda Minecraft Bedrock'a sahip bir Microsoft hesabi (sizinki is gorur)
  • Resmi Minecraft baslaticisi kurulu
  • BedrockLauncher, Bedrock'un herhangi bir tarihi surumunu kurup calistirmaniza olanak saglayan acik kaynakli bir ucuncu parti baslatici
  • .NET 8.0 Desktop Runtime
  • Windows'ta gelistirici modu etkin

Adim 1 -- Bedrock'i resmi baslaticiyla en az bir kez kurun

Baska bir sey yapmadan once, resmi Minecraft baslaticisini acin, Minecraft: Bedrock Edition sekmesine gidin ve Yukle'ye tiklayin. BedrockLauncher'a dokunmadan once Bedrock'in en az bir kez resmi kanaldan kurulmus ve calistirilmis olmasi gerek.

Resmi baslaticidan Bedrock Edition'i kurma

Adim 2 -- BedrockLauncher'i indirin

Projenin GitHub surumler sayfasina gidin. Assets altinda listelenen en son surumun zip dosyasini alin.

BedrockLauncher GitHub surumler sayfasi

Adim 3 -- Arsivi cikarin

Zip indirildikten sonra, Indirilenler klasorune (veya sonra bulabileceginiz herhangi bir yere) cikarin.

BedrockLauncher arsivini cikarma

Adim 4 -- Calistirilabilir dosyayi calistirin

Cikartilan klasore gidin ve BedrockLauncher.exe'yi calistirin.

BedrockLauncher.exe'yi calistirma

Adim 5 -- .NET Desktop Runtime'i yukleyin ve gelistirici modunu etkinlestirin

Ilk calistirmada Windows buyuk ihtimalle .NET 8.0 Desktop Runtime isteyecek -- kurun. Ayrica Ayarlar > Sistem > Gelistiriciler icin uzerinden gelistirici modunu etkinlestirmeniz gerek, cunku BedrockLauncher oyunu loose paket olarak kurar (ham dosyalar, imzali gercek bir Store paketi degil) ve Windows bu mod olmadan bu tarz bir kurulumu reddeder.

.NET Runtime kurulumu ve gelistirici modunu etkinlestirme

Adim 6 -- Yeni bir kurulum olusturun

BedrockLauncher'i tekrar baslatin, Microsoft hesabinizla giris yapin, Installations sekmesine gidin ve New installation'a tiklayin.

BedrockLauncher'da yeni kurulum olusturma

Adim 7 -- Eski bir surum secin

Kuruluma bir isim verin, sonra surum listesinden eski bir surum secin -- tipik olarak 1.16.x veya daha eski. Create'e tiklayin.

Eski bir surum secme, burada 1.16.0.2

Adim 8 -- Kurulumu baslatin

Play'e tiklayin. Dosya cikarma islemi bilgisayara bagli olarak on dakikaya kadar surebilir -- baslatici donmus gorunecek ("Yanit Vermiyor"), bu normal, calismaya birakin.

Cikarma islemi devam ediyor, baslatici yanit vermiyor gorunuyor

Adim 9 -- Pelerini secin

Oyun baslatildiktan sonra, hesabinizla giris yapin, yeni bir karakter olusturun ve skin editorunde Pelerinler sekmesine gidin. Orada, hic sahip olmadiklariniz da dahil olmak uzere oyunda var olan tum pelerinlerin tam listesini bulacaksiniz (promosyon etkinlikleri, gecmis festivaller, Mob Vote pelerinleri vb.). Istediginizi secin.

Bu asamada skinin geri kalan gorunumune dokunmayin, sadece pelerini birakin.

Karakter editorunde pelerin secimi

Adim 10 -- Resmi surumu yeniden yukleyin

Resmi baslaticiya geri donun, Kurulum sekmesi, ana Bedrock kurulumunda Kaldir'a tiklayin, sonra yeniden yukleyin (veya Guncellemeleri Denetle'ye tiklayin). Minecraft Bedrock'i bu sefer resmi baslaticidan baslatin.

Resmi baslaticidan kaldirma ve yeniden yukleme

Iste bu kadar -- pelerininiz orada, resmi surumde, gercek profilinizde.

Muhtemelen neler oluyor

Bedrock'un kapali kaynak kodunu kurcalamadim (derlenebilir olan Java'nin aksine), bu yuzden asagidaki olasi bir aciklama, kesin bir bilgi degil. Ancak gozlemlenen davranis asagidaki hipoteze oldukca iyi uyuyor.

Pelerin secici hicbir zaman bir erisim kontrolu degildi

Bedrock'ta pelerin secim ekrani buyuk ihtimalle oyunda var olan tum pelerinlerin tam listesini gosteriyor, sadece hesabinizin sahip olduklarini degil. Yeni istemcilerde bir uygulama filtresi (istemci tarafinda veya Xbox/Microsoft yetkilendirme servisine bir ag cagrisi yoluyla) sahip olmadiginiz pelerinleri gri yapar veya gizler.

Kilit nokta, bu filtrenin muhtemelen sonradan, yeterince yeni bir surumde eklenmis olmasi. 1.16.x gibi bir surum bu filtreden once gelir veya farkli (ya da var olmayan) bir dogrulama mekanizmasi kullanir: listedeki her sey secilebilir hale gelir, yetki olsun ya da olmasin.

Pelerin tam olarak nerede saklaniyor?

Bu kisim yeniden yuklemeden sonra neden hayatta kaldigini acikliyor. Bedrock'ta skin/pelerin secimi sadece kullan-at bir yerel dosya degil -- Microsoft hesabiniza bagli Xbox Live profiline buyuk ihtimalle senkronize ediliyor (diger Bedrock platformlarindaki -- mobil, konsol vs. -- skininizi yoneten ayni sistem). Eski istemcide bir pelerin sectiginizde, guncel bir istemcinin mesru bir pelerinle yapacagi gibi bu secimi profil servisine gonderiyor olabilir -- cunku istemcinin bakis acisindan "size ait" bir pelerin ile "secilmis" bir pelerin arasinda hicbir fark yok. Profil servisi ise bu noktada istemciye guveniyor: yazma aninda, arkasinda gercekten yetkinin olup olmadigini yeniden dogrulamadan secimi kaydediyor.

Sonuc: guncel resmi oyunu yeniden baslattiginizda, mevcut skin/pelerininizi profil servisinden aliyor -- ve servis, kurallara uymayan pelerin de dahil olmak uzere kaydedileni sadik bir sekilde geri donduruyor. Yetki kontrolu, eger varsa, buyuk ihtimalle yeni UI'da secim aninda gerceklesiyor (bu yuzden yeni istemcilerde filtre var), zaten profilde kayitli olanin goruntulenmesi aninda degil.

Java ile paralellik

Java'daki cape-mod ile ayni mantik hatasi ailesinden: bir servis, her adimda kokenini yeniden kontrol etmeden verilere guveniyor. Java'da bu, yanlis profilde tekrarlanan gecerli bir RSA imzasi. Bedrock'ta ise buyuk ihtimalle dogru filtreye hic sahip olmamis eski bir istemci tarafindan kabul edilen ve daha sonra yeniden dogrulama olmaksizin hesabin kalici durumuna yayilan bir pelerin secimi. Her iki durumda da sorun giris noktasi (Java modu, eski Bedrock istemcisi) degil -- yetkiyi asagi akista yeniden dogrulamasi gereken katmanin bunu yapmamasi veya sadece bir kez, yanlis yerde yapmasi.

Neden hala calisiyor

Birbirini dislamayan iki olasi aciklama:

  1. Mojang muhtemelen bunu oncelikli olarak gormuyor. Ucuncu parti bir baslatici, cok adimli bir islem gerektiriyor ve sonuc tamamen kozmetik -- oynanis avantaji yok, baskasinin verisi tehlikeye atilmiyor.
  2. Bunu duzgunce duzeltmek, yetkilerin her profil okumasinda yeniden dogrulanmasini gerektirir, sadece secim aninda degil -- bu da her skin goruntulemede ek bir ag cagrisi demek, sadece estetikle ilgili bir sorun icin.

Sonuc

Bu rehber on ekran goruntusune sigiyor ama yazilim guvenliginin her yerinde gorulen bir prensibi gosteriyor: eski bir sistem (eski bir istemci surumu, eski bir API, hic guncellenmemis bir servis) hala paylasilan bir duruma yazabildigi surece, gunumuzdeki erisim kontrolu sadece su andan geceni korur. Hala eski API ile konusabilen her sey daha yeni filtreyi atlar -- filtre bozuk oldugu icin degil, ondan onceki surume hic uygulanmadigi icin.


Kaynaklar

3 onemli nokta

  1. Eski bir Bedrock surumundeki pelerin secici, yetki filtresi olmadan tum oyun pelerinlerinin tam listesini gosteriyor olabilir.
  2. Secim daha sonra herhangi bir mesru pelerin gibi Xbox Live profilinize senkronize olur -- profil servisi istemciye guvenir.
  3. Yetki kontrolu, eger varsa, yeni UI'daki secim sirasinda gerceklesir -- hesapta zaten kayitli olanin okunmasi sirasinda degil.

Come ottenere qualsiasi mantello su Minecraft Bedrock

Un launcher di terze parti, una vecchia versione del gioco e un selettore di mantelli che non ha mai imparato a dire di no. Tutorial completo piu la probabile spiegazione del perche funziona.

Come ottenere qualsiasi mantello su Minecraft Bedrock

Su Java ci sono un sacco di modi contorti per ritrovarsi con un mantello che non dovresti avere (vedi l'articolo su cape-mod). Su Bedrock il gioco e diverso, l'autenticazione e diversa, ma c'e comunque un modo -- niente mod, niente pacchetti di rete da manipolare. Solo un launcher di terze parti e una versione del gioco abbastanza vecchia da non avere la validazione che ci si aspetterebbe.

Ecco come fare, e poi vediamo cosa succede probabilmente sotto il cofano.

Cosa ti serve

  • Un account Microsoft che possiede gia Minecraft Bedrock (il tuo va benissimo)
  • Il launcher ufficiale di Minecraft installato
  • BedrockLauncher, un launcher di terze parti open source che ti permette di installare ed eseguire qualsiasi versione storica di Bedrock
  • .NET 8.0 Desktop Runtime
  • Modalita sviluppatore attivata su Windows

Passo 1 -- Installare Bedrock almeno una volta con il launcher ufficiale

Prima di fare qualsiasi altra cosa, apri il launcher ufficiale di Minecraft, vai alla scheda Minecraft: Bedrock Edition e clicca su Installa. Bedrock deve essere stato installato e avviato almeno una volta tramite il canale ufficiale prima di toccare BedrockLauncher.

Installare Bedrock Edition dal launcher ufficiale

Passo 2 -- Scaricare BedrockLauncher

Vai alla pagina delle release GitHub del progetto. Prendi lo zip dell'ultima versione elencata negli Assets.

Pagina delle release GitHub di BedrockLauncher

Passo 3 -- Estrarre l'archivio

Una volta scaricato lo zip, estrailo nella tua cartella Downloads (o ovunque, purche tu riesca a ritrovare la cartella dopo).

Estrazione dell'archivio di BedrockLauncher

Passo 4 -- Avviare l'eseguibile

Entra nella cartella estratta e avvia BedrockLauncher.exe.

Avvio di BedrockLauncher.exe

Passo 5 -- Installare .NET Desktop Runtime e attivare la modalita sviluppatore

Al primo avvio, Windows ti chiedera molto probabilmente il .NET 8.0 Desktop Runtime -- installalo. Devi anche attivare la modalita sviluppatore in Impostazioni > Sistema > Per sviluppatori, perche BedrockLauncher installa il gioco come pacchetto loose (file grezzi, non un vero pacchetto firmato dello Store), e Windows rifiuta questo tipo di installazione senza quella modalita.

Installazione del runtime .NET e attivazione della modalita sviluppatore

Passo 6 -- Creare una nuova installazione

Riavvia BedrockLauncher, accedi con il tuo account Microsoft, vai alla scheda Installations e clicca su New installation.

Creazione di una nuova installazione in BedrockLauncher

Passo 7 -- Scegliere una vecchia versione

Dai un nome all'installazione, poi nella lista delle versioni scegli una versione vecchia -- tipicamente 1.16.x o precedente. Clicca su Create.

Selezione di una vecchia versione, qui 1.16.0.2

Passo 8 -- Avviare l'installazione

Clicca su Play. L'estrazione dei file puo richiedere fino a dieci minuti a seconda del computer -- il launcher sembrera bloccato ("Non risponde"), e normale, lascialo girare.

Estrazione in corso, il launcher sembra non rispondere

Passo 9 -- Scegliere il mantello

Una volta avviato il gioco, accedi con il tuo account, crea un nuovo personaggio e vai nell'editor della skin, scheda Mantelli. Li troverai l'elenco completo di tutti i mantelli che esistono nel gioco -- compresi quelli che non hai mai avuto (mantelli di eventi promo, festival passati, Mob Vote, ecc.). Scegli quello che vuoi.

Non toccare il resto dell'aspetto della skin in questa fase, lascia solo il mantello.

Selezione di un mantello nell'editor del personaggio

Passo 10 -- Reinstallare la versione ufficiale

Torna al launcher ufficiale, scheda Installazione, e clicca su Disinstalla sull'installazione Bedrock principale, poi reinstallala (o premi Verifica aggiornamenti). Avvia Minecraft Bedrock questa volta dal launcher ufficiale.

Disinstallazione e reinstallazione dal launcher ufficiale

Ecco fatto -- il tuo mantello e li, sulla versione ufficiale, sul tuo profilo reale.

Cosa sta probabilmente succedendo

Non ho messo le mani nel codice sorgente chiuso di Bedrock (a differenza di Java che e decompilabile), quindi cio che segue e una spiegazione probabile, non una certezza assoluta. Ma il comportamento osservato si adatta abbastanza bene all'ipotesi seguente.

Il selettore di mantelli non e mai stato un controllo d'accesso

Su Bedrock, la schermata di selezione dei mantelli mostra probabilmente l'elenco completo di tutti i mantelli che esistono nel gioco, non solo quelli che il tuo account possiede. Sui client recenti, un filtro applicativo (lato client o tramite una chiamata di rete a un servizio di entitlement Xbox/Microsoft) mette in grigio o nasconde i mantelli che non possiedi.

Il punto chiave e che questo filtro e stato probabilmente aggiunto in un secondo momento, su una versione del gioco sufficientemente recente. Una versione come 1.16.x e precedente a questo filtro, o usa un meccanismo di verifica diverso (o assente): tutto cio che e nella lista diventa selezionabile, entitlement o meno.

Dove viene memorizzato esattamente il mantello?

Questa e la parte che spiega perche sopravvive alla reinstallazione. La scelta di skin/mantello su Bedrock non e solo un file locale usa e getta -- e probabilmente sincronizzata sul profilo Xbox Live associato al tuo account Microsoft (lo stesso sistema che gestisce la tua skin sulle altre piattaforme Bedrock -- mobile, console, ecc.). Quando selezioni un mantello nel vecchio client, questo invia molto probabilmente quella selezione al servizio di profilo, esattamente come farebbe un client aggiornato con un mantello legittimo -- perche dal punto di vista del client, non c'e alcuna differenza tra un mantello "tuo" e un mantello "scelto". Il servizio di profilo, dal canto suo, si fida del client su questo punto: registra la selezione senza riconvalidare se l'entitlement esista effettivamente dietro, almeno non al momento della scrittura.

Risultato: quando riavvii il gioco ufficiale aggiornato, questo recupera la tua skin/mantello attuale dal servizio di profilo -- e il servizio restituisce fedelmente cio che e stato salvato, mantello non legittimo incluso. Il controllo di entitlement, se esiste, avviene probabilmente al momento della selezione nella UI (da cui il filtro sui client recenti), non al momento della visualizzazione di cio che e gia salvato sul profilo.

Il parallelo con Java

E la stessa famiglia di falla logica del cape-mod su Java: un servizio si fida di dati senza riverificarne l'origine a ogni passo. Su Java, e una firma RSA valida riprodotta sul profilo sbagliato. Su Bedrock, e probabilmente una selezione di mantello accettata da un vecchio client che non ha mai avuto il filtro giusto, e poi propagata senza riverifica allo stato persistente dell'account. In entrambi i casi, il problema non e il punto d'ingresso (la mod Java, il vecchio client Bedrock) -- ma il fatto che il livello che dovrebbe riconvalidare l'entitlement a valle non lo fa, o lo fa solo una volta, nel posto sbagliato.

Perche funziona ancora

Due possibili spiegazioni, non incompatibili tra loro:

  1. Mojang probabilmente non lo considera prioritario. Serve un launcher di terze parti, una procedura in piu passi, e il risultato e puramente estetico -- nessun vantaggio di gameplay, nessun dato altrui compromesso.
  2. Patchare correttamente richiederebbe di riconvalidare gli entitlement a ogni lettura del profilo, non solo alla selezione -- il che significa una chiamata di rete aggiuntiva a ogni visualizzazione della skin, per un problema che riguarda solo l'estetica.

Conclusione

Questo tutorial sta in dieci screenshot, ma illustra un principio che si trova ovunque nella sicurezza del software: appena un sistema legacy (una vecchia versione client, una API legacy, un servizio mai aggiornato) puo ancora scrivere in uno stato condiviso, il controllo d'accesso attuale protegge solo cio che passa attraverso il presente. Tutto cio che puo ancora parlare con la vecchia API aggira il filtro piu recente -- non perche il filtro e rotto, ma perche non e mai stato applicato alla versione che l'ha preceduto.


Risorse

3 punti chiave

  1. Il selettore di mantelli di una vecchia versione di Bedrock mostra probabilmente l'elenco completo di tutti i mantelli del gioco, senza filtro di entitlement.
  2. La selezione viene poi sincronizzata sul tuo profilo Xbox Live come qualsiasi mantello legittimo -- il servizio di profilo si fida del client.
  3. Il controllo di entitlement, se esiste, avviene alla selezione nella UI recente -- non alla lettura di cio che e gia salvato sull'account.

Wie man jeden Umhang in Minecraft Bedrock bekommt

Ein Drittanbieter-Launcher, eine alte Spielversion und ein Umhang-Auswaehler, der nie gelernt hat Nein zu sagen. Komplettes Tutorial plus die wahrscheinliche Erklaerung, warum es funktioniert.

Wie man jeden Umhang in Minecraft Bedrock bekommt

Auf Java gibt es jede Menge krumme Wege, einen Umhang zu bekommen, den man nicht haben sollte (siehe den cape-mod-Artikel). Auf Bedrock ist das Spiel anders, die Authentifizierung ist anders, aber es gibt trotzdem einen Weg -- kein Mod noetig, keine Manipulation von Netzwerkpaketen. Nur ein Drittanbieter-Launcher und eine Version des Spiels, die alt genug ist, um die erwartete Validierung noch nicht zu haben.

Hier die Anleitung, und danach schauen wir uns an, was wahrscheinlich unter der Haube passiert.

Was du brauchst

  • Ein Microsoft-Konto, das Minecraft Bedrock bereits besitzt (deins reicht)
  • Den offiziellen Minecraft-Launcher installiert
  • BedrockLauncher, ein quelloffener Drittanbieter-Launcher, mit dem du jede historische Version von Bedrock installieren und starten kannst
  • .NET 8.0 Desktop Runtime
  • Entwicklermodus unter Windows aktiviert

Schritt 1 -- Bedrock mindestens einmal mit dem offiziellen Launcher installieren

Bevor du irgendetwas anderes tust, oeffne den offiziellen Minecraft-Launcher, geh zum Reiter Minecraft: Bedrock Edition und klick auf Installieren. Bedrock muss mindestens einmal ueber den offiziellen Weg installiert und gestartet worden sein, bevor du BedrockLauncher anfasst.

Bedrock Edition ueber den offiziellen Launcher installieren

Schritt 2 -- BedrockLauncher herunterladen

Geh auf die GitHub-Releases-Seite des Projekts. Schnapp dir das Zip der neuesten Version aus den Assets.

BedrockLauncher GitHub-Releases-Seite

Schritt 3 -- Archiv entpacken

Nach dem Download entpackst du das Zip in deinen Downloads-Ordner (oder irgendwohin, wo du es wiederfindest).

BedrockLauncher-Archiv entpacken

Schritt 4 -- Ausfuehrbare Datei starten

Geh in den entpackten Ordner und starte BedrockLauncher.exe.

BedrockLauncher.exe starten

Schritt 5 -- .NET Desktop Runtime installieren und Entwicklermodus aktivieren

Beim ersten Start wird Windows sehr wahrscheinlich die .NET 8.0 Desktop Runtime verlangen -- installier sie. Du musst ausserdem den Entwicklermodus unter Einstellungen > System > Fuer Entwickler aktivieren, weil BedrockLauncher das Spiel als loses Paket installiert (Rohdateien, kein echtes signiertes Store-Paket), und Windows diese Art von Installation ohne diesen Modus verweigert.

.NET Runtime installieren und Entwicklermodus aktivieren

Schritt 6 -- Neue Installation erstellen

Starte BedrockLauncher erneut, melde dich mit deinem Microsoft-Konto an, geh zum Tab Installations und klick auf New installation.

Neue Installation in BedrockLauncher erstellen

Schritt 7 -- Alte Version auswaehlen

Gib der Installation einen Namen und waehl in der Versionsliste eine alte Version -- typischerweise 1.16.x oder aelter. Klick auf Create.

Alte Version auswaehlen, hier 1.16.0.2

Schritt 8 -- Installation starten

Klick auf Play. Die Dateiextraktion kann je nach Rechner bis zu zehn Minuten dauern -- der Launcher wird einfrieren ("Keine Rueckmeldung"), das ist normal, lass ihn laufen.

Extraktion laeuft, Launcher scheint nicht zu antworten

Schritt 9 -- Umhang auswaehlen

Sobald das Spiel startet, melde dich mit deinem Konto an, erstelle einen neuen Charakter und geh in den Skin-Editor zum Reiter Umhaenge. Dort findest du die komplette Liste aller Umhaenge, die es im Spiel gibt -- einschliesslich derer, die du nie hattest (Promo-Event-Umhaenge, vergangene Festivals, Mob-Vote-Umhaenge, etc.). Waehl aus, was du willst.

Ruehr in diesem Stadium nichts anderes am Skin-Aussehen an, lass nur den Umhang.

Umhang im Charakter-Editor auswaehlen

Schritt 10 -- Offizielle Version neu installieren

Geh zurueck zum offiziellen Launcher, Tab Installation, und klick auf Deinstallieren bei der Haupt-Bedrock-Installation, dann installier sie neu (oder klick auf Nach Updates suchen). Starte Minecraft Bedrock dieses Mal ueber den offiziellen Launcher.

Deinstallation und Neuinstallation ueber den offiziellen Launcher

Und das war's -- dein Umhang ist da, auf der offiziellen Version, auf deinem echten Profil.

Was wahrscheinlich passiert

Ich hab nicht im Closed-Source-Code von Bedrock gewuehlt (anders als Java, das dekompilierbar ist), also ist das Folgende eine wahrscheinliche Erklaerung, keine absolute Gewissheit. Aber das beobachtete Verhalten passt ziemlich gut zur folgenden Hypothese.

Der Umhang-Selektor war nie eine Zugriffskontrolle

Auf Bedrock zeigt der Umhang-Auswahlbildschirm hoechstwahrscheinlich die vollstaendige Liste aller Umhaenge, die im Spiel existieren, nicht nur die, die dein Konto besitzt. Auf neueren Clients blendet ein Applikationsfilter (clientseitig oder ueber einen Netzwerkaufruf an einen Xbox/Microsoft-Entitlement-Dienst) Umhaenge aus, die du nicht besitzt, oder graut sie aus.

Der entscheidende Punkt ist, dass dieser Filter wahrscheinlich nachtraeglich hinzugefuegt wurde, in einer ausreichend neuen Version des Spiels. Eine Version wie 1.16.x ist aelter als dieser Filter oder nutzt einen anderen (oder gar keinen) Verifikationsmechanismus: alles in der Liste wird auswaehlbar, Entitlement hin oder her.

Wo genau wird der Umhang gespeichert?

Das ist der Teil, der erklaert, warum die Neuinstallation ueberlebt wird. Die Skin-/Umhang-Wahl auf Bedrock ist nicht einfach eine lokale Wegwerfdatei -- sie wird wahrscheinlich mit dem Xbox-Live-Profil synchronisiert, das mit deinem Microsoft-Konto verknuepft ist (dasselbe System, das deinen Skin auf anderen Bedrock-Plattformen verwaltet -- Mobil, Konsole, etc.). Wenn du im alten Client einen Umhang auswaehlst, sendet er diese Auswahl sehr wahrscheinlich an den Profildienst, genauso wie ein aktueller Client es mit einem legitimen Umhang tun wuerde -- denn aus Sicht des Clients gibt es keinen Unterschied zwischen einem Umhang, der "dir gehoert", und einem "ausgewaehlten" Umhang. Der Profildienst seinerseits vertraut dem Client in diesem Punkt: er speichert die Auswahl, ohne nochmal zu pruefen, ob das Entitlement tatsaechlich dahintersteht, zumindest nicht zum Zeitpunkt des Schreibens.

Ergebnis: wenn du das aktuelle offizielle Spiel neu startest, holt es deinen aktuellen Skin/Umhang vom Profildienst -- und der Dienst gibt treu zurueck, was gespeichert wurde, nicht-legitimer Umhang inklusive. Der Entitlement-Check, falls es ihn gibt, passiert wahrscheinlich zum Zeitpunkt der Auswahl in der UI (daher der Filter auf neueren Clients), nicht zum Zeitpunkt der Anzeige dessen, was bereits im Profil gespeichert ist.

Die Parallele zu Java

Es ist dieselbe Familie von Logikfehlern wie beim cape-mod auf Java: ein Dienst vertraut Daten, ohne deren Herkunft in jedem Schritt neu zu pruefen. Auf Java ist es eine gueltige RSA-Signatur, die auf das falsche Profil wiedergegeben wird. Auf Bedrock ist es wahrscheinlich eine Umhang-Auswahl, die von einem alten Client akzeptiert wird, der nie den richtigen Filter hatte, und dann ohne erneute Validierung in den persistenten Zustand des Kontos uebernommen wird. In beiden Faellen liegt das Problem nicht am Einstiegspunkt (der Java-Mod, der alte Bedrock-Client) -- sondern daran, dass die Schicht, die das Entitlement nachgelagert erneut validieren sollte, es nicht tut, oder nur einmal, an der falschen Stelle.

Warum es immer noch funktioniert

Zwei moegliche Erklaerungen, die sich nicht ausschliessen:

  1. Mojang betrachtet das wahrscheinlich nicht als Prioritaet. Es braucht einen Drittanbieter-Launcher, einen mehrstufigen Prozess, und das Ergebnis ist rein kosmetisch -- kein Gameplay-Vorteil, keine kompromittierten Daten anderer.
  2. Das richtig zu patchen wuerde erfordern, Entitlements bei jedem Profil-Lesezugriff erneut zu validieren, nicht nur bei der Auswahl -- das bedeutet einen zusaetzlichen Netzwerkaufruf bei jeder Skin-Anzeige, fuer ein Problem, das nur die Optik betrifft.

Fazit

Dieses Tutorial passt in zehn Screenshots, aber es illustriert ein Prinzip, das man ueberall in der Software-Sicherheit findet: sobald ein Legacy-System (eine alte Client-Version, eine Legacy-API, ein nie aktualisierter Dienst) noch in einen gemeinsam genutzten Zustand schreiben kann, schuetzt die heutige Zugriffskontrolle nur das, was durch die Gegenwart geht. Alles, was noch mit der alten API sprechen kann, umgeht den neueren Filter -- nicht weil der Filter kaputt ist, sondern weil er nie auf die Version davor angewandt wurde.


Ressourcen

3 Kernpunkte

  1. Der Umhang-Selektor einer alten Bedrock-Version zeigt wahrscheinlich die vollstaendige Liste aller Spielumhaenge, ohne Entitlement-Filter.
  2. Die Auswahl wird dann wie jeder legitime Umhang auf dein Xbox-Live-Profil synchronisiert -- der Profildienst vertraut dem Client.
  3. Der Entitlement-Check, falls es ihn gibt, passiert bei der Auswahl in der aktuellen UI -- nicht beim Lesen dessen, was bereits im Konto gespeichert ist.

Как получить любой плащ в Minecraft Bedrock

Сторонний лаунчер, старая версия игры и селектор плащей, который так и не научился говорить нет. Полный туториал и вероятное объяснение того, почему это работает.

Как получить любой плащ в Minecraft Bedrock

На Java есть куча хитрых способов заполучить плащ, которого у тебя быть не должно (смотри статью про cape-mod). На Bedrock игра другая, авторизация другая, но способ всё равно есть -- ни модов, ни манипуляций с сетевыми пакетами. Только сторонний лаунчер и достаточно старая версия игры, где ещё нет нужной валидации.

Вот как это делается, а потом разберём, что, вероятно, происходит под капотом.

Что тебе понадобится

  • Аккаунт Microsoft, на котором уже есть Minecraft Bedrock (твой подойдёт)
  • Установленный официальный лаунчер Minecraft
  • BedrockLauncher -- опенсорсный сторонний лаунчер, который позволяет устанавливать и запускать любую историческую версию Bedrock
  • .NET 8.0 Desktop Runtime
  • Режим разработчика, включённый в Windows

Шаг 1 -- Установить Bedrock хотя бы раз через официальный лаунчер

Прежде чем делать что-то ещё, открой официальный лаунчер Minecraft, перейди на вкладку Minecraft: Bedrock Edition и нажми Установить. Bedrock должен быть установлен и запущен хотя бы раз официальным путём, прежде чем трогать BedrockLauncher.

Установка Bedrock Edition из официального лаунчера

Шаг 2 -- Скачать BedrockLauncher

Зайди на страницу релизов проекта на GitHub. Скачай zip последней версии из списка Assets.

Страница релизов BedrockLauncher на GitHub

Шаг 3 -- Распаковать архив

После скачивания zip, распакуй его в папку Downloads (или куда угодно, лишь бы потом найти).

Распаковка архива BedrockLauncher

Шаг 4 -- Запустить исполняемый файл

Зайди в распакованную папку и запусти BedrockLauncher.exe.

Запуск BedrockLauncher.exe

Шаг 5 -- Установить .NET Desktop Runtime и включить режим разработчика

При первом запуске Windows, скорее всего, потребует .NET 8.0 Desktop Runtime -- установи. Также нужно включить режим разработчика в Параметры > Система > Для разработчиков, потому что BedrockLauncher устанавливает игру как loose-пакет (сырые файлы, а не настоящий подписанный пакет из Store), и Windows отказывается от такой установки без этого режима.

Установка .NET Runtime и включение режима разработчика

Шаг 6 -- Создать новую установку

Снова запусти BedrockLauncher, войди в свой аккаунт Microsoft, перейди на вкладку Installations и нажми New installation.

Создание новой установки в BedrockLauncher

Шаг 7 -- Выбрать старую версию

Дай установке имя и в списке версий выбери старую версию -- обычно 1.16.x или ещё старее. Нажми Create.

Выбор старой версии, здесь 1.16.0.2

Шаг 8 -- Запустить установку

Нажми Play. Извлечение файлов может занять до десяти минут в зависимости от компа -- лаунчер будет выглядеть зависшим («Не отвечает»), это нормально, дай ему поработать.

Идёт извлечение, лаунчер кажется неотвечающим

Шаг 9 -- Выбрать плащ

Когда игра запустится, войди в аккаунт, создай нового персонажа и зайди в редактор скина на вкладку Плащи. Там ты увидишь полный список всех плащей, которые существуют в игре -- включая те, которых у тебя никогда не было (промо-ивенты, прошедшие фестивали, Mob Vote и т.д.). Выбирай любой.

На этом этапе не трогай остальной внешний вид скина, только плащ.

Выбор плаща в редакторе персонажа

Шаг 10 -- Переустановить официальную версию

Вернись в официальный лаунчер, вкладка Установка, и нажми Удалить на основной установке Bedrock, потом установи заново (или нажми Проверить обновления). Запусти Minecraft Bedrock на этот раз из официального лаунчера.

Удаление и переустановка из официального лаунчера

И готово -- твой плащ на месте, на официальной версии, на твоём настоящем профиле.

Что, вероятно, происходит

Я не копался в закрытом исходном коде Bedrock (в отличие от Java, который можно декомпилировать), так что дальнейшее -- вероятное объяснение, а не абсолютная уверенность. Но наблюдаемое поведение довольно хорошо укладывается в следующую гипотезу.

Селектор плащей никогда не был контролем доступа

На Bedrock экран выбора плащей, скорее всего, показывает полный список всех плащей, существующих в игре, а не только тех, которыми владеет твой аккаунт. На новых клиентах прикладной фильтр (на стороне клиента или через сетевой вызов к сервису энтайтлментов Xbox/Microsoft) затемняет или скрывает плащи, которых у тебя нет.

Ключевой момент в том, что этот фильтр, вероятно, был добавлен позже, в достаточно новой версии игры. Версия вроде 1.16.x предшествует этому фильтру или использует другой (либо отсутствующий) механизм проверки: всё, что есть в списке, становится выбираемым, независимо от энтайтлментов.

Где именно хранится плащ?

Это часть, которая объясняет, почему выбор переживает переустановку. Выбор скина/плаща на Bedrock -- это не просто одноразовый локальный файл, он, скорее всего, синхронизируется с профилем Xbox Live, привязанным к твоему аккаунту Microsoft (та же система, которая управляет твоим скином на других платформах Bedrock -- телефон, консоль и т.д.). Когда ты выбираешь плащ в старом клиенте, он, скорее всего, отправляет этот выбор в сервис профиля точно так же, как это сделал бы обновлённый клиент с легитимным плащом -- потому что с точки зрения клиента нет разницы между «твоим» плащом и «выбранным». Сервис профиля, в свою очередь, доверяет клиенту в этом вопросе: он записывает выбор без повторной проверки, действительно ли за ним стоит энтайтлмент, по крайней мере в момент записи.

Результат: когда ты перезапускаешь обновлённую официальную игру, она запрашивает твой текущий скин/плащ у сервиса профиля -- а сервис честно возвращает то, что было сохранено, включая нелегитимный плащ. Проверка энтайтлментов, если она существует, вероятно, происходит в момент выбора в UI (отсюда фильтр на новых клиентах), а не в момент отображения того, что уже сохранено в профиле.

Параллель с Java

Это та же семья логической уязвимости, что и cape-mod на Java: сервис доверяет данным, не перепроверяя их происхождение на каждом шагу. На Java это валидная RSA-подпись, воспроизведённая на чужом профиле. На Bedrock это, скорее всего, выбор плаща, принятый старым клиентом, у которого никогда не было правильного фильтра, и затем распространённый без повторной проверки в персистентное состояние аккаунта. В обоих случаях проблема не в точке входа (Java-мод, старый Bedrock-клиент) -- а в том, что слой, который должен перепроверять энтайтлмент дальше по цепочке, этого не делает или делает только один раз, в неправильном месте.

Почему это всё ещё работает

Два возможных объяснения, не исключающих друг друга:

  1. Mojang, скорее всего, не считает это приоритетным. Нужен сторонний лаунчер, многошаговая процедура, а результат чисто косметический -- никакого преимущества в геймплее, никакие чужие данные не скомпрометированы.
  2. Правильный патч потребовал бы перепроверять энтайтлменты при каждом чтении профиля, а не только при выборе -- то есть дополнительный сетевой вызов при каждом отображении скина, ради проблемы, касающейся только внешнего вида.

Заключение

Этот туториал умещается в десять скриншотов, но он иллюстрирует принцип, который встречается повсюду в безопасности ПО: как только legacy-система (старая версия клиента, устаревший API, никогда не обновлявшийся сервис) всё ещё может писать в общее состояние, сегодняшний контроль доступа защищает только то, что проходит через настоящее. Всё, что всё ещё умеет говорить со старым API, обходит новый фильтр -- не потому что фильтр сломан, а потому что он никогда не применялся к предшествующей ему версии.


Ресурсы

3 ключевых вывода

  1. Селектор плащей в старой версии Bedrock, скорее всего, показывает полный список всех игровых плащей без фильтра энтайтлментов.
  2. Выбор синхронизируется с профилем Xbox Live как любой легитимный плащ -- сервис профиля доверяет клиенту.
  3. Проверка энтайтлментов, если она есть, происходит при выборе в новом UI -- а не при чтении того, что уже сохранено в аккаунте.

Como conseguir cualquier capa en Minecraft Bedrock

Un launcher de terceros, una version antigua del juego y un selector de capas que nunca aprendio a decir que no. Tutorial completo mas la explicacion probable de por que funciona.

Como conseguir cualquier capa en Minecraft Bedrock

En Java existen un monton de formas retorcidas de acabar con una capa que no deberias tener (mira el articulo de cape-mod). En Bedrock el juego es distinto, la autenticacion es distinta, pero aun asi hay un metodo -- sin mods, sin tocar ni un solo paquete de red. Solo un launcher de terceros y una version del juego lo bastante vieja como para no tener la validacion que creemos que tiene.

Aqui te cuento como se hace, y luego vemos que esta pasando probablemente por dentro.

Lo que necesitas

  • Una cuenta Microsoft que ya tenga Minecraft Bedrock (la tuya vale)
  • El launcher oficial de Minecraft instalado
  • BedrockLauncher, un launcher de terceros open source que te permite instalar y ejecutar cualquier version historica de Bedrock
  • .NET 8.0 Desktop Runtime
  • Modo desarrollador activado en Windows

Paso 1 -- Instalar Bedrock al menos una vez con el launcher oficial

Antes de hacer nada mas, abre el launcher oficial de Minecraft, ve a la pestana Minecraft: Bedrock Edition y haz clic en Instalar. Bedrock tiene que haberse instalado y ejecutado al menos una vez por la via oficial antes de tocar BedrockLauncher.

Instalar Bedrock Edition desde el launcher oficial

Paso 2 -- Descargar BedrockLauncher

Ve a la pagina de releases de GitHub del proyecto. Descarga el zip de la ultima version que aparece en Assets.

Pagina de releases de GitHub de BedrockLauncher

Paso 3 -- Extraer el archivo

Una vez descargado el zip, extraelo en tu carpeta Downloads (o donde quieras, mientras luego sepas encontrarlo).

Extrayendo el archivo de BedrockLauncher

Paso 4 -- Ejecutar el ejecutable

Entra en la carpeta extraida y ejecuta BedrockLauncher.exe.

Ejecutando BedrockLauncher.exe

Paso 5 -- Instalar .NET Desktop Runtime y activar el modo desarrollador

En el primer arranque, Windows probablemente te pedira el .NET 8.0 Desktop Runtime -- instalalo. Tambien necesitas activar el modo desarrollador en Configuracion > Sistema > Para desarrolladores, porque BedrockLauncher instala el juego como un paquete suelto (archivos crudos, no un paquete firmado de la Store), y Windows rechaza este tipo de instalacion sin ese modo.

Instalando .NET Runtime y activando el modo desarrollador

Paso 6 -- Crear una nueva instalacion

Vuelve a abrir BedrockLauncher, inicia sesion con tu cuenta Microsoft, ve a la pestana Installations y haz clic en New installation.

Creando una nueva instalacion en BedrockLauncher

Paso 7 -- Elegir una version antigua

Dale un nombre a la instalacion y en la lista de versiones elige una version antigua -- tipicamente 1.16.x o anterior. Haz clic en Create.

Seleccionando una version antigua, aqui 1.16.0.2

Paso 8 -- Lanzar la instalacion

Haz clic en Play. La extraccion de archivos puede tardar hasta diez minutos dependiendo del ordenador -- el launcher parecera congelado ("No responde"), es normal, dejalo funcionar.

Extraccion en curso, el launcher parece no responder

Paso 9 -- Elegir la capa

Cuando el juego arranque, inicia sesion con tu cuenta, crea un personaje nuevo y ve al editor de skin, pestana Capas. Ahi encontraras la lista completa de todas las capas que existen en el juego -- incluidas las que nunca has tenido (capas de eventos promocionales, festivales pasados, Mob Vote, etc.). Elige la que quieras.

No toques el resto de la apariencia del skin en esta fase, deja solo la capa.

Seleccionando una capa en el editor de personaje

Paso 10 -- Reinstalar la version oficial

Vuelve al launcher oficial, pestana Instalacion, y haz clic en Desinstalar en la instalacion principal de Bedrock, luego reinstalala (o dale a Buscar actualizaciones). Lanza Minecraft Bedrock esta vez desde el launcher oficial.

Desinstalando y reinstalando desde el launcher oficial

Y ya esta -- tu capa esta ahi, en la version oficial, en tu perfil real.

Que esta pasando probablemente

No he metido las manos en el codigo cerrado de Bedrock (a diferencia de Java que es descompilable), asi que lo que sigue es una explicacion probable, no una certeza absoluta. Pero el comportamiento observado encaja bastante bien con la siguiente hipotesis.

El selector de capas nunca fue un control de acceso

En Bedrock, la pantalla de seleccion de capas muestra probablemente la lista completa de capas que existen en el juego, no solo las que tu cuenta posee. En los clientes recientes, un filtro aplicativo (en el lado del cliente o via una llamada de red a un servicio de entitlements de Xbox/Microsoft) pone en gris u oculta las capas que no posees.

El punto clave es que este filtro probablemente se anadio a posteriori, en una version del juego lo suficientemente reciente. Una version como 1.16.x es anterior a este filtro, o usa un mecanismo de verificacion diferente (o inexistente): todo lo que esta en la lista se vuelve seleccionable, con entitlement o sin el.

Donde se almacena exactamente la capa?

Esta es la parte que explica por que sobrevive a la reinstalacion. La eleccion de skin/capa en Bedrock no es solo un archivo local desechable -- probablemente se sincroniza con el perfil de Xbox Live asociado a tu cuenta Microsoft (el mismo sistema que gestiona tu skin en otras plataformas Bedrock -- movil, consola, etc.). Cuando seleccionas una capa en el cliente antiguo, este envia muy probablemente esa seleccion al servicio de perfil, exactamente igual que lo haria un cliente actualizado con una capa legitima -- porque desde el punto de vista del cliente, no hay ninguna diferencia entre una capa "tuya" y una capa "elegida". El servicio de perfil, por su parte, confia en el cliente en este punto: registra la seleccion sin revalidar si el entitlement realmente existe detras, al menos no en el momento de la escritura.

Resultado: cuando vuelves a lanzar el juego oficial actualizado, este busca tu skin/capa actual en el servicio de perfil -- y el servicio devuelve fielmente lo que se guardo, capa no legitima incluida. El chequeo de entitlement, si existe, probablemente ocurre en el momento de la seleccion en la UI (de ahi el filtro en los clientes recientes), no en el momento de la visualizacion de lo que ya esta guardado en el perfil.

El paralelo con Java

Es la misma familia de fallo logico que el cape-mod en Java: un servicio confia en unos datos sin volver a verificar su origen en cada paso. En Java, es una firma RSA valida replayeda sobre el perfil equivocado. En Bedrock, es probablemente una seleccion de capa aceptada por un cliente antiguo que nunca tuvo el filtro correcto, y luego propagada sin revalidacion al estado persistente de la cuenta. En ambos casos, el problema no es el punto de entrada (el mod de Java, el cliente antiguo de Bedrock) -- sino que la capa que deberia revalidar el entitlement aguas abajo no lo hace, o solo lo hace una vez, en el sitio equivocado.

Por que sigue funcionando

Dos explicaciones posibles, no excluyentes entre si:

  1. Mojang probablemente no lo considera prioritario. Hace falta un launcher de terceros, un proceso en varios pasos, y el resultado es puramente cosmetico -- sin ventaja de juego, sin datos de terceros comprometidos.
  2. Parchear esto correctamente requeriria revalidar los entitlements en cada lectura del perfil, no solo en la seleccion -- lo que supone una llamada de red adicional en cada visualizacion de skin, para un problema que solo afecta a la estetica.

Conclusion

Este tutorial cabe en diez capturas de pantalla, pero ilustra un principio que se encuentra por todas partes en la seguridad del software: en cuanto un sistema legacy (una version antigua de cliente, una API legacy, un servicio nunca actualizado) puede seguir escribiendo en un estado compartido, el control de acceso actual solo protege lo que pasa por el presente. Todo lo que aun pueda hablar con la API antigua sortea el filtro mas reciente -- no porque el filtro este roto, sino porque nunca se aplico a la version que lo precedio.


Recursos

3 puntos clave

  1. El selector de capas de una version antigua de Bedrock muestra probablemente la lista completa de todas las capas del juego, sin filtro de entitlement.
  2. La seleccion se sincroniza luego con tu perfil de Xbox Live como cualquier capa legitima -- el servicio de perfil confia en el cliente.
  3. El chequeo de entitlement, si existe, ocurre en la seleccion en la UI reciente -- no en la lectura de lo que ya esta guardado en la cuenta.

Como obter qualquer capa no Minecraft Bedrock

Um launcher de terceiros, uma versao antiga do jogo e um seletor de capas que nunca aprendeu a dizer nao. Tutorial completo mais a explicacao provavel de porque funciona.

Como obter qualquer capa no Minecraft Bedrock

No Java ha imensas maneiras manhosas de acabar com uma capa que nao devias ter (ve o artigo do cape-mod). No Bedrock o jogo e diferente, a autenticacao e diferente, mas ainda assim ha um metodo -- sem mods, sem mexer num unico pacote de rede. Apenas um launcher de terceiros e uma versao do jogo suficientemente antiga para nao ter a validacao que esperamos.

Aqui fica como fazer e depois olhamos para o que provavelmente acontece sob o capo.

O que precisas

  • Uma conta Microsoft que ja tenha o Minecraft Bedrock (a tua serve perfeitamente)
  • O launcher oficial do Minecraft instalado
  • BedrockLauncher, um launcher de terceiros open source que permite instalar e executar qualquer versao historica do Bedrock
  • .NET 8.0 Desktop Runtime
  • Modo de programador ativado no Windows

Passo 1 -- Instalar o Bedrock pelo menos uma vez com o launcher oficial

Antes de fazer seja o que for, abre o launcher oficial do Minecraft, vai ao separador Minecraft: Bedrock Edition e clica em Instalar. O Bedrock tem de ter sido instalado e executado pelo menos uma vez pelo canal oficial antes de mexeres no BedrockLauncher.

Instalar o Bedrock Edition a partir do launcher oficial

Passo 2 -- Descarregar o BedrockLauncher

Vai a pagina de releases do GitHub do projeto. Descarrega o zip da versao mais recente listada nos Assets.

Pagina de releases do GitHub do BedrockLauncher

Passo 3 -- Extrair o arquivo

Depois de descarregar o zip, extrai-o para a tua pasta Downloads (ou para qualquer lado, desde que encontres a pasta depois).

Extracao do arquivo do BedrockLauncher

Passo 4 -- Executar o executavel

Entra na pasta extraida e executa o BedrockLauncher.exe.

Execucao do BedrockLauncher.exe

Passo 5 -- Instalar o .NET Desktop Runtime e ativar o modo de programador

Na primeira execucao, o Windows vai muito provavelmente pedir o .NET 8.0 Desktop Runtime -- instala-o. Tambem precisas de ativar o modo de programador em Definicoes > Sistema > Para programadores, porque o BedrockLauncher instala o jogo como um pacote loose (ficheiros em bruto, nao um verdadeiro pacote assinado da Store), e o Windows recusa este tipo de instalacao sem esse modo.

Instalacao do runtime .NET e ativacao do modo de programador

Passo 6 -- Criar uma nova instalacao

Volta a abrir o BedrockLauncher, inicia sessao com a tua conta Microsoft, vai ao separador Installations e clica em New installation.

Criacao de uma nova instalacao no BedrockLauncher

Passo 7 -- Escolher uma versao antiga

Da um nome a instalacao e depois na lista de versoes escolhe uma versao antiga -- tipicamente 1.16.x ou anterior. Clica em Create.

Selecao de uma versao antiga, aqui 1.16.0.2

Passo 8 -- Iniciar a instalacao

Clica em Play. A extracao dos ficheiros pode demorar ate dez minutos dependendo da maquina -- o launcher vai parecer congelado ("Nao Responde"), e normal, deixa-o correr.

Extracao em curso, o launcher parece nao responder

Passo 9 -- Escolher a capa

Quando o jogo arrancar, inicia sessao com a tua conta, cria uma nova personagem e vai ao editor de skin, separador Capes. Ai vais encontrar a lista completa de todas as capas que existem no jogo -- incluindo as que nunca tiveste (capas de eventos promocionais, festivais passados, Mob Vote, etc). Escolhe a que quiseres.

Nao mexas no resto da aparencia da skin nesta fase, deixa so a capa.

Selecao de uma capa no editor de personagem

Passo 10 -- Reinstalar a versao oficial

Volta ao launcher oficial, separador Instalacao, e clica em Desinstalar na instalacao Bedrock principal, depois reinstala-a (ou faz Procurar Atualizacoes). Inicia o Minecraft Bedrock desta vez a partir do launcher oficial.

Desinstalacao e reinstalacao a partir do launcher oficial

E esta feito -- a tua capa esta la, na versao oficial, no teu perfil verdadeiro.

O que provavelmente esta a acontecer

Nao meti as maos no codigo fonte fechado do Bedrock (ao contrario do Java que e descompilavel), por isso o que se segue e uma explicacao provavel, nao uma certeza absoluta. Mas o comportamento observado encaixa bastante bem na seguinte hipotese.

O seletor de capas nunca foi um controlo de acesso

No Bedrock, o ecra de selecao de capas mostra provavelmente a lista completa de todas as capas que existem no jogo, e nao apenas as que a tua conta possui. Nos clientes recentes, um filtro aplicativo (do lado do cliente ou atraves de uma chamada de rede para um servico de entitlement Xbox/Microsoft) põe a cinzento ou esconde as capas que nao possuis.

O ponto chave e que este filtro foi provavelmente adicionado a posteriori, numa versao do jogo suficientemente recente. Uma versao como 1.16.x e anterior a este filtro, ou usa um mecanismo de verificacao diferente (ou ausente): tudo o que esta na lista torna-se selecionavel, com ou sem entitlement.

Onde e que a capa fica guardada exatamente?

Esta e a parte que explica porque e que sobrevive a reinstalacao. A escolha de skin/capa no Bedrock nao e apenas um ficheiro local descartavel -- e provavelmente sincronizada no perfil Xbox Live associado a tua conta Microsoft (o mesmo sistema que gere a tua skin nas outras plataformas Bedrock -- telemovel, consola, etc.). Quando selecionas uma capa no cliente antigo, este envia muito provavelmente essa selecao para o servico de perfil, exatamente da mesma forma que um cliente atualizado o faria com uma capa legitima -- porque do ponto de vista do cliente, nao ha nenhuma diferenca entre uma capa "tua" e uma capa "escolhida". O servico de perfil, por sua vez, confia no cliente neste ponto: regista a selecao sem revalidar se o entitlement realmente existe por tras, pelo menos nao no momento da escrita.

Resultado: quando voltas a iniciar o jogo oficial atualizado, este vai buscar a tua skin/capa atual ao servico de perfil -- e o servico devolve fielmente o que foi guardado, incluindo a capa nao legitima. A verificacao de entitlement, se existir, acontece provavelmente no momento da selecao na UI (daí o filtro nos clientes recentes), nao no momento da exibicao do que ja esta guardado no perfil.

O paralelo com o Java

E a mesma familia de falha logica do cape-mod no Java: um servico confia em dados sem voltar a verificar a sua origem a cada passo. No Java, e uma assinatura RSA valida replayedada sobre o perfil errado. No Bedrock, e provavelmente uma selecao de capa aceite por um cliente antigo que nunca teve o filtro certo, e depois propagada sem revalidacao para o estado persistente da conta. Em ambos os casos, o problema nao e o ponto de entrada (o mod Java, o cliente antigo Bedrock) -- mas o facto de a camada que deveria revalidar o entitlement a jusante nao o fazer, ou faze-lo apenas uma vez, no sitio errado.

Porque e que ainda funciona

Duas explicacoes possiveis, nao mutuamente exclusivas:

  1. A Mojang provavelmente nao considera isto prioritario. E preciso um launcher de terceiros, um processo em varios passos, e o resultado e puramente cosmetico -- sem vantagem de gameplay, sem dados de terceiros comprometidos.
  2. Corrigir isto corretamente exigiria revalidar os entitlements em cada leitura do perfil, nao apenas na selecao -- o que significa uma chamada de rede adicional em cada exibicao de skin, para um problema que so diz respeito a estetica.

Conclusao

Este tutorial cabe em dez capturas de ecrã, mas ilustra um principio que se encontra por todo o lado na seguranca de software: assim que um sistema legacy (uma versao antiga de cliente, uma API legacy, um servico nunca atualizado) ainda consegue escrever num estado partilhado, o controlo de acesso atual so protege o que passa pelo presente. Tudo o que ainda consegue falar com a API antiga contorna o filtro mais recente -- nao porque o filtro esteja partido, mas porque nunca foi aplicado a versao que o precedeu.


Recursos

3 pontos chave

  1. O seletor de capas de uma versao antiga do Bedrock mostra provavelmente a lista completa de todas as capas do jogo, sem filtro de entitlement.
  2. A selecao e depois sincronizada no teu perfil Xbox Live como qualquer capa legitima -- o servico de perfil confia no cliente.
  3. A verificacao de entitlement, se existir, acontece na selecao na UI recente -- nao na leitura do que ja esta guardado na conta.

Cara Mendapatkan Jubah Apapun di Minecraft Bedrock

Launcher pihak ketiga, versi lama game, dan pemilih jubah yang tidak pernah belajar bilang tidak. Tutorial lengkap plus penjelasan kemungkinan kenapa ini bekerja.

Cara Mendapatkan Jubah Apapun di Minecraft Bedrock

Di Java, ada banyak cara berbelit untuk mendapatkan jubah yang seharusnya tidak Anda miliki (lihat artikel cape-mod). Di Bedrock, gamenya berbeda, autentikasinya berbeda, tapi tetap ada caranya -- tidak perlu mod, tidak perlu menyentuh paket jaringan apapun. Cukup launcher pihak ketiga dan versi game yang cukup tua sehingga belum memiliki validasi yang diharapkan.

Ini caranya, lalu kita lihat apa yang mungkin terjadi di balik layar.

Yang Anda butuhkan

  • Akun Microsoft yang sudah memiliki Minecraft Bedrock (akun Anda sendiri cukup)
  • Launcher Minecraft resmi terinstal
  • BedrockLauncher, launcher pihak ketiga open source yang memungkinkan Anda menginstal dan menjalankan versi historis Bedrock manapun
  • .NET 8.0 Desktop Runtime
  • Mode pengembang diaktifkan di Windows

Langkah 1 -- Instal Bedrock setidaknya sekali dengan launcher resmi

Sebelum melakukan apapun, buka launcher Minecraft resmi, buka tab Minecraft: Bedrock Edition, dan klik Install. Bedrock harus sudah terinstal dan dijalankan setidaknya sekali melalui jalur resmi sebelum menyentuh BedrockLauncher.

Instal Bedrock Edition dari launcher resmi

Langkah 2 -- Unduh BedrockLauncher

Pergi ke halaman rilis GitHub proyek ini. Ambil zip versi terbaru yang tercantum di Assets.

Halaman rilis GitHub BedrockLauncher

Langkah 3 -- Ekstrak arsip

Setelah zip terunduh, ekstrak ke folder Downloads Anda (atau di manapun, asal Anda bisa menemukan foldernya nanti).

Ekstrak arsip BedrockLauncher

Langkah 4 -- Jalankan file eksekusinya

Masuk ke folder hasil ekstrak dan jalankan BedrockLauncher.exe.

Menjalankan BedrockLauncher.exe

Langkah 5 -- Instal .NET Desktop Runtime dan aktifkan mode pengembang

Saat pertama kali dijalankan, Windows kemungkinan besar akan meminta .NET 8.0 Desktop Runtime -- instal. Anda juga perlu mengaktifkan mode pengembang di Pengaturan > Sistem > Untuk pengembang, karena BedrockLauncher menginstal game sebagai paket lepas (file mentah, bukan paket Store asli yang ditandatangani), dan Windows menolak instalasi seperti ini tanpa mode itu.

Instal .NET Runtime dan aktifkan mode pengembang

Langkah 6 -- Buat instalasi baru

Luncurkan lagi BedrockLauncher, masuk dengan akun Microsoft Anda, buka tab Installations, lalu klik New installation.

Membuat instalasi baru di BedrockLauncher

Langkah 7 -- Pilih versi lama

Beri nama instalasi, lalu di daftar versi, pilih versi lama -- biasanya 1.16.x atau lebih awal. Klik Create.

Memilih versi lama, di sini 1.16.0.2

Langkah 8 -- Luncurkan instalasi

Klik Play. Ekstraksi file bisa memakan waktu hingga sepuluh menit tergantung mesin -- launcher akan tampak beku ("Not Responding"), ini normal, biarkan berjalan.

Ekstraksi sedang berlangsung, launcher tampak tidak merespons

Langkah 9 -- Pilih jubah

Setelah game diluncurkan, masuk dengan akun Anda, buat karakter baru dan buka editor skin, tab Jubah. Di sana Anda akan menemukan daftar lengkap semua jubah yang ada di dalam game -- termasuk yang tidak pernah Anda miliki (jubah event promo, festival lampau, Mob Vote, dll). Pilih yang Anda mau.

Jangan sentuh tampilan skin lainnya di tahap ini, biarkan saja jubanya.

Memilih jubah di editor karakter

Langkah 10 -- Instal ulang versi resmi

Kembali ke launcher resmi, tab Instalasi, dan klik Uninstall pada instalasi Bedrock utama, lalu instal ulang (atau tekan Check for Updates). Luncurkan Minecraft Bedrock kali ini dari launcher resmi.

Uninstal dan instal ulang dari launcher resmi

Dan selesai -- jubah Anda sudah ada, di versi resmi, di profil asli Anda.

Apa yang mungkin terjadi

Saya belum mengoprek kode sumber tertutup Bedrock (tidak seperti Java yang bisa didekompilasi), jadi berikut ini adalah penjelasan kemungkinan, bukan kepastian mutlak. Tapi perilaku yang diamati cukup cocok dengan hipotesis berikut.

Pemilih jubah tidak pernah menjadi kontrol akses

Di Bedrock, layar pemilihan jubah kemungkinan besar menampilkan daftar lengkap semua jubah yang ada di game, bukan hanya yang dimiliki akun Anda. Di klien terbaru, filter aplikasi (sisi klien atau melalui panggilan jaringan ke layanan entititlement Xbox/Microsoft) membuat abu-abu atau menyembunyikan jubah yang tidak Anda miliki.

Poin kuncinya adalah filter ini kemungkinan ditambahkan belakangan, di versi game yang cukup baru. Versi seperti 1.16.x mendahului filter ini, atau menggunakan mekanisme verifikasi yang berbeda (atau tidak ada sama sekali): semua yang ada di daftar menjadi bisa dipilih, dengan atau tanpa entititlement.

Di mana tepatnya jubah disimpan?

Ini bagian yang menjelaskan mengapa pilihan bertahan setelah instal ulang. Pilihan skin/jubah di Bedrock bukan sekadar file lokal yang dibuang -- kemungkinan besar disinkronkan ke profil Xbox Live yang terhubung ke akun Microsoft Anda (sistem yang sama yang mengelola skin Anda di platform Bedrock lain -- seluler, konsol, dll). Saat Anda memilih jubah di klien lama, klien kemungkinan besar mengirim pilihan itu ke layanan profil, persis seperti cara klien terbaru melakukannya dengan jubah yang sah -- karena dari sudut pandang klien, tidak ada bedanya antara jubah "milik Anda" dan jubah "yang dipilih". Layanan profil, dari pihaknya, memercayai klien dalam hal ini: ia mencatat pilihan tanpa memvalidasi ulang apakah entititlementnya benar-benar ada di belakangnya, setidaknya tidak pada saat penulisan.

Hasilnya: ketika Anda meluncurkan ulang game resmi terbaru, game mengambil skin/jubah Anda saat ini dari layanan profil -- dan layanan dengan setia mengembalikan apa yang disimpan, termasuk jubah yang tidak sah. Pemeriksaan entititlement, jika ada, kemungkinan terjadi pada saat pemilihan di UI (makanya ada filter di klien terbaru), bukan pada saat penampilan dari apa yang sudah tersimpan di profil.

Paralel dengan Java

Ini adalah keluarga cacat logika yang sama dengan cape-mod di Java: sebuah layanan memercayai data tanpa memeriksa ulang asal-usulnya di setiap langkah. Di Java, ini adalah tanda tangan RSA valid yang diputar ulang di profil yang salah. Di Bedrock, ini kemungkinan adalah pilihan jubah yang diterima oleh klien lama yang tidak pernah memiliki filter yang benar, lalu disebarkan tanpa validasi ulang ke status persisten akun. Dalam kedua kasus, masalahnya bukan pada titik masuk (mod Java, klien Bedrock lama) -- melainkan bahwa lapisan yang seharusnya memvalidasi ulang entititlement di hilir tidak melakukannya, atau hanya melakukannya sekali, di tempat yang salah.

Kenapa masih berfungsi

Dua penjelasan yang mungkin, tidak saling eksklusif:

  1. Mojang kemungkinan tidak menganggap ini prioritas. Butuh launcher pihak ketiga, proses multi-langkah, dan hasilnya murni kosmetik -- tidak ada keunggulan gameplay, tidak ada data orang lain yang dikompromikan.
  2. Menambal ini dengan benar akan membutuhkan validasi ulang entititlement pada setiap pembacaan profil, bukan hanya saat pemilihan -- yang berarti panggilan jaringan tambahan di setiap penampilan skin, untuk masalah yang hanya menyangkut estetika.

Kesimpulan

Tutorial ini muat dalam sepuluh tangkapan layar, tapi mengilustrasikan prinsip yang bisa ditemukan di mana-mana dalam keamanan perangkat lunak: begitu sistem lawas (versi klien lama, API lawas, layanan yang tidak pernah diperbarui) masih bisa menulis ke status bersama, kontrol akses masa kini hanya melindungi apa yang melewati masa kini. Apapun yang masih bisa berbicara dengan API lama melewati filter yang lebih baru -- bukan karena filternya rusak, tapi karena filter itu tidak pernah diterapkan ke versi sebelumnya.


Sumber daya

3 poin utama

  1. Pemilih jubah di versi Bedrock lama kemungkinan menampilkan daftar lengkap semua jubah game, tanpa filter entititlement.
  2. Pilihan kemudian disinkronkan ke profil Xbox Live Anda seperti jubah sah manapun -- layanan profil memercayai klien.
  3. Pemeriksaan entititlement, jika ada, terjadi saat pemilihan di UI terbaru -- bukan saat membaca apa yang sudah tersimpan di akun.

Minecraft Bedrock में कोई भी केप कैसे प्राप्त करें

एक थर्ड-पार्टी लॉन्चर, गेम का पुराना वर्शन, और एक केप सिलेक्टर जिसने कभी ना कहना नहीं सीखा। पूरा ट्यूटोरियल और यह क्यों काम करता है इसकी संभावित व्याख्या।

Minecraft Bedrock में कोई भी केप कैसे प्राप्त करें

Java पर, ऐसे ढेरों घुमावदार तरीके हैं जिनसे आपको वो केप मिल सकती है जो आपके पास नहीं होनी चाहिए (cape-mod लेख देखें)। Bedrock पर, गेम अलग है, ऑथ अलग है, लेकिन फिर भी एक तरीका है -- न कोई मॉड चाहिए, न किसी नेटवर्क पैकेट से छेड़छाड़। बस एक थर्ड-पार्टी लॉन्चर और गेम का इतना पुराना वर्शन जिसमें वो वैलिडेशन नहीं है जिसकी अपेक्षा होती।

ये रहा करने का तरीका, और फिर हम देखेंगे कि हुड के नीचे शायद क्या हो रहा है।

आपको क्या चाहिए

  • एक Microsoft अकाउंट जिसमें पहले से Minecraft Bedrock हो (आपका अपना काम करेगा)
  • आधिकारिक Minecraft लॉन्चर इंस्टॉल किया हुआ
  • BedrockLauncher, एक ओपन-सोर्स थर्ड-पार्टी लॉन्चर जो आपको Bedrock के किसी भी ऐतिहासिक वर्शन को इंस्टॉल और चलाने देता है
  • .NET 8.0 Desktop Runtime
  • Windows पर डेवलपर मोड सक्षम

स्टेप 1 -- कम से कम एक बार आधिकारिक लॉन्चर से Bedrock इंस्टॉल करें

कुछ और करने से पहले, आधिकारिक Minecraft लॉन्चर खोलें, Minecraft: Bedrock Edition टैब पर जाएं, और Install पर क्लिक करें। BedrockLauncher को छूने से पहले Bedrock कम से कम एक बार आधिकारिक रास्ते से इंस्टॉल और लॉन्च हो चुका होना चाहिए।

आधिकारिक लॉन्चर से Bedrock Edition इंस्टॉल करें

स्टेप 2 -- BedrockLauncher डाउनलोड करें

प्रोजेक्ट के GitHub रिलीज़ पेज पर जाएं। Assets के नीचे लिस्टेड लेटेस्ट वर्शन का zip लें।

BedrockLauncher का GitHub रिलीज़ पेज

स्टेप 3 -- आर्काइव एक्सट्रैक्ट करें

zip डाउनलोड करने के बाद, इसे अपने Downloads फ़ोल्डर (या कहीं भी, बस बाद में फ़ोल्डर ढूंढ पाएं) में एक्सट्रैक्ट करें।

BedrockLauncher आर्काइव एक्सट्रैक्ट करना

स्टेप 4 -- एक्जीक्यूटेबल चलाएं

एक्सट्रैक्ट किए गए फ़ोल्डर में जाएं और BedrockLauncher.exe चलाएं।

BedrockLauncher.exe चलाना

स्टेप 5 -- .NET Desktop Runtime इंस्टॉल करें और डेवलपर मोड सक्षम करें

पहले लॉन्च पर, Windows आपसे शायद .NET 8.0 Desktop Runtime मांगेगा -- इंस्टॉल करें। आपको Settings > System > For developers में डेवलपर मोड भी सक्षम करना होगा, क्योंकि BedrockLauncher गेम को लूज़ पैकेज (रॉ फ़ाइलें, असली साइन्ड स्टोर पैकेज नहीं) के रूप में इंस्टॉल करता है, और Windows इस मोड के बिना इस तरह की इंस्टॉलेशन को मना कर देता है।

.NET Runtime इंस्टॉल करना और डेवलपर मोड सक्षम करना

स्टेप 6 -- नई इंस्टॉलेशन बनाएं

BedrockLauncher को फिर से लॉन्च करें, अपने Microsoft अकाउंट से साइन इन करें, Installations टैब पर जाएं, फिर New installation पर क्लिक करें।

BedrockLauncher में नई इंस्टॉलेशन बनाना

स्टेप 7 -- पुराना वर्शन चुनें

इंस्टॉलेशन को एक नाम दें, फिर वर्शन लिस्ट में से एक पुराना वर्शन चुनें -- आम तौर पर 1.16.x या उससे पहले का। Create पर क्लिक करें।

पुराने वर्शन का चयन, यहां 1.16.0.2

स्टेप 8 -- इंस्टॉलेशन लॉन्च करें

Play पर क्लिक करें। फ़ाइल एक्सट्रैक्शन में मशीन के हिसाब से दस मिनट तक लग सकते हैं -- लॉन्चर जमा हुआ ("Not Responding") दिखेगा, ये सामान्य है, चलने दें।

एक्सट्रैक्शन जारी, लॉन्चर अनरिस्पॉन्सिव दिख रहा है

स्टेप 9 -- केप चुनें

गेम लॉन्च होने के बाद, अपने अकाउंट से साइन इन करें, नया कैरेक्टर बनाएं और स्किन एडिटर में केप्स टैब पर जाएं। वहां आपको गेम में मौजूद सभी केप्स की पूरी लिस्ट मिलेगी -- जिनमें वो भी शामिल हैं जो आपके पास कभी नहीं थीं (प्रोमो इवेंट, पिछले फ़ेस्टिवल, Mob Vote आदि की केप्स)। जो चाहें चुनें।

इस स्टेज पर स्किन के बाकी लुक को न छुएं, सिर्फ केप रहने दें।

कैरेक्टर एडिटर में केप का चयन

स्टेप 10 -- आधिकारिक वर्शन फिर से इंस्टॉल करें

आधिकारिक लॉन्चर पर वापस जाएं, इंस्टॉलेशन टैब, और मुख्य Bedrock इंस्टॉलेशन पर Uninstall पर क्लिक करें, फिर इसे फिर से इंस्टॉल करें (या Check for Updates करें)। Minecraft Bedrock को इस बार आधिकारिक लॉन्चर से चलाएं।

आधिकारिक लॉन्चर से अनइंस्टॉल और रीइंस्टॉल

बस इतना ही -- आपकी केप वहां है, आधिकारिक वर्शन पर, आपकी असली प्रोफ़ाइल पर।

शायद क्या हो रहा है

मैंने Bedrock के क्लोज़्ड-सोर्स कोड में हाथ नहीं डाला (Java के विपरीत जो डीकंपाइलेबल है), इसलिए आगे जो है वो एक संभावित व्याख्या है, पूर्ण निश्चितता नहीं। लेकिन जो व्यवहार देखा गया है वो निम्नलिखित परिकल्पना से काफ़ी मेल खाता है।

केप सिलेक्टर कभी एक्सेस कंट्रोल नहीं था

Bedrock पर, केप चयन स्क्रीन सबसे अधिक संभावना है गेम में मौजूद सभी केप्स की पूरी सूची दिखाती है, न कि सिर्फ वो जो आपके अकाउंट के पास हैं। हाल के क्लाइंट्स पर, एक एप्लिकेशन फ़िल्टर (क्लाइंट साइड पर या किसी Xbox/Microsoft एंटाइटलमेंट सर्विस को नेटवर्क कॉल के ज़रिए) उन केप्स को ग्रे आउट या छुपा देता है जो आपके पास नहीं हैं।

मुख्य बात यह है कि यह फ़िल्टर संभवतः बाद में जोड़ा गया था, गेम के पर्याप्त हाल के वर्शन पर। 1.16.x जैसा वर्शन इस फ़िल्टर से पहले का है, या एक अलग (या अनुपस्थित) सत्यापन तंत्र का उपयोग करता है: सूची में सब कुछ चयन योग्य हो जाता है, एंटाइटलमेंट हो या न हो।

केप वास्तव में कहां स्टोर होती है?

यह वो हिस्सा है जो बताता है कि यह रीइंस्टॉलेशन के बाद क्यों बची रहती है। Bedrock पर आपकी स्किन/केप की पसंद सिर्फ एक फेंकने वाली लोकल फ़ाइल नहीं है -- यह संभवतः आपके Microsoft अकाउंट से जुड़ी Xbox Live प्रोफ़ाइल पर सिंक होती है (वही सिस्टम जो दूसरे Bedrock प्लेटफ़ॉर्म -- मोबाइल, कंसोल आदि पर आपकी स्किन को मैनेज करता है)। जब आप पुराने क्लाइंट में कोई केप चुनते हैं, तो वह संभवतः उस चयन को प्रोफ़ाइल सर्विस पर भेजता है, ठीक वैसे ही जैसे एक अप-टू-डेट क्लाइंट किसी वैध केप के साथ करता -- क्योंकि क्लाइंट के नज़रिए से, "आपकी" केप और "चुनी हुई" केप में कोई अंतर नहीं है। प्रोफ़ाइल सर्विस, अपनी तरफ से, इस मामले में क्लाइंट पर भरोसा करती है: वह चयन को रिकॉर्ड कर लेती है बिना दोबारा जांचे कि वास्तव में उसके पीछे एंटाइटलमेंट है या नहीं, कम से कम लिखाई के समय तो नहीं।

नतीजा: जब आप अप-टू-डेट आधिकारिक गेम फिर से लॉन्च करते हैं, तो वह आपकी मौजूदा स्किन/केप प्रोफ़ाइल सर्विस से लेता है -- और सर्विस वफ़ादारी से वही लौटाती है जो सेव किया गया था, गैर-वैध केप समेत। एंटाइटलमेंट चेक, अगर मौजूद है, तो संभवतः हाल के UI में चयन के समय होता है (इसलिए हाल के क्लाइंट्स में फ़िल्टर), न कि प्रोफ़ाइल पर पहले से सेव की गई चीज़ के प्रदर्शन के समय।

Java के साथ समानता

यह Java पर cape-mod जैसी ही लॉजिक खामी की फ़ैमिली है: एक सर्विस हर कदम पर डेटा के स्रोत की दोबारा जांच किए बिना उस पर भरोसा करती है। Java पर, यह गलत प्रोफ़ाइल पर रीप्ले किया गया एक वैध RSA सिग्नेचर है। Bedrock पर, यह संभवतः एक केप चयन है जो एक पुराने क्लाइंट द्वारा स्वीकार किया गया जिसके पास कभी सही फ़िल्टर नहीं था, और फिर बिना पुनः सत्यापन के अकाउंट की स्थायी स्थिति में प्रचारित हो गया। दोनों मामलों में, समस्या प्रवेश बिंदु (Java मॉड, पुराना Bedrock क्लाइंट) नहीं है -- बल्कि यह कि जिस लेयर को डाउनस्ट्रीम में एंटाइटलमेंट को दोबारा मान्य करना चाहिए, वह ऐसा नहीं करती, या सिर्फ एक बार, गलत जगह पर करती है।

यह अब भी क्यों काम करता है

दो संभावित व्याख्याएं, परस्पर अनन्य नहीं:

  1. Mojang शायद इसे प्राथमिकता नहीं मानता। इसके लिए थर्ड-पार्टी लॉन्चर, मल्टी-स्टेप प्रक्रिया चाहिए, और परिणाम पूरी तरह कॉस्मेटिक है -- कोई गेमप्ले लाभ नहीं, किसी और का डेटा ख़तरे में नहीं।
  2. इसे सही से पैच करने के लिए हर प्रोफ़ाइल रीड पर एंटाइटलमेंट को दोबारा मान्य करना होगा, सिर्फ चयन पर नहीं -- जिसका मतलब है हर स्किन डिस्प्ले पर एक अतिरिक्त नेटवर्क कॉल, एक ऐसी समस्या के लिए जो सिर्फ़ दिखावे से जुड़ी है।

निष्कर्ष

यह ट्यूटोरियल दस स्क्रीनशॉट में समा जाता है, लेकिन यह एक ऐसा सिद्धांत दिखाता है जो सॉफ़्टवेयर सुरक्षा में हर जगह मिलता है: जैसे ही कोई लीगेसी सिस्टम (पुराना क्लाइंट वर्शन, लीगेसी API, कभी अपडेट न होने वाली सर्विस) अभी भी शेयर्ड स्टेट में लिख सकता है, वर्तमान का एक्सेस कंट्रोल सिर्फ उसे बचाता है जो वर्तमान से गुज़रता है। जो कुछ भी अभी भी पुराने API से बात कर सकता है वह नए फ़िल्टर को बायपास करता है -- इसलिए नहीं कि फ़िल्टर टूटा हुआ है, बल्कि इसलिए कि वह कभी उस वर्शन पर लागू ही नहीं हुआ जो उससे पहले आया था।


संसाधन

3 मुख्य बातें

  1. पुराने Bedrock वर्शन का केप सिलेक्टर संभवतः बिना एंटाइटलमेंट फ़िल्टर के सभी गेम केप्स की पूरी सूची दिखाता है।
  2. चयन फिर किसी भी वैध केप की तरह आपकी Xbox Live प्रोफ़ाइल पर सिंक हो जाता है -- प्रोफ़ाइल सर्विस क्लाइंट पर भरोसा करती है।
  3. एंटाइटलमेंट चेक, अगर है, तो हाल के UI में चयन के समय होता है -- न कि अकाउंट पर पहले से सेव की गई चीज़ के पढ़ने के समय।

كيفية الحصول على أي عباءة في Minecraft Bedrock

مشغل خارجي، نسخة قديمة من اللعبة، ومحدد عبايات لم يتعلم أبدًا أن يقول لا. دليل كامل مع التفسير المحتمل لسبب نجاحها.

كيفية الحصول على أي عباءة في Minecraft Bedrock

في Java، توجد طرق ملتوية عديدة لتحصل على عباءة لا يفترض بك امتلاكها (راجع مقال cape-mod). في Bedrock، اللعبة مختلفة، المصادقة مختلفة، لكن توجد طريقة مع ذلك -- لا تحتاج إلى مودات، ولا تحتاج للتلاعب بأي حزمة شبكة. فقط مشغل خارجي ونسخة قديمة بما يكفي من اللعبة لتفتقر إلى التحقق المتوقع.

إليك كيفية القيام بذلك، ثم سنلقي نظرة على ما يحدث تحت الغطاء على الأرجح.

ما تحتاجه

  • حساب Microsoft يملك Minecraft Bedrock مسبقًا (حسابك يفي بالغرض)
  • مشغل Minecraft الرسمي مثبت
  • BedrockLauncher، مشغل خارجي مفتوح المصدر يتيح لك تثبيت وتشغيل أي نسخة تاريخية من Bedrock
  • .NET 8.0 Desktop Runtime
  • وضع المطور مفعل على Windows

الخطوة 1 -- تثبيت Bedrock مرة واحدة على الأقل عبر المشغل الرسمي

قبل القيام بأي شيء آخر، افتح مشغل Minecraft الرسمي، انتقل إلى علامة تبويب Minecraft: Bedrock Edition، وانقر على تثبيت. يجب أن يكون Bedrock قد تم تثبيته وتشغيله مرة واحدة على الأقل عبر القناة الرسمية قبل لمس BedrockLauncher.

تثبيت Bedrock Edition من المشغل الرسمي

الخطوة 2 -- تنزيل BedrockLauncher

توجه إلى صفحة الإصدارات على GitHub للمشروع. خذ ملف zip من أحدث إصدار مدرج تحت Assets.

صفحة إصدارات BedrockLauncher على GitHub

الخطوة 3 -- فك ضغط الأرشيف

بعد تحميل ملف zip، فك ضغطه في مجلد Downloads (أو أي مكان آخر، طالما تجد المجلد لاحقًا).

فك ضغط أرشيف BedrockLauncher

الخطوة 4 -- تشغيل الملف التنفيذي

ادخل إلى المجلد الذي تم فك ضغطه وشغل BedrockLauncher.exe.

تشغيل BedrockLauncher.exe

الخطوة 5 -- تثبيت .NET Desktop Runtime وتفعيل وضع المطور

عند التشغيل لأول مرة، سيطلب منك Windows على الأرجح .NET 8.0 Desktop Runtime -- قم بتثبيته. تحتاج أيضًا إلى تفعيل وضع المطور من الإعدادات > النظام > للمطورين، لأن BedrockLauncher يثبت اللعبة كحزمة فضفاضة (ملفات خام، وليست حزمة متجر موقعة حقيقية)، ويرفض Windows هذا النوع من التثبيت بدون هذا الوضع.

تثبيت .NET Runtime وتفعيل وضع المطور

الخطوة 6 -- إنشاء تثبيت جديد

أعد تشغيل BedrockLauncher، سجل الدخول بحساب Microsoft الخاص بك، انتقل إلى علامة تبويب Installations، ثم انقر على New installation.

إنشاء تثبيت جديد في BedrockLauncher

الخطوة 7 -- اختيار نسخة قديمة

أعط اسمًا للتثبيت، ثم من قائمة الإصدارات، اختر نسخة قديمة -- عادة 1.16.x أو أقدم. انقر على Create.

اختيار نسخة قديمة، هنا 1.16.0.2

الخطوة 8 -- تشغيل التثبيت

انقر على Play. قد يستغرق استخراج الملفات حتى عشر دقائق حسب الجهاز -- سيبدو المشغل متجمدًا ("لا يستجيب")، هذا طبيعي، اتركه يعمل.

استخراج جاري، المشغل يبدو غير مستجيب

الخطوة 9 -- اختيار العباءة

بمجرد تشغيل اللعبة، سجل الدخول بحسابك، أنشئ شخصية جديدة واذهب إلى محرر الهيئة، علامة تبويب العباءات. هناك ستجد القائمة الكاملة لجميع العباءات الموجودة في اللعبة -- بما فيها تلك التي لم تمتلكها أبدًا (عباءات الفعاليات الترويجية، المهرجانات السابقة، تصويت المخلوقات، إلخ). اختر ما تريد.

لا تلمس باقي مظهر الهيئة في هذه المرحلة، اترك العباءة فقط.

اختيار عباءة في محرر الشخصية

الخطوة 10 -- إعادة تثبيت النسخة الرسمية

عد إلى المشغل الرسمي، علامة تبويب التثبيت، وانقر على إلغاء التثبيت على تثبيت Bedrock الرئيسي، ثم أعد تثبيته (أو اضغط التحقق من التحديثات). شغل Minecraft Bedrock هذه المرة من المشغل الرسمي.

إلغاء التثبيت وإعادة التثبيت من المشغل الرسمي

وها قد انتهيت -- عبادتك موجودة على النسخة الرسمية، على ملفك الشخصي الحقيقي.

ما يحدث على الأرجح

لم أتعمق في كود المصدر المغلق لـ Bedrock (على عكس Java القابل لفك التجميع)، لذا فإن ما يلي تفسير محتمل، وليس يقينًا مطلقًا. لكن السلوك الملاحظ يتطابق جيدًا مع الفرضية التالية.

محدّد العباءات لم يكن أبدًا تحكمًا في الوصول

في Bedrock، شاشة اختيار العباءة تعرض على الأرجح القائمة الكاملة لجميع العباءات الموجودة في اللعبة، وليس فقط تلك التي يملكها حسابك. في النسخ الحديثة، يقوم مرشح تطبيقي (من جانب العميل أو عبر اتصال شبكي بخدمة استحقاقات Xbox/Microsoft) بتعطيم أو إخفاء العباءات التي لا تملكها.

النقطة الأساسية هي أن هذا المرشح أضيف على الأرجح لاحقًا، في نسخة حديثة بما يكفي من اللعبة. نسخة مثل 1.16.x تسبق هذا المرشح، أو تستخدم آلية تحقق مختلفة (أو معدومة): كل ما في القائمة يصبح قابلًا للاختيار، بغض النظر عن الاستحقاق.

أين تُخزن العباءة بالضبط؟

هذا هو الجزء الذي يفسر لماذا ينجو الاختيار من إعادة التثبيت. اختيار الهيئة/العباءة في Bedrock ليس مجرد ملف محلي مؤقت -- إنه على الأرجح متزامن مع ملف Xbox Live المرتبط بحساب Microsoft الخاص بك (نفس النظام الذي يدير هيئتك على منصات Bedrock الأخرى -- الجوال، الأجهزة المنزلية، إلخ). عندما تختار عباءة في العميل القديم، فإنه على الأرجح يرسل هذا الاختيار إلى خدمة الملف الشخصي، تمامًا كما يفعل عميل محدث مع عباءة شرعية -- لأنه من وجهة نظر العميل، لا يوجد فرق بين عباءة "تملكها" وعباءة "مختارة". خدمة الملف الشخصي بدورها تثق بالعميل في هذه النقطة: تسجل الاختيار دون إعادة التحقق مما إذا كان الاستحقاق موجودًا فعليًا خلفه، على الأقل ليس في وقت الكتابة.

النتيجة: عندما تعيد تشغيل اللعبة الرسمية المحدثة، تجلب هيئتك/عباءتك الحالية من خدمة الملف الشخصي -- وتعيد الخدمة بأمانة ما تم حفظه، بما في ذلك العباءة غير الشرعية. التحقق من الاستحقاق، إن وجد، يحدث على الأرجح في وقت الاختيار في واجهة المستخدم (ومن هنا يأتي المرشح في النسخ الحديثة)، وليس في وقت عرض ما هو مسجل بالفعل في الملف الشخصي.

التشابه مع Java

إنها نفس عائلة الثغرة المنطقية الموجودة في cape-mod على Java: خدمة تثق بالبيانات دون إعادة التحقق من مصدرها في كل خطوة. في Java، هو توقيع RSA صالح يعاد تشغيله على ملف شخصي خاطئ. في Bedrock، هو على الأرجح اختيار عباءة مقبول من عميل قديم لم يكن لديه المرشح الصحيح أبدًا، ثم ينتشر دون إعادة تحقق إلى الحالة الدائمة للحساب. في كلتا الحالتين، المشكلة ليست في نقطة الدخول (مود Java، العميل القديم لـ Bedrock) -- بل في أن الطبقة التي يجب أن تعيد التحقق من الاستحقاق في المراحل اللاحقة لا تفعل ذلك، أو تفعله مرة واحدة فقط، في المكان الخطأ.

لماذا لا يزال يعمل

تفسيران محتملان، غير متنافيين:

  1. Mojang على الأرجح لا تعتبر هذا أولوية. يتطلب مشغلًا خارجيًا، عملية متعددة الخطوات، والنتيجة تجميلية بحتة -- لا ميزة في اللعب، ولا بيانات لأطراف أخرى مخترقة.
  2. إصلاح هذا بشكل صحيح سيتطلب إعادة التحقق من الاستحقاقات عند كل قراءة للملف الشخصي، وليس فقط عند الاختيار -- مما يعني اتصال شبكي إضافي عند كل عرض للهيئة، لمشكلة تتعلق فقط بالمظهر.

الخلاصة

هذا الدليل يناسب عشر لقطات شاشة، لكنه يوضح مبدأً نجده في كل مكان في أمن البرمجيات: بمجرد أن نظامًا قديمًا (نسخة عميل قديمة، واجهة برمجة قديمة، خدمة لم تُحدث أبدًا) لا يزال يمكنه الكتابة في حالة مشتركة، فإن تحكم الوصول الحالي لا يحمي إلا ما يمر عبر الحاضر. كل ما لا يزال يمكنه التحدث مع الواجهة القديمة يتجاوز المرشح الأحدث -- ليس لأن المرشح معطل، ولكن لأنه لم يُطبق أبدًا على النسخة التي سبقته.


المصادر

3 نقاط رئيسية

  1. محدّد العباءات في نسخة قديمة من Bedrock يعرض على الأرجح القائمة الكاملة لجميع عبايات اللعبة، بدون مرشح استحقاق.
  2. يتم بعد ذلك مزامنة الاختيار مع ملف Xbox Live الخاص بك مثل أي عباءة شرعية -- خدمة الملف الشخصي تثق بالعميل.
  3. التحقق من الاستحقاق، إن وجد، يحدث عند الاختيار في واجهة المستخدم الحديثة -- وليس عند قراءة ما هو مسجل بالفعل في الحساب.

Cách lấy bất kỳ áo choàng nào trên Minecraft Bedrock

Một launcher bên thứ ba, một phiên bản cũ của game, và một bộ chọn áo choàng chưa bao giờ học cách nói không. Hướng dẫn đầy đủ kèm theo giải thích khả năng về lý do tại sao nó hoạt động.

Cách lấy bất kỳ áo choàng nào trên Minecraft Bedrock

Trên Java, có rất nhiều cách quanh co để sở hữu một áo choàng mà bạn không nên có (xem bài viết cape-mod). Trên Bedrock, game thì khác, xác thực thì khác, nhưng vẫn có một cách -- không cần mod, không cần động chạm vào bất kỳ gói mạng nào. Chỉ cần một launcher bên thứ ba và một phiên bản game đủ cũ để không có xác thực như mong đợi.

Đây là cách làm, và sau đó chúng ta sẽ xem điều gì có lẽ đang xảy ra bên trong.

Những gì bạn cần

  • Một tài khoản Microsoft đã sở hữu Minecraft Bedrock (tài khoản của bạn dùng được)
  • Đã cài đặt launcher Minecraft chính thức
  • BedrockLauncher, một launcher bên thứ ba mã nguồn mở cho phép bạn cài đặt và chạy bất kỳ phiên bản lịch sử nào của Bedrock
  • .NET 8.0 Desktop Runtime
  • Đã bật chế độ nhà phát triển trên Windows

Bước 1 -- Cài đặt Bedrock ít nhất một lần với launcher chính thức

Trước khi làm bất cứ điều gì khác, mở launcher Minecraft chính thức, vào tab Minecraft: Bedrock Edition, và nhấn Install. Bedrock phải được cài đặt và chạy ít nhất một lần qua kênh chính thức trước khi đụng tới BedrockLauncher.

Cài đặt Bedrock Edition từ launcher chính thức

Bước 2 -- Tải BedrockLauncher

Vào trang phát hành GitHub của dự án. Lấy file zip của phiên bản mới nhất được liệt kê trong Assets.

Trang phát hành GitHub của BedrockLauncher

Bước 3 -- Giải nén file lưu trữ

Sau khi tải xuống file zip, giải nén nó vào thư mục Downloads (hoặc bất kỳ đâu, miễn là bạn tìm thấy thư mục sau này).

Giải nén file lưu trữ BedrockLauncher

Bước 4 -- Chạy file thực thi

Vào thư mục đã giải nén và chạy BedrockLauncher.exe.

Chạy BedrockLauncher.exe

Bước 5 -- Cài đặt .NET Desktop Runtime và bật chế độ nhà phát triển

Khi chạy lần đầu, Windows rất có thể sẽ yêu cầu .NET 8.0 Desktop Runtime -- cài đặt nó. Bạn cũng cần bật chế độ nhà phát triển trong Cài đặt > Hệ thống > Dành cho nhà phát triển, vì BedrockLauncher cài đặt game dưới dạng gói rời rạc (file thô, không phải gói Store có chữ ký thật), và Windows từ chối kiểu cài đặt này nếu không có chế độ đó.

Cài đặt .NET Runtime và bật chế độ nhà phát triển

Bước 6 -- Tạo cài đặt mới

Mở lại BedrockLauncher, đăng nhập bằng tài khoản Microsoft của bạn, vào tab Installations, rồi nhấn New installation.

Tạo cài đặt mới trong BedrockLauncher

Bước 7 -- Chọn phiên bản cũ

Đặt tên cho cài đặt, rồi trong danh sách phiên bản, chọn một phiên bản cũ -- thường là 1.16.x hoặc sớm hơn. Nhấn Create.

Chọn phiên bản cũ, ở đây là 1.16.0.2

Bước 8 -- Chạy cài đặt

Nhấn Play. Quá trình trích xuất file có thể mất đến mười phút tùy vào máy -- launcher sẽ có vẻ bị treo ("Không phản hồi"), điều này bình thường, cứ để nó chạy.

Đang trích xuất, launcher có vẻ không phản hồi

Bước 9 -- Chọn áo choàng

Khi game đã chạy, đăng nhập bằng tài khoản, tạo nhân vật mới và vào trình chỉnh sửa skin, tab Áo choàng. Ở đó bạn sẽ thấy danh sách đầy đủ của tất cả các áo choàng tồn tại trong game -- bao gồm cả những cái bạn chưa từng sở hữu (áo choàng sự kiện khuyến mãi, lễ hội đã qua, Mob Vote, v.v.). Chọn bất kỳ cái nào bạn muốn.

Đừng chạm vào phần còn lại của ngoại hình skin ở giai đoạn này, chỉ để lại áo choàng.

Chọn áo choàng trong trình chỉnh sửa nhân vật

Bước 10 -- Cài lại phiên bản chính thức

Trở về launcher chính thức, tab Cài đặt, và nhấn Gỡ cài đặt trên cài đặt Bedrock chính, rồi cài lại (hoặc nhấn Kiểm tra cập nhật). Chạy Minecraft Bedrock lần này từ launcher chính thức.

Gỡ cài đặt và cài lại từ launcher chính thức

Vậy là xong -- áo choàng của bạn đã có ở đó, trên phiên bản chính thức, trên hồ sơ thật của bạn.

Điều gì có lẽ đang xảy ra

Tôi chưa đào sâu vào mã nguồn đóng của Bedrock (không giống Java có thể dịch ngược được), vì vậy những gì sau đây là lời giải thích có khả năng, không phải là sự chắc chắn tuyệt đối. Nhưng hành vi quan sát được khá khớp với giả thuyết sau.

Bộ chọn áo choàng chưa bao giờ là kiểm soát truy cập

Trên Bedrock, màn hình chọn áo choàng rất có khả năng hiển thị danh sách đầy đủ tất cả các áo choàng tồn tại trong game, không chỉ những cái tài khoản của bạn sở hữu. Trên các client gần đây, một bộ lọc ứng dụng (phía client hoặc qua cuộc gọi mạng đến dịch vụ entitlement Xbox/Microsoft) làm mờ hoặc ẩn những áo choàng bạn không sở hữu.

Điểm mấu chốt là bộ lọc này có lẽ được thêm vào sau này, trên một phiên bản game đủ mới. Một phiên bản như 1.16.x có trước bộ lọc này, hoặc sử dụng cơ chế xác minh khác (hoặc không có): tất cả những gì có trong danh sách đều có thể chọn được, có entitlement hay không.

Áo choàng được lưu ở đâu chính xác?

Đây là phần giải thích tại sao lựa chọn này tồn tại sau khi cài lại. Lựa chọn skin/áo choàng trên Bedrock không chỉ là một file cục bộ vứt đi -- nó có lẽ được đồng bộ lên hồ sơ Xbox Live liên kết với tài khoản Microsoft của bạn (cùng hệ thống quản lý skin của bạn trên các nền tảng Bedrock khác -- di động, máy chơi game, v.v.). Khi bạn chọn một áo choàng trong client cũ, nó rất có khả năng gửi lựa chọn đó đến dịch vụ hồ sơ, giống hệt như một client mới nhất sẽ làm với áo choàng hợp lệ -- bởi vì từ góc độ của client, không có sự khác biệt nào giữa áo choàng "bạn sở hữu" và áo choàng "được chọn". Dịch vụ hồ sơ, về phần mình, tin tưởng client ở điểm này: nó ghi lại lựa chọn mà không xác minh lại xem entitlement có thực sự tồn tại đằng sau hay không, ít nhất là không vào thời điểm ghi.

Kết quả: khi bạn chạy lại game chính thức mới nhất, nó lấy skin/áo choàng hiện tại của bạn từ dịch vụ hồ sơ -- và dịch vụ trung thành trả về những gì đã được lưu, bao gồm cả áo choàng không hợp lệ. Kiểm tra entitlement, nếu có, có lẽ xảy ra vào lúc chọn trong giao diện mới (đó là lý do có bộ lọc trên client mới), không phải vào lúc hiển thị những gì đã được lưu trên hồ sơ.

Sự tương đồng với Java

Đây cùng là loại lỗ hổng logic giống như cape-mod trên Java: một dịch vụ tin tưởng dữ liệu mà không kiểm tra lại nguồn gốc của nó ở mỗi bước. Trên Java, đó là chữ ký RSA hợp lệ được phát lại trên hồ sơ sai. Trên Bedrock, đó có lẽ là một lựa chọn áo choàng được chấp nhận bởi một client cũ không bao giờ có bộ lọc đúng, và sau đó được truyền đi mà không xác minh lại vào trạng thái bền vững của tài khoản. Trong cả hai trường hợp, vấn đề không nằm ở điểm vào (mod Java, client Bedrock cũ) -- mà là ở chỗ lớp đáng lẽ phải xác minh lại entitlement ở hạ nguồn đã không làm điều đó, hoặc chỉ làm một lần, sai chỗ.

Tại sao nó vẫn hoạt động

Hai giải thích có thể, không loại trừ lẫn nhau:

  1. Mojang có lẽ không coi đây là ưu tiên. Cần một launcher bên thứ ba, quy trình nhiều bước, và kết quả hoàn toàn là thẩm mỹ -- không lợi thế về gameplay, không dữ liệu của ai bị xâm phạm.
  2. Vá đúng cách sẽ yêu cầu xác minh lại entitlement ở mỗi lần đọc hồ sơ, không chỉ khi chọn -- tức là thêm một cuộc gọi mạng ở mỗi lần hiển thị skin, cho một vấn đề chỉ liên quan đến thẩm mỹ.

Kết luận

Hướng dẫn này gọn trong mười ảnh chụp màn hình, nhưng nó minh họa một nguyên tắc có thể thấy ở mọi nơi trong bảo mật phần mềm: ngay khi một hệ thống cũ (một phiên bản client cũ, một API cũ, một dịch vụ không bao giờ được cập nhật) vẫn có thể viết vào một trạng thái chia sẻ, kiểm soát truy cập của hiện tại chỉ bảo vệ những gì đi qua hiện tại. Bất cứ thứ gì vẫn có thể nói chuyện với API cũ đều vượt qua bộ lọc mới hơn -- không phải vì bộ lọc bị hỏng, mà bởi vì nó chưa từng được áp dụng cho phiên bản trước đó.


Tài nguyên

3 điểm chính

  1. Bộ chọn áo choàng của phiên bản Bedrock cũ có lẽ hiển thị danh sách đầy đủ tất cả áo choàng trong game, không có bộ lọc entitlement.
  2. Lựa chọn sau đó được đồng bộ lên hồ sơ Xbox Live của bạn như bất kỳ áo choàng hợp lệ nào -- dịch vụ hồ sơ tin tưởng client.
  3. Kiểm tra entitlement, nếu có, xảy ra lúc chọn trong giao diện gần đây -- không phải lúc đọc những gì đã được lưu trên tài khoản.

วิธีรับผ้าคลุมใดๆ ใน Minecraft Bedrock

ลันเชอร์บุคคลที่สาม, เวอร์ชันเก่าของเกม, และตัวเลือกผ้าคลุมที่ไม่เคยเรียนรู้ที่จะปฏิเสธ คู่มือแบบเต็มพร้อมคำอธิบายที่อาจเป็นไปได้ว่าทำไมมันถึงทำงาน

วิธีรับผ้าคลุมใดๆ ใน Minecraft Bedrock

ใน Java มีวิธีวกวนมากมายที่จะได้ผ้าคลุมที่คุณไม่ควรมี (ดูบทความ cape-mod) ใน Bedrock เกมต่างออกไป การยืนยันตัวตนต่างออกไป แต่ก็ยังมีวิธี -- ไม่ต้องใช้ม็อด ไม่ต้องแตะแพ็กเก็ตเครือข่ายใดๆ แค่ลันเชอร์บุคคลที่สามกับเวอร์ชันเก่าพอของเกมที่ยังไม่มีการตรวจสอบอย่างที่คิด

นี่คือวิธีการทำ แล้วเราค่อยดูว่ามีอะไรเกิดขึ้นใต้ฝากระโปรง

สิ่งที่คุณต้องมี

  • บัญชี Microsoft ที่มี Minecraft Bedrock อยู่แล้ว (บัญชีของคุณใช้ได้เลย)
  • ติดตั้งลันเชอร์ Minecraft ทางการแล้ว
  • BedrockLauncher ลันเชอร์บุคคลที่สามแบบโอเพนซอร์สที่ให้คุณติดตั้งและรันเวอร์ชันประวัติศาสตร์ใดๆ ของ Bedrock
  • .NET 8.0 Desktop Runtime
  • เปิดโหมดนักพัฒนาบน Windows แล้ว

ขั้นตอนที่ 1 -- ติดตั้ง Bedrock อย่างน้อยหนึ่งครั้งด้วยลันเชอร์ทางการ

ก่อนจะทำอะไรอีก เปิดลันเชอร์ Minecraft ทางการ ไปที่แท็บ Minecraft: Bedrock Edition แล้วคลิก Install ต้องมีการติดตั้งและรัน Bedrock อย่างน้อยหนึ่งครั้งผ่านช่องทางทางการก่อนที่จะแตะ BedrockLauncher

ติดตั้ง Bedrock Edition จากลันเชอร์ทางการ

ขั้นตอนที่ 2 -- ดาวน์โหลด BedrockLauncher

ไปที่หน้า Releases บน GitHub ของโปรเจกต์ เอาซิปของเวอร์ชันล่าสุดที่อยู่ใน Assets

หน้า Releases บน GitHub ของ BedrockLauncher

ขั้นตอนที่ 3 -- แตกไฟล์เก็บ

หลังจากดาวน์โหลดซิปแล้ว แตกไฟล์ไปยังโฟลเดอร์ Downloads (หรือที่ไหนก็ได้ ขอแค่คุณหาโฟลเดอร์เจอทีหลัง)

แตกไฟล์ BedrockLauncher

ขั้นตอนที่ 4 -- รันไฟล์สั่งการ

เข้าไปในโฟลเดอร์ที่แตกไฟล์แล้ว รัน BedrockLauncher.exe

รัน BedrockLauncher.exe

ขั้นตอนที่ 5 -- ติดตั้ง .NET Desktop Runtime และเปิดโหมดนักพัฒนา

ตอนรันครั้งแรก Windows จะขอ .NET 8.0 Desktop Runtime อย่างแน่นอน -- ติดตั้งเลย คุณต้องเปิด โหมดนักพัฒนา ใน การตั้งค่า > ระบบ > สำหรับนักพัฒนา ด้วย เพราะ BedrockLauncher ติดตั้งเกมเป็นแพ็กเกจหลวม (ไฟล์ดิบ ไม่ใช่แพ็กเกจ Store จริงที่เซ็นชื่อ) และ Windows ปฏิเสธการติดตั้งแบบนี้หากไม่มีโหมดนั้น

ติดตั้ง .NET Runtime และเปิดโหมดนักพัฒนา

ขั้นตอนที่ 6 -- สร้างการติดตั้งใหม่

เปิด BedrockLauncher อีกครั้ง เข้าสู่ระบบด้วยบัญชี Microsoft ของคุณ ไปที่แท็บ Installations แล้วคลิก New installation

สร้างการติดตั้งใหม่ใน BedrockLauncher

ขั้นตอนที่ 7 -- เลือกเวอร์ชันเก่าๆ

ตั้งชื่อให้การติดตั้ง แล้วในรายการเวอร์ชัน เลือกเวอร์ชัน เก่า -- ปกติ 1.16.x หรือก่อนหน้านั้น คลิก Create

เลือกเวอร์ชันเก่า ที่นี่ 1.16.0.2

ขั้นตอนที่ 8 -- เปิดการติดตั้ง

คลิก Play การแตกไฟล์อาจใช้เวลาถึงสิบนาทีขึ้นอยู่กับเครื่อง -- ลันเชอร์จะดูค้าง ("ไม่ตอบสนอง") นี่ปกติ ปล่อยให้มันทำงาน

กำลังแตกไฟล์ ลันเชอร์ดูเหมือนไม่ตอบสนอง

ขั้นตอนที่ 9 -- เลือกผ้าคลุม

เมื่อเกมเริ่ม เข้าสู่ระบบด้วยบัญชีของคุณ สร้างตัวละครใหม่ แล้วไปที่ตัวแก้ไขสกิน แท็บ ผ้าคลุม ที่นั่นคุณจะเจอรายการทั้งหมดของผ้าคลุมทุกชิ้นที่มีในเกม -- รวมถึงของที่คุณไม่เคยมี (ผ้าคลุมอีเวนต์โปรโมชัน เทศกาลที่ผ่านมา Mob Vote ฯลฯ) เลือกอันที่คุณต้องการ

อย่าแตะส่วนที่เหลือของรูปลักษณ์สกินในขั้นตอนนี้ ให้เหลือแค่ผ้าคลุม

เลือกผ้าคลุมในตัวแก้ไขตัวละคร

ขั้นตอนที่ 10 -- ติดตั้งเวอร์ชันทางการใหม่

กลับไปที่ลันเชอร์ทางการ แท็บ การติดตั้ง แล้วคลิก ถอนการติดตั้ง บนการติดตั้ง Bedrock หลัก จากนั้นติดตั้งใหม่ (หรือกด ตรวจสอบอัปเดต) รัน Minecraft Bedrock ครั้งนี้จากลันเชอร์ทางการ

ถอนการติดตั้งและติดตั้งใหม่จากลันเชอร์ทางการ

แค่นี้แหละ -- ผ้าคลุมของคุณอยู่ที่นั่นแล้ว บนเวอร์ชันทางการ บนโปรไฟล์จริงของคุณ

สิ่งที่น่าจะเกิดขึ้น

ผมไม่ได้ขุดลงไปในโค้ดต้นฉบับแบบปิดของ Bedrock (ไม่เหมือน Java ที่ถอดรหัสย้อนกลับได้) ดังนั้นต่อไปนี้เป็นคำอธิบาย ที่น่าจะเป็นไปได้ ไม่ใช่ความแน่นอนสมบูรณ์ แต่พฤติกรรมที่สังเกตได้เข้ากับสมมติฐานต่อไปนี้ได้ดีทีเดียว

ตัวเลือกผ้าคลุมไม่เคยเป็นการควบคุมการเข้าถึง

ใน Bedrock หน้าจอเลือกผ้าคลุมน่าจะแสดง รายการทั้งหมดของผ้าคลุมทุกชิ้นที่มีในเกม ไม่ใช่แค่ที่บัญชีของคุณมี ในไคลเอนต์ใหม่ๆ ฟิลเตอร์แอปพลิเคชัน (ฝั่งไคลเอนต์หรือผ่านการเรียกเครือข่ายไปยังบริการเอนไตเติลเมนต์ Xbox/Microsoft) จะทำให้ผ้าคลุมที่คุณไม่มีเป็นสีเทาหรือซ่อนไว้

จุดสำคัญคือฟิลเตอร์นี้น่าจะถูกเพิ่มเข้ามา ภายหลัง ในเวอร์ชันเกมที่ใหม่พอสมควร เวอร์ชันอย่าง 1.16.x อยู่ก่อนฟิลเตอร์นี้ หรือใช้กลไกการตรวจสอบที่แตกต่าง (หรือไม่มีเลย): ทุกอย่างในรายการสามารถเลือกได้ ไม่ว่าจะมีเอนไตเติลเมนต์หรือไม่

ผ้าคลุมถูกเก็บไว้ที่ไหนกันแน่?

นี่คือส่วนที่อธิบายว่าทำไมมันถึงรอดจากการติดตั้งใหม่ การเลือกสกิน/ผ้าคลุมใน Bedrock ไม่ใช่แค่ไฟล์ท้องถิ่นที่ใช้แล้วทิ้ง -- มันน่าจะซิงค์กับโปรไฟล์ Xbox Live ที่เชื่อมกับบัญชี Microsoft ของคุณ (ระบบเดียวกับที่จัดการสกินของคุณบนแพลตฟอร์ม Bedrock อื่นๆ -- มือถือ คอนโซล ฯลฯ) เมื่อคุณเลือกผ้าคลุมในไคลเอนต์เก่า มันน่าจะส่งการเลือกนั้นไปยังบริการโปรไฟล์ อย่างเดียวกับที่ไคลเอนต์ล่าสุดจะทำกับผ้าคลุมที่ถูกต้อง -- เพราะจากมุมมองของไคลเอนต์ ไม่มีความแตกต่างระหว่างผ้าคลุม "ที่คุณมี" กับผ้าคลุม "ที่เลือก" บริการโปรไฟล์ในส่วนของมัน เชื่อใจไคลเอนต์ในจุดนี้: มันบันทึกการเลือกโดยไม่ตรวจสอบซ้ำว่ามีเอนไตเติลเมนต์อยู่จริงเบื้องหลังหรือไม่ อย่างน้อยก็ไม่ใช่ในขณะที่เขียน

ผลลัพธ์: เมื่อคุณรันเกมทางการล่าสุดอีกครั้ง มันจะดึงสกิน/ผ้าคลุมปัจจุบันของคุณจากบริการโปรไฟล์ -- และบริการก็คืนสิ่งที่ถูกบันทึกไว้อย่างซื่อตรง รวมถึงผ้าคลุมที่ไม่ถูกต้องด้วย การตรวจสอบเอนไตเติลเมนต์ถ้ามี ก็น่าจะเกิดตอน เลือก ใน UI ใหม่ (จึงมีฟิลเตอร์ในไคลเอนต์ล่าสุด) ไม่ใช่ตอน แสดงผล ของสิ่งที่ถูกบันทึกไว้ในโปรไฟล์แล้ว

ความคล้ายคลึงกับ Java

มันคือตระกูลข้อบกพร่องทางตรรกะเดียวกันกับ cape-mod ใน Java: บริการเชื่อใจข้อมูลโดยไม่ตรวจสอบที่มาของมันซ้ำในทุกขั้นตอน ใน Java มันคือลายเซ็น RSA ที่ถูกต้องที่ถูกเล่นซ้ำบนโปรไฟล์ที่ผิด ใน Bedrock มันน่าจะเป็นการเลือกผ้าคลุมที่ถูกยอมรับโดยไคลเอนต์เก่าที่ไม่เคยมีฟิลเตอร์ที่ถูกต้อง แล้วถูกเผยแพร่โดยไม่ตรวจสอบซ้ำไปยังสถานะถาวรของบัญชี ในทั้งสองกรณี ปัญหาไม่ได้อยู่ที่จุดเข้า (ม็อด Java, ไคลเอนต์ Bedrock เก่า) -- แต่อยู่ที่ว่าชั้นที่ควรจะตรวจสอบเอนไตเติลเมนต์ซ้ำในขั้นตอนถัดไปไม่ได้ทำ หรือทำแค่ครั้งเดียว ในที่ที่ผิด

ทำไมมันยังทำงานได้

คำอธิบายที่เป็นไปได้สองข้อ ไม่ได้แยกจากกัน:

  1. Mojang คงไม่ถือว่านี่เป็นเรื่องสำคัญ มันต้องใช้ลันเชอร์บุคคลที่สาม กระบวนการหลายขั้นตอน และผลลัพธ์เป็นเรื่องความสวยงามล้วนๆ -- ไม่มีความได้เปรียบในการเล่น ไม่มีข้อมูลของผู้อื่นถูกบุกรุก
  2. การแพตช์สิ่งนี้ให้ถูกต้องจะต้องตรวจสอบเอนไตเติลเมนต์ซ้ำทุกครั้งที่อ่านโปรไฟล์ ไม่ใช่แค่ตอนเลือก -- ซึ่งหมายถึงการเรียกเครือข่ายเพิ่มทุกครั้งที่แสดงสกิน สำหรับปัญหาที่เกี่ยวกับความสวยงามเท่านั้น

บทสรุป

คู่มือนี้ใช้แค่สิบภาพหน้าจอ แต่มันแสดงให้เห็นหลักการที่พบได้ทุกที่ในความปลอดภัยซอฟต์แวร์: ทันทีที่ระบบเก่า (เวอร์ชันไคลเอนต์เก่า, API เก่า, บริการที่ไม่เคยอัปเดต) ยังสามารถเขียนลงในสถานะที่ใช้ร่วมกันได้ การควบคุมการเข้าถึงในปัจจุบันจะปกป้องเฉพาะสิ่งที่ผ่านปัจจุบันเท่านั้น อะไรก็ตามที่ยังพูดกับ API เก่าได้จะข้ามฟิลเตอร์ที่ใหม่กว่า -- ไม่ใช่เพราะฟิลเตอร์พัง แต่เพราะมันไม่เคยถูกใช้กับเวอร์ชันก่อนหน้ามัน


แหล่งข้อมูล

3 ประเด็นสำคัญ

  1. ตัวเลือกผ้าคลุมใน Bedrock เวอร์ชันเก่าน่าจะแสดงรายการทั้งหมดของผ้าคลุมในเกม โดยไม่มีฟิลเตอร์เอนไตเติลเมนต์
  2. การเลือกจะซิงค์ไปยังโปรไฟล์ Xbox Live ของคุณเหมือนผ้าคลุมที่ถูกต้อง -- บริการโปรไฟล์เชื่อใจไคลเอนต์
  3. การตรวจสอบเอนไตเติลเมนต์ หากมี จะเกิดตอนเลือกใน UI ล่าสุด -- ไม่ใช่ตอนอ่านสิ่งที่บันทึกไว้แล้วในบัญชี

Related Articles