30日でできる! OS自作入門 ~1日目~ その1
はじめに
「30日でできる!」という文言に惹かれて以下の本を購入しました.
実は一度挫折しているので,今回もどうなるかわかりません.
— Maru (@GmS944y) November 22, 2018
書いている人間の技術力が低いので,間違った記述が多々出てくると思われます.その際は優しく指摘してください.
環境
本の中ではWindowsを開発環境として話が進んでいますが,自分はUbuntu 18.04 の 64bitで作業を進めて行きたいと思います.理由は自分の持っているPCのOSがUbuntuだからというだけです.
$ uname -a Linux ubuntu 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
作業
1. とにかくやるのだぁ
バイナリエディタを使用するのでインストール
$ sudo apt install ghex
バイナリエディタで1,474,560バイトを入力し続けるのはさすがに心が折れるので,先にPythonで1,474,560バイトのファイルを作成します.
$ python -c 'print("\x00"*1474560)' > helloos.img $ du -b helloos.img 1474561 helloos.img
これだと,1バイト大きいみたい. なので,1バイト減らします.
$ python -c 'print("\x00"*1474559)' > helloos.img $ du -b helloos.img 1474560 helloos.img
その後,バイナリエディタを使って必要な部分を書き換えます.
せっかくなのでhello, world
の1文字目を大文字で.
H
は16進数で0x48なので0x68 -> 0x48
へ変更.
実行
エミュレータをインストール.
$ sudo apt install qemu
実行
$ qemu-system-i386 -fda helloos.img
まとめ
Markdownに慣れていないので,記事を書く方に時間がかかってしまった.
参考
学内でPwn入門用の勉強会を開催した際の資料
去年の11月ごろに学内で開催した勉強会で使用した資料をアップしました。 内容はPwnの概要です。