Switch

[Switch] SXOS v2.0.1 & 2.1BETA リリース!チートが目玉!

リリース情報

v2.0.1&2.1BETA リリース情報
SXOS v2.0.1  (DL)
SXOS v2.1BETA  (DL)

■現在の最新版---------
SXOS 2.8 BETA(DL)
リリース情報
2019.06.20
-------------------------

更新情報

更新情報

- SX OS 2.0.1の新機能

  • 安定性の向上
  • OTAアップデータを介して利用可能なオプションのベータ版アップデートの紹介

- SX OS v2.1 BETAの新機能

SX OS v2.1ベータ版は、当社の新しいチートエンジンとチートファインダーを導入しました。
多くの人々がゲームの不正行為やゲームのための詐欺を助ける方法を要求していたので、
しばらくの間、優先順位が高くなっています。私たちはSX OSにゲームチートを追加した
最初のバージョンについてのご意見をお聞きしたいと思います。

現時点では、まだゲームチートのライブラリはまだ用意されていませんが、
コミュニティで公開する予定のクールなものが登場することを願っています。
チートを見つけ、スイッチゲームの(信頼できる)チートコードを作ることは
面倒な作業になる可能性があり、特定の側面では、
古典的なゲームボーイゲームのようなチートを見つけるよりも少し複雑です!

その理由から、私たちはチートコードのフォーマット、説明が必要な警告、
そしてあなたをスピードアップするための小さなヒントを詳述している、
有望なチートハッカーのための小さなリファレンスガイド[ここ]を書いています。

- 締めの言葉

当社のWebサイトから最新のバージョンをダウンロードするか、
SX OS自体のオンラインアップデータを使用して、
SX OSをv2.0.1にアップデートしてください。
あなたが冒険好きなら、v2.1ベータ版を入手してください。
これは、SX OSのオンラインアップデータでも利用できます。

公開されたリファレンスガイド

リファレンスガイド

SX OSチートハッカーガイド
============

はじめに

この小さなガイドは、あなた自身のチートコードを見つける上でいくつかの光を当てようとしています
スイッチゲームSX OSチートファインダーを使用して詳細を詳述
SX OSカンニングコードフォーマットについて
 

アドレス空間レイアウトのランダム化

任天堂のスイッチオペレーティングシステム(Horizo​​n OS)は、アドレス空間 
レイアウトのランダム化(ここではASLRから)すべてのプロセスに適用されます。これが意味すること
例えば、ゲームの実行可能ファイルまたは
ゲームのヒープメモリは石で固定されていません。SX OSはこのASLRを無効にしません*
効果的にコンソールの安全性を損なうことになります。これの欠点は
チートハンターとしてのあなたは、このことを覚えておく必要があります。 
これらの詳細を高水準でカプセル化/非表示にすることを最善に試みました。

SX OSのチートエンジンでポインタを操作するとき、3つの異なる
ポインタのタイプ:
    * MAIN  - ゲームのNSO実行ファイルに関連するメモリアドレス/ポインタ
    * HEAP  - ゲームのヒープの開始位置に対するメモリアドレス/ポインタ
    * BASE  -  MAIN / HEAPの一部ではないメモリアドレス/ポインタ、
             アドレス空間ベース(通常は0x8000000)に相対的に表示されます。

SX OSのチートファインダーでは、すべてのメモリアドレスが次のように表示されます。
    [MAIN + xxxx]、[HEAP + xxxx]、[BASE + xxxx]

実際のチートコードを書くときは、あなたがどのような住所を指定する必要があります
読み書きは、MAINメモリとHEAPメモリの両方から読み込み/書き込みをサポートします。

魔法のHEAPアドレスに書き込むチートコードを持つことの大半は
HEAPのレイアウトは非常に安定しているため、信頼できるチートコードではありません。
必ずしも完全に決定論的ではなく、しばしば誰かがどのようにナビゲートするかに依存する 
ゲームを通じて。このような場合は、ゲームのロジックをもっと調べて見つけてください
ポインタ(またはポインターへのポインターなど)を
MAIN(たとえば、BSSまたはROのポインタ)にあります。このガイドの最後に
あなたが含まれているコードがどのようにして 
"メガマンレガシーコレクション"の仕事。

3. SX OSカンニングコードフォーマット

SX OSのチートコードは、アクションリプレイのような古いチートエンジンに大いにインスパイアされています。
古いアクションリプレイチートコードは通常コードごとに固定幅を持っていましたが、いくつかのコード
SX OSのチートエンジンのタイプは異なる長さを持つことができます。 

チートコードは、microSDカードのsxosフォルダ内に配置されます。順番に
SX OSがあなたのチートコードを拾うためには、彼らは正しく配置する必要があります
右のサブフォルダ。このサブフォルダ形式は次のように動作します。
    /sxos/titles/<titleID>/cheats/<buildID>.txt

titleIDはゲームのタイトルIDで、buildIDは最初の8バイトです。
ゲームのビルドIDはアスキー16進法でフォーマットされています。titleIDとbuildIDの両方
あなたがチートにナビゲートすると、実行中のゲームがSXOSロゴの下に表示されます
SX OSメニューのタブをクリックします。ビルドIDは適切に処理するために必要です
同じゲームのバージョンで、チートコードの互換性につながる可能性があります。
SX OSがあなたが現在実行中のゲームのためにあなたのSDカードのチートを検出したとき
しかし、buildIDの不一致は、それはあなたのチートを他の
現在実行しているバージョンのbuildIDに変更します。 
特定のチートコードの互換性を試してみる(または修正する)。

基本的なチートコードの定義は次のようになります:

[無限の健康]
11111111 22222222
11111111 22222222
11111111 22222222

ここで、「Infinite Health」はコードの表示名で、
'11111111 22222222'はこのチートに属するすべてのコードです。

チートエンジンは、最大16個のスクラッチレジスタをサポートしています。
隠しオフセットや記憶場所のような任意の目的。

特別な種類のコードが1つあります。定義されていない「マスタコード」
名前を '['と ']'で囲みますが、代わりに '{'と '}'を使用します。マスターコード
無効にすることはできず、他の(有効になっている)チートコードの前に実行されます。これら
特定の特性を共有する複数のチートの重複を避けるために存在します。
マスターコードの使用例は、 
「メガマンレガシーコレクション」のヒントは、このガイドで詳しく解説しています。

以下は、SXで現在実装されているさまざまなコードタイプの概要です
OSのチートエンジン。

  #コードタイプ0:メモリに書き込む

  0TMR00AA AAAAAAAA YYYYYYYY(YYYYYYYY)

  T =書き込み幅(1/2/4/8)
  M =メモリタイプ(0 =メインnso、1 =ヒープ)
  R =オフセットとして追加されるレジスタ
  A =(M)に対するアドレス、

  コードタイプ0では、メモリに書き込むことができます。

  #コードタイプ1:条件文

  1TMC00AA AAAAAAAA YYYYYYYY(YYYYYYYY)

  T =比較値の幅(1/2/4/8)
  M =メモリタイプ(0 =メインnso、1 =ヒープ)
  C =比較に使用する条件
  A =(M)に対する相対アドレス
  Y =比較する値

  #コードタイプ2:条件文の終了

  20000000

  このコードタイプは条件ブロック(コードタイプ3または8)を終了し、

  #コードタイプ3:ループ

  300R0000 VVVVVVVV

  R =ループカウンタに使用するレジスタ
  V =ループ数

  310R0000 

  このコードタイプはループの最後に使用され、同じR値を使用します
  ループの開始点。

  #コードタイプ4:レジスタに値をロードする

  400R0000 VVVVVVVV VVVVVVVV

  このコードタイプは、レジスタの1つを特定の値でロードします

  R =記入する登録
  V =レジスタに入れる値

  #コードタイプ5:レジスタをメモリからロードする

  5TMRI0AA AAAAAAAA

  T =メモリからロードされる値の幅(1/2/4/8)
  M =メモリタイプ(0 =メインnso、1 =ヒープ)
  R =レジスタインデックスからのロード
  I =レジスタ・フラグからのロード、アドレスAの代わりにレジスタRからロードするために1に設定
  A =(M)に対する相対アドレス

  #コードタイプ6:レジスタからのメモリアドレスへの値の格納

  6T0RIor0VVVVVVVVVVVVVVVV

  T =メモリに格納される値の幅
  R =メモリアドレスを含むレジスタインデックス
  I =インクリメントレジスタフラグを1にセットして、格納後Tでレジスタをインクリメントする
  o =レジスタ 'r'から追加のオフセットを追加する 
  r =オフセットレジスタインデックス
  V =メモリに格納される値

  #コードタイプ7:レジスタに算術演算を適用する

  7T0RC000 VVVVVVVV

  T =値の幅(1/2/4/8)
  R =算術演算を適用するためのレジスタインデックス
  C =適用する算術演算:
      0 =加算、1 =減算、2 =乗算、3 =左シフト、4 =右シフト
  V =算術演算中に使用される値

  #コードタイプ8:ボタンが押されていることを確認する

  8kkkkkkkk

  k =照合するキーパッド値。さまざまなキーの16進値は次のとおりです。

    0000001  -  A
    0000002  -  B
    0000004  -  X
    0000008  -  Y
    0000010  - 左スティックが押された
    0000020  - 右スティック押された
    0000040  -  L
    0000080  -  R
    0000100  -  ZL
    0000200  -  ZR
    0000400  - プラス
    0000800  - マイナス
    0001000  - 左
    0002000  - アップ
    0004000  - 右
    0008000  - ダウン
    0010000  - 左スティック左
    0020000  - 左スティックアップ
    0040000  - 左スティック右
    0080000  - 左スティックダウン
    0100000  - 右スティック左
    0200000  - 右スティックアップ
    0400000  - 右スティック右
    0800000  - 右スティックダウン
    1000000  -  SL
    2000000  -  SR

  複数のボタン値をORで結合することができます。例えば
  A + Bは0000003となり、A + B + X + Yは000000fとなる。

  このコード・タイプは、条件付きコード・タイプ1と同じように動作します。

SX OSでのチートファインダーの使用

SX OSの検索に役立つチートサーチャー機能が付属しています
あなた自身のチートコードを書くために必要な記憶場所。あなたが始まる
ゲームを開始することによって、あなたが開始したいゲームのポイントに達すると
ホームボタンを押したチートを探して、アルバムビューア(SX OSメニュー)に移動します。

あなたはチートサーチのチートタブで "チートサーチャー"にナビゲートしてチートサーチを開始することができます
SX OSメニュー。開始したい値の種類を選択するよう求められます
詐欺のための検索。あなたが答えを知らないなら、あなたはそれを近似しようとすることができます。まあ言ってみれば
ゲーム内のコインのメモリ位置を狩りたいと思っています
あなたは1000種類以上のコインを累積することができます。
探しているのは8ビットよりも大きくなるだろう。これにはいくつかの実験が必要です
慣れ親しんでいる専門知識。 

データタイプを選択すると、実行中のゲームのメモリダンプが作成されます 
あなたのmicroSDカードに。この最初のメモリダンプはしばらく時間がかかりますが、それはアドバイスされています
十分な空き容量のある高速microSDカードを使用する。あなたが
特定の/正確な値を入力すると、「次の検索」を選択して「正確な値」を選択できます。
ここでは、探している正確な値を16進数で入力できます。一度
比較が行われると、見つかった候補メモリの候補の数が表示されます
それらが手作業で探索するのに十分な数であるかどうか。

残っている候補が多すぎる場合は、単にSX OS Romメニューを終了して
ゲームに戻ります。いくつかの硬貨(またはあなたがしようとしているアイテム
チート)、SX OSメニューのチートタブに戻り、「次の検索」を選択し、 
条件を指定します。あなたが値を知っているなら、これは再び "正確な値"になります
あなたが探しているもの、あるいは単純に「より小さい」ものがあります。 
希望のアイテム/統計。チートサーチャーが指示するまで検索を繰り返してください
あなたが出発するために残っている候補メモリの場所が十分に残っていない 
手動で探索する。

手動でメモリの場所の候補を調べるには、「候補を表示する」 
チートメニューで。リストから候補者を選択すると、あなたが持ち込まれます
これらのメモリ位置の値を変更できる組み込みヘキサエディタに移動します。
値を変更したら、ゲームに戻り、変更があったかどうかを確認することができます
あなたが正しい記憶を見つけたかどうかを判断するのに役立つ任意の/望ましい効果 
ロケーション。

ロックマン:クラシックコレクションの例]チートコード。

現在、チートコードの作業例は1つだけです。私たちは大好きです
より多くのチートを見つけるためにすべての時間を費やすことができますが、我々は異なる優先順位を持っています。;-)

私たちが見つけた詐欺は、いろいろなコードの少し興味深い例です
SX OSのチートエンジンが現在提供しているタイプです。 

ロックマン:クラシックコレクションは元々メガマンの古いゲームのコレクションです 
その日にNESのために解放された。これらのゲームのスイッチ「ポート」は実際には
変装のNESエミュレータ ロックマンのチートコードの肉は、
そこから仮想NESのメモリ開始アドレスを見つける "マスタコード"
私たちが望むように、任意のRAMパッチをNESメモリに適用することができます。方法を見てみましょう
これは機能します。

フルマスターコードは次のようになります。

-  8 <------------------------
{マスターコード}
580f0000 00d3a2a0
580f1000 038cb840
580f1000 00000008
780f0000 0000000f
-  8 <------------------------

'{'と '}'の使用は、これがマスターコードであることを示します。そのコード
無効にすることはできませんし、常にチートコードリストの開始時に実行されます。

マスターコードを1行ずつ細かく分解できます:
580f0000 00d3a2a0

コードタイプ5は 'レジスタにメモリからの値をロード'です。ここでは8バイト(64ビット)
値は、MAIN(0)からレジスタ 'f'(15)への相対値です。開始からのオフセット
MAINは0xd3a2a0です。 

擬似コードでは、これは次のようになります。 

  register_f = read64(MAIN + 0xd3a2a0)

次の行が表示されます。
580f1000 038cb840                                                               

これは最初のコードに非常に似ていますが、そこに '1'がどのようにあるのかを確認してください。
上記のSX OSコードフォーマットの説明でこれを見ると、これを見ることができます
'Load from register flag'です。'1'に設定されている場合は、
メモリ位置ではなくレジスタインデックスフィールドに指定されたレジスタ
MAINまたはHEAPからの相対値。疑似コードの場合、これは次のようになります。

  register_f = read64(register_f + 0x38cb840)

次の行「580f1000 00000008」は同じですが、今回は
オフセット8からの次のポインタ、または擬似コード:

  register_f = read64(register_f + 0x8)

そして最終的に私たちは '780f0000 0000000f'で終わります。これはコードタイプ7を使用して行います
いくつかの基本的な算術演算をレジスタfのメモリ位置に適用します。擬似コードでは、
だろう:

  register_f = register_f + 15

つまり、本質的にすべての「マスターコード」は、一連のポインタと
最終的には、仮想レジスタの先頭を保持するポインタFでポインタになります
NESの記憶。このレジスタの値は、必要なチートコードで使用できます。
ロックマンをエキサイティングにするために仮想NESのメモリからの書き込み/読み出し
超力!;-)

ロックマン1のゲーム特有のチートコードの1つを簡単に見てみましょう:

[MM1無限健康]
400e0000 00000000 0000006a
610f01e0 00000000 0000001c

最初の行「400e0000 00000000 0000006a」はコードタイプ#4を使用して 
特定の値で登録してください。この場合、レジスタEに値0x6aをロードします。
0x6aはロックマンの健康のためのRAMオフセットです。

次の '610f01e0 00000000 0000001c'行はコードタイプ#6を使用しています。
この位置に書き込むためには、 "レジスタからメモリアドレスへの値をストアする"である。

ここでは、1バイト(8ビット)の値をアドレス:register_f + register_eに書き込みます。
書き込まれる値は0x1cで、メガマンの健康状態の最大値は 
ロックマン1

-Switch