今よりも少し 昔、
を作ろうとした話
年忘れだよ ヒカ☆ラボに全員集合
きっかけの話
むかーしむかし ねんごろ
ぼくは つかいでした
のあのアプリが使いたい
動くといいのにな、なんで動かないのかな
かんがえてみた
アプリケーションはプログラム データである
実行ファイルのフォーマットがちょっと 違う
あれ これって似たようなものなのでは
ELF
header
.text .data .bss
PECOFF
header .text .data .bss
しらべてみた
は「 のお化け」
ってつまりプロセス空間にマップされる共有ライブラリ
のバイナリが を で呼ぶように、
のバイナリは を関数コールする
プロセス空間
EXE
DLL
DLL
ひらめいた ( 年 月)
ファイルは を呼ぶだけ
じゃあ の中身を自分で作ってしまえば
が でそのまま 動く
がちゃんと仕様の通りか検証してみたい欲が
プロセス空間
EXE
自作DLL
自作DLL
syscall
やったこと
を動かそうと思ったら、
を読み込むところに手を加えて
を読ませればいいのでは
カーネルを改造して、 をマップ可能に
具体的には、 システムコールの実装をいじりました
やったこと
はいいけど はどうする
だと、 ダイナミックリンカ が呼ばれてそいつがマップする
を改造して、 をマップできるようにしちゃえ
改造 を読み込むようカーネルにも細工を
やったこと
実は、プログラムコードの呼び出し規則 が と とで違います
自作 から直接 の関数を呼べると楽できるのに
(当初)できないので を でコンパイルしてました
できあがったもの
うーん、 を改造して、相互に呼び出せるようにしちゃえ
解決
では を作りましょう
の中身を職人が一つ一つ手作りしています
のようなものは の該当関数呼び出しで実装
ウィンドウを描画する の中身は の呼び出しをする、といった感じ
の一部も実装されたり、手伝ってくれる人もいたりしました
開発当初のスライドより一枚だけご紹介
年 月 のスライド。
当時はワイド画面じゃなかったので
スライドも でした。
そうしてできあがったものは
動き出したころのスライド
● 電卓が動く
● コマンドプロンプト が動く にもできました
● マインスイーパーもどうにか動く
● けど は動かないー
● なぜか 当時流行っていたエロゲーもいくつか動きました(スクショ見つからず)
現在でいうところの の逆みたいな感じです
そして伝説へ
の 数が多すぎてつくるのとってもしんどい
やがて は の時代へ。 も出てきて、ますます が複雑に
が使われなくなったり である必然性がなくなったり
すでに実績のある をみんな使うのもあって開発者も増えず多忙になって
動かせることが実証できたので満足した、のでした。
おしまい。

今よりも少し(?)昔、 Windowsを作ろうとした話