トップ «前の日記(2010-08-09) 最新 次の日記(2010-08-15)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|

ToDo:


2010-08-11

_ wine

そういえば wine について書こうと思って書いてない。 もう書くの忘れたまんまになりそうなのでなんか書いておく。

あれは普通に考えると PE ローダ。 PE はエントリアドレスとか指定できるっぽいので、 まぁ適切な位置に配置してやらなければならん。 しかし普通に wine は libc とかも使うわけで、 wine 自身やら libc やらが PE を置きたいアドレスに 配置されたら困る。

wine がどうやって回避してるかっていうと、 ELF のロードを自分でやってる。

正確にはうちの debian とかだと、

  • /usr/bin/wine - 単なる bash script
  • /usr/lib/wine/wine.bin - pthread か kthread かを選ぶ程度のどうでもいい ELF バイナリ
  • /usr/lib/wine/wine-preloader - static link された ELF ローダ。自身の entry address は WIN32 が絶対に使わないアドレスを使っていて、勝手に .so をロードされたくないアドレスは全部 mmap しておくことによって .exe と .dll を好きなところに置けるようにしている。 .so のロードは本来の ELF loader にやらせてるらしいんだけど、そのへんどうやってるかは調べてない (TODO)
  • /usr/lib/wine/wine-pthread - wine 本体。こいつが kernel32.dll.so とかを dlopen でロード、かな?

とかいう感じになるっぽい。 細かいところはまた今度調べないといかん。

あとはまぁ C プリプロセッサ持ってたり、 たぶん複数プロセスのアプリとかもちゃんとなんとかせんといかんからか、 レジストリの管理やらなんやらをしている wineserver とかいうのが 動いてたりとか、まぁなんか知らんけどすごい開発リソースが投入されてるよなーと。

(02:47)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2010年
8月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
1.isshiki(2010-08-27 03:40) 2.shinh(2010-08-18 12:30) 3.もわ(2010-08-18 09:02)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h