環境構築1. devkitARMをインストールする
2. Pythonをインストールする
これらの方法は割愛します。詳細はググってください。
3. 1, 2でインストールしたプログラムにパスを通す
Windowsの場合、通常、devkitARMのバイナリへのパスは次のようになっています。
- コード: 全て選択
C:\devkitPro\devkitARM\bin
これらを環境変数PATHに追加してください。詳細はググってください。
これで準備は完了です。次のコマンドで動作確認できます。
- コード: 全て選択
arm-none-eabi-gcc -v
python --version
Homebrew開発 ここではDS Profile Exploitについて説明します。
ここではいくつかの専門用語が出てきます。不明な用語があった場合には
3dbrewを参照してください。
DS Profile Exploitでできること
DS Profile ExploitではARMv6kのコードを実行できます。
3dsploit.pyとS0.DAT
DS Profile Exploitで使用出来るLauncher.datを作成するツールは2つあります。
ひとつは3dsploit.pyで、もうひとつはS0.DATです。
それぞれ以下で入手できます。
naehrwert/p3ds · GitHub 173210/ctrhw · GitHub これらはそれぞれバイナリが読み込まれるアドレスとフレームバッファのアドレスが異なります。
・3dsploit.py
バイナリ: 0x080C3EE0
上画面左: 0x20184E60, 0x201CB370
上画面右: 0x20282160, 0x202C8670
下画面: 0x202118E0, 0x20249CF0
・S0.DAT
バイナリ: 0xF1000000
上画面左: 0xF0184E60, 0xF01CB370
上画面右: 0xF0282160, 0xF02C8670
下画面: 0xF02118E0, 0xF0249CF0
S0.DATは3dsploit.pyより強い権限でコードを実行できます。例えば、
Configuration Memoryの読み書きができます。
Service
3DSではファイル操作等のほとんどのことをServiceを用いて行います。
しかしDS Profile Exploitでは完全には扱えていません。使えないものと考えたほうが良いでしょう。
SVC (Supervisor Call, System Call)
これは自由に扱えます。スレッドの作成等が可能です。
プログラムの作成
これは説明するよりコードを見たほうがいいと思うので、既存のHomebrewのコードを紹介します。
173210/ctrhw · GitHub St4rk/Chip8-ARM11 · GitHub insaneKane/3DS_Homebrew_Stuff2 · GitHub Aliakr18/mandelbrot · GitHub nop90/3DS_Homebrew · GitHub