[Hack] FindBytesでコード移植

FindBytes

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

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

必要なもの

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

nx2elf

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

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

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から規約に目を通して下さい。

記事は以上。