大人の自由研究

大人の自由研究 ホーム » 

お知らせ

2016.12.05 ちょっとデザインを変更してみました

相互リンク

3DS 11.4 で 時オカハックが出来るかためしてガッテン


1.oot3dhax_installer の導入


 oot3dhax_installer の存在を最近知った。
 時オカハックを利用する場合、今までoot3dhax_rawsaveimages_haxpayloads_01-08-17のデータを oot3hax_make で編集後、サイバーガジェットの セーブエディター2を使いセーブデータをリストアしていた。
 この、oot3dhax_installer というツールを使うと、カートリッジに直接データを書く事が出来るようで、セーブエディターが必要ないみたい。
 注)oot3dhax_installer はHBLが動かないとダメなので、ノーマル3DSだけの場合は使えない手法。別途HBL起動できる3DS必要。

 ソースを持ってきまして
$ git clone https://github.com/phase/oot3dhax_installer.git

 直ぐにビルド
$ cd oot3dhax_installer
$ make

 当然の如くエラーがダーって出てきますねw
error: incompatible type for argument 2 of 'httpcOpenContext'
 確かに今の libctru にある httpcOpenContext とパラメータが違う(汗)
 libctru-1.2.0 くらいから変わっているみたい。

 古めの libctru-0.6.0 だと、別のエラーが(汗)
 結局、libctru-1.1.0 で、ビルドが出来た。

 ただ、今の3DS環境からHBL起動して、oot3dhax_installer を起動すると
 Rosalinaさんが
 「この自家製エクスプロイトは、ターゲットタイトルの下でアプリを起動することができません。別のエクスプロイトを使用してください。」
 と申して、実行させてくれませんw
 とりあえず、oot3dhax_installer.xml を削除するか、xmlに記載ある
<targets selectable="true"></targets>
の true を false に変えれば、起動する事が出来た。

 (そう言えば、虚無空間さんのとこでもコメントあったなぁー、JKSMが動かないって、ダウンロードしてみたら、同じく、JKSM.xml があって内容も一緒)

 やはり、Rosalinaさんの言うことを聞くべきなんでしょうかねぇ。oot3dhax_installer がうまく動かなかった。。。

 

2.oot3dhax_installer の大まかな動き


 ざっくりとした動きは
 ・選択されたファームバージョンのpayloadを、ネット経由で取得する。
  アクセスURLは、 http://smea.mtheall.com/get_payload.php?version=NEW-10-1-0-0-USA な感じ
  すると、N3DS_U_21504_usa_9221.bin がダウンロード出来る。

 ・予め用意してあるセーブデータを 読み込み(各リージョン毎:save0x.bin.eur | save0x.bin.jpn | save0x.bin.usa

 ・指定されたゲームスロットへ書き込む( /save00.bin | /save01.bin | /save02.bin

 ・そして、先にダウンロードした、payload(N3DS_U_21504_usa_9221.bin)を /payload.bin として保存する

 ・終了です。


 なるほどぉ。

 って事は、SaveDataFiler とかで、同じ事を手動でも出来るかw

 

3.手動でやってみた


 せっかくなので、yellows8さんのoot3dhax を使いセーブデータを作ってみようかと。
 こちらのコマンドでセーブデータが作られる
make EXECHAX={value} FWVER={value}

 いくつかファイルが作成されるが、oot3dhax_jpn.binsave01.binなどリネームして使う。

 payload はこちらお馴染みのサイトから、ダウンロード。

 今回は、New/Oldの 11.4環境 を試したいので、New3DS 11.4 と、Old3DS 11.2 をチョイス。Old3DSは11.4のpayloadが無く、11.2で動くとか。。。

 SaveDataFiler を使い、時オカのカートリッジに、/save01.bin/payload.bin をリストアして何パターンか試す。

 

4.結果


 最終的にHBLが起動したのは、New3DS だけでした。
 やり方が悪いのか、Old3DS の方は、11.2 のPayloadを使ってもダメでした(泣)

 私が使った /save01.bin/payload.binこちらに準備しておきました。
 あくまでも、私のNew3DS 11.4.0-37J の環境で動作したもので、他で100%動く保障はありませんので。もし、ためしてガッテンしようって人が居たら、そのつもりで。



スポンサーサイト

3DS GodMode9 をビルドする自由研究(再び)


 ビルドに絡んで、最近、MSYS2を導入してみた。
 ※MSYS2とはこちらを参考に。

 コマンドライン最高(笑)


 前にビルドしてみた、GodMode9 を MSYS2 環境で、ちゃんとビルドしてみようって思ったんね。

 今更ながら git も使ってみた(汗)

 MSYS上から
$ pacman -S git
 でインストール。
 バージョンは。。。
$ git --version
git version 2.13.0


 早速使います。
$ git clone https://github.com/d0k3/GodMode9.git


 こんなメッセージが表示されまして
Cloning into 'GodMode9'...
remote: Counting objects: 3896, done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 3896 (delta 131), reused 151 (delta 82), pack-reused 3658
Receiving objects: 100% (3896/3896), 1.61 MiB | 1.51 MiB/s, done.
Resolving deltas: 100% (2943/2943), done.
 ソース一式がダウンロードされました


 とりあえず、この状態でビルドしてみると
$ cd GodMode9
$ make

$ ls -al output/
合計 1536
drwxr-xr-x 1 saru None 0 2017-06-16 21:48 ./
drwxr-xr-x 1 saru None 0 2017-06-16 21:43 ../
-rw-r--r-- 1 saru None 286044 2017-06-16 21:48 GodMode9.bin
-rw-r--r-- 1 saru None 994508 2017-06-16 21:48 GodMode9.elf
-rw-r--r-- 1 saru None 286720 2017-06-16 21:48 GodMode9.firm
と、なんかできてるw

 ただ、CakeHax/CakesROP/ のディレクトリには何もない。このソース達が無くっても良いのか?(汗)

 どうやら、以下のコマンドを叩く必要がありそうだ。
$ make submodules
 これを呼んでるだけですが
$ git submodule update --init --recursive

 で、以下のmakeオプションで、
$ make gatewayLauncher.datが作成

$ make cakehaxGodMode9.datが作成

$ make brahmaGodMode9.3dsxGodMode9.smdhが作成されるようだ。

 なるほど。

 あと、7z コマンドが見つかりませんと言われたので、
 予め、http://www.7-zip.org/download.html よりダウンロードしてインストールしておき、パスが通ってるディレクトにシンボリックリンクを貼っておいた
$ ln -s /c/WinApp/7-Zip/7z.exe /usr/local/bin/7z


 firmtool は /c/Python27/Scripts にパスを通した。


 あ、出来上がった GodMode9.firm はちゃんと動いた

 めでたしめでたし
 

libjpeg-turbo のビルド


 libjpegturbo のビルドがなかなかうまく出来なかった。
 いつもも通り、3ds_portlibs 配下で
 make libjpeg-turbo
 と実行してみたのだが。。。
libtool:   error: object name conflicts in archive: 
.libs/libjpeg.lax/libsimd.a/
/c/project/work/3ds_portlibs/libjpeg-turbo-1.5.1/simd/.libs/libsimd.a
 とエラーが吐かれて終了。

 環境が悪いのかと、色々と試した結果、辿り着いたのが。。。

 --without-simd オプションを指定

 3ds_portlibs の Makefile を修正


$(LIBJPEGTURBO): $(LIBJPEGTURBO_SRC)
@[ -d $(LIBJPEGTURBO_VERSION) ] || tar -xzf $<
@cd $(LIBJPEGTURBO_VERSION) && \
./configure --prefix=$(PORTLIBS_PATH)/armv6k --host=arm-none-eabi --disable-shared --enable-static --without-simd
@$(MAKE) -C $(LIBJPEGTURBO_VERSION)

 そして分かった事は、makeは奥が深い
 cmake やらも楽しそう(笑)

 で、ntrboothax はどうなった!?



3DS ntrboothax が気になりすぎるー



 今、一番気になる磁石!
 

 https://3ds.guide/installing-boot9strap-(ntrboothax)
 めっちゃ気になるんですけど

 とりあえず、flashcart を持ってない。
 DS用のなら何枚かあるのだけどー、3DSでは使えないヤツ。。。

 あまりにも気になったから、昨日は秋葉原を散策してみた
 数年前では、マジコンがいろんなお店で売っていたんだが、今は売ってない。。。売っていないのか、こっそりと売っているのか(汗)

 ネットで買うしか無いのかなぁ
 公開されたら、カードの値段上がるだろうか。。。
 (磁石も)

 brickしている3DSは持ち合わせていないが、11.4の何もしていない3DSはあるので、自由研究は出来そうw

 とりあえず、安さで重視って事で、R4I GOLD 3DS を買おうかな(笑)

3DS GodMode9 をビルドする自由研究


 A full access file browser for the 3DS console です。
 GodMode9 は、SDはもちろん SysNAND などにもアクセス出来る、ツールである。

 これを自らビルドしようって研究です。
 その裏には、.firm 形式の プログラムってどうやって作るのか?という疑問が。

 まずは、Makefileを見る


firm: binary
@firmtool build $(OUTPUT).firm -n 0x23F00000 -e 0 -D $(OUTPUT).elf -A 0x23F00000 -C NDMA -i


 firmtool というツールが必要なのねぇ

 何かをやろうとする為には、何かをやらなければ、ならない(汗)
 ビルドあるある

 とりあえず、Python は導入済みなので、少しは手間が省けたか。

 試してガッテン
 python setup.py install


running install
running bdist_egg
running egg_info
creating firmtool.egg-info
writing firmtool.egg-info\PKG-INFO
writing top-level names to firmtool.egg-info\top_level.txt
writing dependency_links to firmtool.egg-info\dependency_links.txt
writing entry points to firmtool.egg-info\entry_points.txt
writing manifest file 'firmtool.egg-info\SOURCES.txt'
reading manifest file 'firmtool.egg-info\SOURCES.txt'
writing manifest file 'firmtool.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\firmtool
copying firmtool\__init__.py -> build\lib\firmtool
copying firmtool\__main__.py -> build\lib\firmtool
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\firmtool
copying build\lib\firmtool\__init__.py -> build\bdist.win-amd64\egg\firmtool
copying build\lib\firmtool\__main__.py -> build\bdist.win-amd64\egg\firmtool
byte-compiling build\bdist.win-amd64\egg\firmtool\__init__.py to __init__.pyc
byte-compiling build\bdist.win-amd64\egg\firmtool\__main__.py to __main__.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying firmtool.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying firmtool.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying firmtool.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying firmtool.egg-info\entry_points.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying firmtool.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\firmtool-1.1-py2.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing firmtool-1.1-py2.7.egg
Copying firmtool-1.1-py2.7.egg to c:\python27\lib\site-packages
Adding firmtool 1.1 to easy-install.pth file
Installing firmtool-script.py script to c:\Python27\Scripts
Installing firmtool.exe script to c:\Python27\Scripts

Installed c:\python27\lib\site-packages\firmtool-1.1-py2.7.egg
Processing dependencies for firmtool==1.1
Finished processing dependencies for firmtool==1.1

出来たっぽい(笑)
firmtool.exe がc:\Python27\Scripts に作られていた。

そして、GodMode9 のビルド


Traceback (most recent call last):
File "c:\Python27\Scripts\firmtool-script.py", line 11, in
load_entry_point('firmtool==1.1', 'console_scripts', 'firmtool')()
File "build\bdist.win-amd64\egg\firmtool\__main__.py", line 464, in main
File "build\bdist.win-amd64\egg\firmtool\__main__.py", line 381, in buildFirm
File "build\bdist.win-amd64\egg\firmtool\__main__.py", line 313, in setSectionData
File "build\bdist.win-amd64\egg\firmtool\__main__.py", line 204, in setData
ImportError: No module named cryptography.hazmat.backends
make: *** [firm] Error 1

怒られた(笑)
これ、想定の範囲で、確かに「cryptography」は入れてない(汗)
README.md にも書いてある。。。

pip install cryptography


Collecting cryptography
Downloading cryptography-1.9-cp27-cp27m-win_amd64.whl (1.3MB)
100% |################################| 1.3MB 639kB/s
Collecting asn1crypto>=0.21.0 (from cryptography)
Downloading asn1crypto-0.22.0-py2.py3-none-any.whl (97kB)
100% |################################| 102kB 2.7MB/s
Collecting idna>=2.1 (from cryptography)
Downloading idna-2.5-py2.py3-none-any.whl (55kB)
100% |################################| 61kB 2.7MB/s
Collecting six>=1.4.1 (from cryptography)
Downloading six-1.10.0-py2.py3-none-any.whl
Collecting ipaddress (from cryptography)
Downloading ipaddress-1.0.18-py2-none-any.whl
Collecting cffi>=1.7 (from cryptography)
Downloading cffi-1.10.0-cp27-cp27m-win_amd64.whl (157kB)
100% |################################| 163kB 2.6MB/s
Collecting enum34 (from cryptography)
Downloading enum34-1.1.6-py2-none-any.whl
Collecting pycparser (from cffi>=1.7->cryptography)
Downloading pycparser-2.17.tar.gz (231kB)
100% |################################| 235kB 2.0MB/s
Installing collected packages: asn1crypto, idna, six, ipaddress, pycparser, cffi, enum34, cryptography
Running setup.py install for pycparser ... done
Successfully installed asn1crypto-0.22.0 cffi-1.10.0 cryptography-1.9 enum34-1.1.6 idna-2.5 ipaddress-1.0.18 pycparser-2.17 six-1.10.0

で、この後に、GodMode9 は無事にビルド出来た。

作らた GodMode9.firm の MD5hash値 と、ダウンロードしてきた GodMode9.firm の値は一致。
めでたしめでたし。