ARM64(Mac)でx86_64ファイルを実行する時のメモ

に公開

概要

cpawCTFなどの問題を解くときに特定のプログラムファイルを実行する必要があったりするが、たまにARM64非対応で結果が得られないことがあるので解決方法まとめ
※ここではMacのMシリーズプロセッサーを例とする

Dockerでx86_64環境をエミュレートする

  1. Docker Desktopをインストールする

https://docs.docker.jp/desktop/install/mac-install.html

  1. x86_64環境のコンテナを立ち上げる
docker run --rm -it --platform linux/amd64 ubuntu bash

これでarm64環境のubuntuを実行することができる
※肝になるのが「--platform linux/amd64」でここでエミュレート環境を指定する

  1. コンテナ内の環境に必要なソフトをインストール

コンパイラーなど何か必要なソフトがあれば入れておく

apt update
apt upgrade
  1. 問題ファイルなど実行したいファイルをコンテナへ転送する

ここはDocker Desktop上の「Containers」から対象のコンテナを選択して「Files」からコンテナ内のディレクトリ構成にアクセスしてファイルをImportするのが簡単

  1. 通常通りファイルを実行する
root@d7d7d413887b:/opt# ./exec_me 
cpaw{Do_you_know_ELF_file?}

あとがき

この方法を思いつくまでにMac上で動かしてる仮想のKali Linux(Arm版)でどうにかx86_64を実行できないか考えていたのですが、どの手法もかなり手間がかかるのと面倒だったので多分これが1番環境作成と破棄がしやすく簡単だと思います・・・

参考

https://www.docker.com/ja-jp/blog/multi-platform-docker-builds/

Discussion