[Hack] FindBytesでコード移植

Hack

FindBytes

Build software better, together
GitHub is where people build software. More than 50 million people use GitHub to discover, fork, and contribute to over 100 million projects.

AmazingChz氏が作成したコード移植用のプログラムのこと。

nuru氏(@agar_nuru)によると結構簡単にコード移植ができるらしい。

必要なもの

  • FindBytes GUI
  • 移植元のmain.nso
  • 移植先のmain.nso
  • nx2elf

nx2elf

main.nsoをmain.elfに変換してくれるツール。

Releases · tkgstrator/nx2elf
The tool to convert NSO to ELF. Contribute to tkgstrator/nx2elf development by creating an account on GitHub.

実は要らなかったりするんだが、あったほうが便利だと思うので一応。

nx2elfは64bitでしか動かないので、32bitデバイスを使っている人はfindBytes-GUIをダウンロードしたときに同梱されているdecompressNSO.batにNSOファイルをドラッグアンドドロップしよう。

すると “元ファイル名.uncompressed” というELFファイルが作成されるはずだ。

FindBytes

起動すると絶対でてくる

「findBytes.pyがないからダウンロードしますか」ときいてくるのでOKを押そう。

ファイルは .resources/tools/findBytes/findBytes.py に配置すれば良いはずなのだが、これはもうどうやっても読み込み失敗する。

恐らくpyinstallerでexe形式にすると ” os.path()” が効かなくなることに気付いていないんだと思う。

これはまあ修正して(sys.argv[0]とすれば解決する)プルリクしてもいいんだけどまあそこまで重大なエラーでもないので放置でいいかなと。気が向いたら報告しておきます。

起動したら元気よくStartをクリックします。

最初に “移植元” のELFファイルを指定します。

選択したらNextをクリック。

次に “移植先” のELFファイルを指定します。

やることは同じなので割愛。

最後に移植したいコードを書きます。

今回は4.8.0から4.9.0への移植で実験したいと思います。

あんまりバージョンが離れたファイルで移植しようとすると結構失敗します。

移植したいコードの入力画面

今回はネットに繋がっていない状態でもショップに入れるコードを移植しましょう。

// Offline Shop [Zewia] (4.8.0)
@enabled
014D34E8 200080D2

必要なのはアドレス部だけですので、そこだけをコピーしてfindBytesに入力します。

あとはNextをクリックして待つばかり。

ご案内

簡単に訳すと「移植にかかる時間はお前が入力したアドレスの数で決まるんや。移植中はフリーズしたように見えるかもしれんけど安心しいや、正常な動作やねん」っていうことです。

移植成功!!

表示されているConfidence levelっていうのはまあぶっちゃけると信頼度です。

自動で移植しているのでプログラムがミスする可能性もあるのでこうやって信頼性を表示しているわけです円。

確かMAXで30のはずなのですが、15くらいあればだいたい合ってます。

あとは4.8.0のコードのアドレス部を表示されているオフセットで上書きして終了です。

// Offline Shop [Zewia] (4.9.0)
@enabled
014F6D2C 200080D2

まとめ

いろいろ公開されているコードのうち半分くらいはこのfindBytesを使えば移植できてしまいます。

なので、これで移植できるコードにはまあそれほど価値がないわけですね。

ところがコードの種類によってはプログラムが移植先を見つけられなくてエラーを出してしまいます。

そういうコードこそ、対価を払ってでも誰かに移植してもらう必要があるかもしれませんね。

ちなみにSLP-JPのdeveloper権限があれば他のdeveloperが投稿したコードが見放題です。

投稿されているコードの一部

バージョンごとにいろいろありますが、最新のバージョンと3.1.0のコードが賑わってる感じですね。

ちなみにHack目的でサーバに参加された場合は必ずINFORMATIONから規約に目を通して下さい。

Discord - A New Way to Chat with Friends & Communities
Discord is the easiest way to communicate over voice, video, and text. Chat, hang out, and stay close with your friends and communities.

記事は以上。

コメント

  1. 匿名 より:

    すみません。
    nsoってなんですかね

    • me より:

      switchbrewで詳しく解説されているのでどうぞ!

      https://switchbrew.org/wiki/NSO

    • 匿名 より:

      main.elfにする、nx2elfにD&Dしたところ、elfにならず、何も起こらずに終了してしまいました。
      decompressNSO.batにD&Dしても、何も起こらずに終了してしまいました。
      なぜでしょうか。原因がわかりません。

    • えむいー より:

      nx2elfは64bitOSにしか対応していないのですが、そこは確認済みでしょうか?

  2. 匿名 より:

    developer権限ってどうすればもらえますか?
    まだ仮アカウントですが、ちゃんとしたアカウントを作ったほうがいいのでしょうか?

    • me より:

      SLP-JPの#agreementは読まれましたか?

      電話番号認証されていないと書き込みができないので、ちゃんとしたアカウントの方が良いと思います。

  3. 匿名 より:

    4.9.0用のpatchコードをいくつか持っているのですが、
    このツールを使って移植しようと思ったら、古いほうのバージョンデータを誤って消してしまったようです。
    もし可能であれば、4.9.0のExeESだけでもアップロードしてほしい~なんて事はできませんかね?

    • me より:

      ExeFSを第三者と共有する行為は任天堂の著作物を無断でアップロードすることになるので、申し訳ないのですがご期待に沿うことはできません。

  4. みかん より:

    OLD Offsets(The Ones You Gave)
    のところは表示されるが、
    NEW Ported Offsets
    にコードが表示されない。

タイトルとURLをコピーしました