きのうから CTF をやり始めました。普段使ってる PC は M5 Mac なんですが、何もしないと x86_64 環境を前提としたバイナリが動かせなくてつらい!ということで、環境構築をしました。やったことを残しておきます。
作ったものはここに置いてあります。CTF をやるために、通常の開発では非推奨のフラグなどもつけてるので、利用は自己責任でお願いします。
Docker Desktop から Colima に移行する
自分の PC には Docker Desktop を元々入れてましたが、Colima に変えました。最初は変えなくてもいいかなと思ってたんですが、やってよかったです。
- Docker Desktop 上で Ubuntu イメージを入れて使うと、gdb がうまく動かない
- Colima だと VM を複数扱えるが(後述)、Docker Desktop だと多分できない
このあたりが理由です。下の記事に従えば移行できました(ありがたや)
Colima に x86_64 VM を入れる
上の記事に従って Colima を入れたところ、aarch64 (ARM) の VM のみが入りました。このままでも x86_64 の Ubuntu イメージを入れて使うことはできますが、VM から x86_64 に揃えておくと良さそうです。どの VM を使うかによって、手元では以下の違いがありました。
- aarch64 の VM だと、
gdb使用時に ptrace 周りで warning が出る - x86_64 の VM だと出ない
# aarch64 の VM だとこれが出ていた
warning: Could not trace the inferior process.
warning: ptrace: Function not implemented
x86_64 の VM は次のようにして入れました。
$ brew install qemu lima-additional-guestagents # x86_64 の VM を作成 $ colima start -p x86_64 --arch x86_64 --vm-type vz --vz-rosetta --mount-type virtiofs # 環境が作られていることを確認 $ colima list PROFILE STATUS ARCH CPUS MEMORY DISK RUNTIME ADDRESS default Running aarch64 2 2GiB 100GiB docker x86_64 Running x86_64 2 2GiB 100GiB docker $ docker context list NAME DESCRIPTION DOCKER ENDPOINT ERROR colima * colima unix:///Users/tsutaj/.colima/default/docker.sock colima-x86_64 colima [profile=x86_64] unix:///Users/tsutaj/.colima/x86_64/docker.sock default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
docker コマンドを使う時に --context colima-x86_64 をつけると、x86_64 の VM を使ったうえで docker の各種操作ができます。
(常に x86_64 の VM を使うのでよければ、 docker context use colima-x86_64 のほうが手軽そう)
この記事も参考になります: