お前ら*BSDのカーネルをハックしますか? (378レス)
お前ら*BSDのカーネルをハックしますか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
98: 名無しさん@お腹いっぱい。 [] 02/04/09 19:11 勉強のため、FreeBSD 4.5-RELEASE 上で俺ファイルシステムを 作りたいと思っています。とりあえず、procfs のように、カーネルの 覗き穴的な fs がいいかなと。 が、サパーリわかりません。というわけで、fs のスケルトンが欲しい のですが、よいスケルトンはどれでしょうか。 ファイルサイズ的に miscfs/deadfs/ かなぁと思うのですが、deadfs は どういう目的の fs なのかがわかりません。ぜひアドバイスをお願いします。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/98
99: 98 [sage] 02/04/09 19:26 deadfs は mount 方法もわからないし (そもそも mount できるのか どうかもわからん) kernfs の方がいいかな…。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/99
100: 名無しさん@お腹いっぱい。 [sage] 02/04/09 19:32 procfs を換骨奪胎すればいいのでは? http://mevius.5ch.net/test/read.cgi/unix/1003311346/100
101: 名無しさん@お腹いっぱい。 [] 02/04/09 19:57 やっぱnullfsが基本では。 procfsはpseudofsレイヤができたから応用ききづらいかも。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/101
102: 100 [sage] 02/04/09 20:21 nullfs は読むのに layerfs と行ったり来たりしなきゃ いけないので面倒かもと思ったので。(NetBSD) よく見たら >98 はFreeBSDか。 てゆーか msdosfs あたりでも見たほうがむしろ分りやすいかもとか 思ったり。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/102
103: 98 [sage] 02/04/09 20:37 なんだこれ、ちょーかんたんじゃん! というわけでメモメモ。 /sys/conf/files に追加。 miscfs/orefs/orefs_vfsops.c standard miscfs/orefs/orefs_vnops.c standard /sys/sys/vnode.h に VT_OREFS を追加。 enum vtagtype { ... VT_OREFS, /* 追加 */ }; # mkdir /sys/miscfs/orefs && cp /sys/miscfs/kernfs/* /sys/miscfs/orefs /sys/miscfs/orefs/* を片っ端から s/kern/ore/ # cd /sys/i386/conf && config GENRIC && cd ../../compile/GENERIC # make depend && make make install # ln -s /sbin/mount_kernfs mount_orefs # reboot # mkdir /ore # mount_orefs orefs /ore # ls -l /ore -r--r--r-- 1 root wheel 9 Apr 9 20:30 oresama # cat /ore/oresama oresama! http://mevius.5ch.net/test/read.cgi/unix/1003311346/103
104: 98 [sage] 02/04/09 20:54 UNIX 使い始めて はや7年。やっとカーネルの世界にちょっとだけ足を踏み入れる ことができたかな…。漏れみたいなヘタレには一生無理かとおもてたよ。感激。 というわけで、とりあえずの目標は rootvfs/da0s1a -> vnode/1 rootvfs/ad0c -> vnode/2 vnode/1/v_flag vnode/1/v_count みたいな (まだわかってないので構成は適当)、各種構造体をマッピングした ファイルシステムを作ろうと思います。 > やっぱnullfsが基本では。 nullfs の本来の使い方がいまいちわからないので、 一番サイズの小さい kernfs で行くことにしましたっす。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/104
105: 名無しさん [] 02/04/09 21:59 カーネルのコンパイルについて質問です。 FreeBSD4.5でカーネルをいじってmake && make installを しているんですが不要な部分を除いてコンパイルの時間を 短くできないでしょうか?そんな都合のいい話は ないかもしれませんがよろしくお願いします。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/105
106: あぼーん [あぼーん] あぼーん http://mevius.5ch.net/test/read.cgi/unix/1003311346/106
107: 名無しさん@お腹いっぱい。 [] 02/04/09 22:47 >>105 パソコンかえればはやくなるんじゃないかな。 PentiumIII1G以上だったら1分ぐらいで終わるし。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/107
108: 名無しさん@お腹いっぱい。 [sage] 02/04/09 22:51 >>105 本来スレ違いなんだけど… http://www.jp.freebsd.org/www.FreeBSD.org/ja/handbook/kernelconfig.html さらに何か疑問があればFreeBSD質問スレにGo http://mevius.5ch.net/test/read.cgi/unix/1003311346/108
109: 名無しさん@お腹いっぱい。 [] 02/04/20 02:22 NULLFSは正直お勧めできない。 あれは、スタッカブルファイルシステムのテンプレ。 そうそう。Linuxネタだけど、これどうよ。(カーネル空間でORBit動かす) http://korbit.sourceforge.net/ これ一瞬移植しようかと思ったけど、geom入ったせいで glibと名前空間がぶつかりそう。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/109
110: 名無しさん@お腹いっぱい。 [] 02/04/21 00:27 うーん。 NetBSDからスタッカブルファイルシステム系全部持ってきたほうが 面白いかなぁ。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/110
111: 名無しさん@お腹いっぱい。 [sage] 02/04/21 16:04 >>109 ORBit カーネルで動かすとなんかいいことあるの? > you can write Linux device drivers in Perl とか言われてもなあ(w http://mevius.5ch.net/test/read.cgi/unix/1003311346/111
112: 学生 [] 02/05/08 22:11 カーネル書けるとスゴいって書き込みよく見かけますが 学生で書けたらすごいですか? ウチの教授は書けますかね? http://mevius.5ch.net/test/read.cgi/unix/1003311346/112
113: 名無しさん@お腹いっぱい。 [sage] 02/05/08 22:27 >>112 そんな書き込みどこで見かけた? 2ちゃんねるぢゃあないよな? http://mevius.5ch.net/test/read.cgi/unix/1003311346/113
114: 名無しさん@お腹いっぱい。 [sage] 02/05/08 22:39 >>113 ここと思われ: Free Unix での経験は職歴に入らないか? (428) http://pc.2ch.net/test/read.cgi/unix/995637081/12 http://mevius.5ch.net/test/read.cgi/unix/1003311346/114
115: 学生 [] 02/05/08 23:02 ビンゴです。 あと、以前他のスレでも見ました。 で、どうなんですか。 カーネルは上級のプロじゃないと書けないんですか? お前ら真面目にレス下さい。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/115
116: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:10 >>115 べつにプロである必要はこれっぽっちもないわけだが http://mevius.5ch.net/test/read.cgi/unix/1003311346/116
117: 学生 [] 02/05/08 23:19 >>116 どのくらい難しいのでしょうか 3年間くらい勉強すれば学生でもかけますか http://mevius.5ch.net/test/read.cgi/unix/1003311346/117
118: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:21 >>117 やってみりゃ自分でわかるだろ? つべこべ言ってないでさっさとカーネルをハク汁 http://mevius.5ch.net/test/read.cgi/unix/1003311346/118
119: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:24 >>117 自分の頭の中のフローチャートを実際にプログラムに 起こせる人間であれば、多分1年くらいで出来ると思う。 漏れは3年くらいかかったけど(鬱 http://mevius.5ch.net/test/read.cgi/unix/1003311346/119
120: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:27 >>117 学生かどーかは関係ないし。 1ヶ月くらいやってみて無理そうなら当分無理。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/120
121: 117 [] 02/05/08 23:37 レスありがとうございます。 ここで言う「書ける」というのは、白紙からの状態から自分で書けるという意味ですよね? 既存のプログラムを改造するとか、書籍を見て書くとか、そういう意味ではないですよね? http://mevius.5ch.net/test/read.cgi/unix/1003311346/121
122: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:38 >>115 むしろカーネルをスクラッチから書くなんてこと 学生にしかできないから、今のうちに頑張れ。 「上級のプロ」にそんな暇なんてありません。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/122
123: 名無しさん@お腹いっぱい。 [] 02/05/08 23:41 >>122 UNIX使いになるためには、やっといて損はないですか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/123
124: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:44 >>123 人によって"損"の感じ方が異なります 私の損とあなたの損は違います http://mevius.5ch.net/test/read.cgi/unix/1003311346/124
125: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:46 >>124 うーん 将来ネットワーク関係のソフトウェアを開発したいのですけども。 そーゆー人にとっては有益でしょうか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/125
126: T大理系 [] 02/05/08 23:49 みんな理系? 凄いです 尊敬します http://mevius.5ch.net/test/read.cgi/unix/1003311346/126
127: 名無しさん@お腹いっぱい。 [sage] 02/05/08 23:59 >>125 そういう具体的な目標があるのなら、カーネルに拘らずに最初から ネット周りのプログラムをハクした方がいいと思われ。 カーネル書ける奴はスゴイが、カーネル書ける奴だけがスゴイわけじゃない。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/127
128: 名無しさん@お腹いっぱい。 [sage] 02/05/09 00:08 俺的にはドライバをバリバリ書き捲くってるような人が プログラマとして尊敬に値すると思ってる。 カーネルはどっちかって言うと設計するものって感じだしねぇ。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/128
129: 名無しさん@お腹いっぱい。 [sage] 02/05/09 00:10 >>128 実務家っぽい御意見… http://mevius.5ch.net/test/read.cgi/unix/1003311346/129
130: 名無しさん@お腹いっぱい。 [sage] 02/05/09 00:11 人に訊いてからじゃないと始められない奴は結局何もできない。 hackなんてのは気づいたらやっているか、やらないと夜が明けないかのどちらかだ。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/130
131: 名無しさん@お腹いっぱい。 [sage] 02/05/09 01:13 >>125 ネットゲーのサーバとかのように、非同期に発生する大量の要求を うまく捌かなければならないプログラムを書くのは、 カーネルを書くのと似たようなセンスが必要な気がする。 # RDBMSとかもそうだな。 こういうシステムをうまく設計できる奴は 非常に使えるね。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/131
132: 名無しさん@お腹いっぱい。 [sage] 02/05/09 12:11 >>130 がいいこと言った。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/132
133: 学生 [] 02/05/10 19:33 みなさんどうもありがとう ところでみなさん理系ですか? もしくはコンピュータで飯を食っている人達ですか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/133
134: 名無しさん@お腹いっぱい。 [sage] 02/05/10 19:44 >>133 理系かそうでないかなんてどうでもいいことだ。 とりあえずやってみろ >>130 どっかで聞いた気がするが、イイね http://mevius.5ch.net/test/read.cgi/unix/1003311346/134
135: 名無しさん@お腹いっぱい。 [sage] 02/05/10 20:22 >>133 俺も学生。経営情報学科というとこにいる。 理系だか文系だかわからん。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/135
136: 名無しさん@お腹いっぱい。 [sage] 02/05/11 05:29 あーあ カーネルいじって遊んでたら もー朝だよ... 寝よーっと。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/136
137: 名無しさん@お腹いっぱい。 [sage] 02/05/11 14:10 カーネル・ハッカースおじさんのAAキボンヌ http://mevius.5ch.net/test/read.cgi/unix/1003311346/137
138: 名無しさん@お腹いっぱい。 [sage] 02/05/21 11:26 hack より fuck だと最近痛感 おっかけさぼりすぎで make world 不能状態 http://mevius.5ch.net/test/read.cgi/unix/1003311346/138
139: 26=52=..... [sage] 02/05/25 03:44 某誌のネタにしますた。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/139
140: 名無しさん@お腹いっぱい。 [] 02/06/03 01:15 保守age http://mevius.5ch.net/test/read.cgi/unix/1003311346/140
141: 名無しさん@お腹いっぱい。 [sage] 02/06/03 01:59 見習いデーモンは死んだのか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/141
142: 名無しさん@お腹いっぱい。 [] 02/06/09 05:21 ど な たか、いらっしゃい ま せ ん か ? http://mevius.5ch.net/test/read.cgi/unix/1003311346/142
143: 名無しさん@お腹いっぱい。 [sage] 02/06/21 07:49 誰かハックしてる人いますかー。 BSDのkernel読み始めるとしたら、手をつけるところは どこがおすすめですかねぇ http://mevius.5ch.net/test/read.cgi/unix/1003311346/143
144: 名無しさん@お腹いっぱい。 [sage] 02/06/21 08:28 >>143 過去ログ http://mevius.5ch.net/test/read.cgi/unix/1003311346/144
145: 名無しさん@お腹いっぱい。 [sage] 02/06/21 09:23 >>143 current の SMPng http://mevius.5ch.net/test/read.cgi/unix/1003311346/145
146: 名無しさん@お腹いっぱい。 [] 02/06/25 23:38 >>143 まぁ、過去ログにもいろいろあるけど、手足から見て行くのがいいと思うね。 デバイスドライバ、ファイルフォーマット毎のプロセス実行サブシステム(imgact_*)、 簡単なファイルシステム、低水準の初期化部あたりは割とコンパクトに まとまってて読みやすいんじゃないの? >>145 ほぅ。じゃぁ、具体的に何処のファイルがSMPngに関係してるのか言ってみ。 PERFORCEのリポジトリは見てるんだろうね。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/146
147: 名無しさん@お腹いっぱい。 [sage] 02/06/26 00:06 >>146 の後半 ネタにマジレスカコワルイ http://mevius.5ch.net/test/read.cgi/unix/1003311346/147
148: 名無しさん@お腹いっぱい。 [sage] 02/06/26 00:28 >>146 FreeBSD以外の*BSDってperforce使っているんですか? FreeBSDのperforce treeってanonymousでソースを取れるんでしょうか? できるんなら見てみたいと思っています。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/148
149: 名無しさん@お腹いっぱい。 [] 02/06/26 01:08 >>148 他の*BSDでは使ってないです。 でもSMPngっていったらFreeBSDでしょ。 リポジトリのブラウズならここでどうぞ。 http://people.freebsd.org/~peter/p4db/ 手元に置きたければ http://people.freebsd.org/~peter/p4cookbook.txt に取り方が書いてある。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/149
150: 名無しさん@お腹いっぱい。 [] 02/07/03 03:05 FreeBSDのブートについて質問させてください。 sys/boot/common/load_elf.c を読んでるんですが、 /kernelのエントリアドレス(当方では0xc012b130)に0xff000000をマスクして 符号反転してオフセット(off)を0x40000000にしている意味がわからないです。 コメントの「i386 relocates after locore」っていうのも呪文ですし… で、結局/kernelのプログラムヘッダの仮想アドレス(当方では0xc0100000)と さっきのoffを加算して桁あふれさせて0x100000にして、 最終的にはこのアドレスに/kernelをロードしてるようなんですが、 なんかえらくまわりくどくないですか?私の読みが浅いだけでしょうか。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/150
151: @夜勤雀棟 ◆YaKINcTg [sage] 02/07/03 05:48 >>150 sys/boot/common/load_elf.c > off = - (off & 0xff000000u); /* i386 relocates after locore */ offの最上位の1バイトをクリアするだけだと。 e.g. 0xc012b130 -> 0x0012b130 >/* i386 relocates after locore */ boot2内で/kernelを16MB以下のリニアアドレス(0x00100000-)へ展開しておき、 locore.sにおいて適切なアドレス(0xc0100000-)へmapするのだと思われます。 (locore.s内でページングをenableにしている) #ざっと眺めただけなので保証はしませんが :-p http://mevius.5ch.net/test/read.cgi/unix/1003311346/151
152: 名無しさん@お腹いっぱい。 [age] 02/07/03 21:52 良サイト宣伝中〜〜。 http://www.interone.jp/~game-k/ 注)私はサイト関係者とは無関係ですよ。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/152
153: 名無しさん@お腹いっぱい。 [sage] 02/07/04 03:20 >>152 BSD カーネルのハックに関する良サイトかと思って見に行っちゃったよ :-) http://mevius.5ch.net/test/read.cgi/unix/1003311346/153
154: 名無しさん@お腹いっぱい。 [sage] 02/07/04 05:05 アドレスの最後の方のgameがgmakeに見えて、見に行っちゃったよ。。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/154
155: 名無しさん@お腹いっぱい。 [] 02/07/06 20:57 >>151 その通り。なぜ、&= ~(0xff000000)じゃないのかよう分からんけど。 で、じゃあ何故ELFヘッダの開始番地が0x100XXXなんかじゃ無くて 0xc01000XXになってるかっていうと、paging開始後はカーネル仮想メモリ アドレスは全て0xc0000000以降になっていて、 カーネルで使用している メモリアドレスは全てそこにマップされるから。(リンカとELFフォーマット の機能を使えばそういう状況にも実は対応できたりするような気もするけど) 特にkernelとISAメモリ空間は(物理アドレス+0xc0000000)の位置にマップされます。 locore.sでページングを開始するまでに絶対アドレッシングが必要な 時は #define R(foo) ((foo)-KERNBASE) 定義されるマクロを使ってアクセスしてます。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/155
156: 150 [] 02/07/06 21:47 >>151, >>155 お二人のレスを見ると自分がはずしまくってるのかニアミスなのか すげぇ悩みます。 load_elf.cに↓のようにコード追加して -- 228行目あたり if (kernel) { printf("before [%p]\n", (void *)off); ←これを追加 #ifdef __i386__ off = - (off & 0xff000000u); /* i386 relocates after locore */ printf("after [%p]\n", (void *)off); ←これを追加 -- # make # make install として祭起動すると before [0xc012b130] after [0x40000000] となるんで、あぁそうかと思ってたんですけど、お二人は 最上位の1バイトをクリアしてるとおっしゃてますし。 でも/kernelを0x100000へマップするのはあってるんですよね? http://mevius.5ch.net/test/read.cgi/unix/1003311346/156
157: @夜勤雀棟 ◆YaKINcTg [sage] 02/07/06 22:25 >>156 > off = - (off & 0xff000000u); /* i386 relocates after locore */ スマソ。コードを読み違えました。 off -= (off & 0xff000000u); だったら最上位バイトのクリアですね。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/157
158: 150 [sage] 02/07/06 23:16 >>157 まぁ「保証はしない」っておっしゃってましたしね =) さてすっきりしたところでつぎはbtx.sでものぞいてみますか… http://mevius.5ch.net/test/read.cgi/unix/1003311346/158
159: 名無しさん@お腹いっぱい。 [] 02/07/18 02:40 せっかくだから俺は、ed0からtcpパケットがユーザランドまで行くまでを追って見るぜ edintr-> ed_rint(dev/ed/if_ed.c)-> ether_input ->ether_demux(net/if_ethersubr.c)->(queueへ) (queueからnetisrで)->ipintr->ip_input(netinet/ip_input.c)-> tcp_input->(順序を組み立てる為のqueueへ?) ぐらいまで読めましたが、そっからどうなってるのかわかりますか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/159
160: 名無しさん@お腹いっぱい。 [sage] 02/07/19 00:02 上から来るぞ! 気をつけろ! TCP は置いといてとりあえず UDP 追ってみては? http://mevius.5ch.net/test/read.cgi/unix/1003311346/160
161: 名無しさん@お腹いっぱい。 [] 02/07/21 04:14 おい、>>160,見習いデーモン,生きてるか? udpの場合ip_inputの後 udp_input@udp_usrreqで配送先のプロセスを探して、sowakeupで起こす そうすると、sbwait()で待ってた soreceive()(uipc_socket.c)->recvit()でcopyoutされ、 recvitからはrecvfromに戻ってシステムコール完了と言った感じですか。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/161
162: 名無しさん@お腹いっぱい。 [] 02/07/29 19:56 ここなかなか良さそう。ただしSimplified Chinese。 http://opensource.zjonline.com.cn/ http://mevius.5ch.net/test/read.cgi/unix/1003311346/162
163: 150 [FreeBSD 4.6R です。] 02/07/30 09:23 おはようございます。 PICの解説で参考になるページ見つけたんで貼っておきます。 http://www.asahi-net.or.jp/~WR7S-NKMR/BeOS/Documents/IRQ.html http://www.cqpub.co.jp/column/books/2001a/34331PC_Legacy/default.htm で、また質問させてください。 sys/boot/i386/btx/btx/btx.s を読んでるんですが、 220行目あたりの「Launch user task」からがサッパリわかりません。 TSSの働きとタスク切替えがよく理解できてないからだと思うんですが、 248行目のiret命令で何が起こるのかわかりません。 (コメントには「To user mode」って書いてあるんですが…) iretでタスクを切替える場合はフラグレジスタにNTビットがセットされて なければならない、とインテルのマニュアルにも「はじめて読む486」にも 書いてあるんですが、248行目に到達するまでにNTビットがセットされたような 様子もないんですが… 何かヒントだけでもお願いします。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/163
164: 名無しさん@お腹いっぱい。 [] 02/07/30 10:45 基本的にはbtxではタスク切替え使ってない筈。(そんな豪勢なことする ほどのサイズも無いし)単純に、EFLAGSもPOPすることで、 特権を切替えてbtx_hdrにあるモニタルーチンのエントリーへ 飛んでるだけのことと思う。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/164
165: @夜勤雀棟 ◆YaKINcTg [sage] 02/07/30 15:06 >>163 この場合はTSSは関係ないですね。(V86用に使うだけ) 割り込みが起こったことにしてiretしているだけです。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/165
166: 150=163 [sage] 02/07/31 19:46 レスどうもです。 はやとちりしてました。iretはタスク切替えだけで使うものではなかったんですね。 インテルのマニュアルの命令リファレンスで確認しました。 でも、pushしておいたEIP(btx_hdr+0xc)がiretで特権を切替えたあと 実行される番地みたいですけど、btx_hdr+0xcって btx_hdr: .byte 0xeb # Machine ID .byte 0xe # Header size .ascii "BTX" # Magic .byte 0x1 # Major version .byte 0x1 # Minor version .byte BTX_FLAGS # Flags .word PAG_CNT-MEM_ORG>>0xc # Paging control .word break-start # Text size .long 0x0 # Entry address ←ここですか? 特権を切替えて、また同じコードを辿ってくってこと??? http://mevius.5ch.net/test/read.cgi/unix/1003311346/166
167: @夜勤雀棟 ◆YaKINcTg [sage] 02/07/31 20:21 >>166 >でも、pushしておいたEIP(btx_hdr+0xc)がiretで特権を切替えたあと >実行される番地みたいですけど >pushl btx_hdr+0xc# Set EIP これは間接参照でbtx_hdr+0xc番地の内容(long)をpushするという意味です。 # operandに'$'が付いていないことに留意。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/167
168: 150 [sage] 02/08/03 14:17 >>これは間接参照でbtx_hdr+0xc番地の内容(long)をpushするという意味です。 にしても、特権切替えたあとはどのコードが走るのか全然わからないです。 EIPが0x0なんですよね?0x0番地のコードって…? http://mevius.5ch.net/test/read.cgi/unix/1003311346/168
169: 名無しさん@お腹いっぱい。 [sage] 02/08/03 18:45 実際のバイナリをhexdumpしないとダメっすよ。ローダがいじるに決まってるでしょ。 /boot/boot2より 00000200 eb 0e 42 54 58 01 01 80 f6 0f 80 07 00 10 00 00 |..BTX...........| <eb> btx_hdr: . byte 0xeb <0e> . byte 0xe <42 54 58 > . ascii "BTX" <01> .byte 0x1 <01> . byte 0x1 <80> .byte BTX_FLAGS <f6 0f> .word PAG_CNT-MEM_ORG>>0xc <80 07> .word break-start <00 10 00 00> .long 0x00001000 簡単にするならコメントを信じて次のbtxクライアント(boot2又は/boot/loader本体) へ進めってことです。ちなみに/boot/loaderは更にbtxldrが走ったりするっす。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/169
170: 名無しさん@お腹いっぱい。 [] 02/08/03 19:30 >>実際のバイナリをhexdumpしないとダメっすよ。ローダがいじるに決まってるでしょ。 おぉ、盲点でした。 こういうのはMakefileを丁寧に追っていけばわかることですか? 今ちらっとsys/boot/i386/boot2/Makefileを見たら ORG2に代入された0x1000がbtxldコマンドのオプションとかに使われてて 「ほうほう」と思ってたんですけど。 ソースにとらわれすぎて本質を見失ってました。 でも>>169さんのおかげでまた少し前進できそうです。ありがとうございました。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/170
171: 150=170 [sage] 02/08/03 19:31 sage忘れ欝だ死のう… http://mevius.5ch.net/test/read.cgi/unix/1003311346/171
172: 名無しさん@お腹いっぱい。 [] 02/08/04 22:06 sageなくても良いんじゃない? まぁ、強いていえば「特殊なローダを必要とする」「0x0なんて番地に飛ぼうとする」 という2点から勘を働かせた結果かな。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/172
173: 見習デーモンへ [] 02/09/09 04:58 スレ キトク スグカエレ 〜ハハヨリ〜 http://mevius.5ch.net/test/read.cgi/unix/1003311346/173
174: 名無しさん@お腹いっぱい。 [sage] 02/09/11 00:13 >>173 知らなかったのか?見習いデーモンは 半年前に勇者に殺されたんだぞ。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/174
175: 名無しさん@お腹いっぱい。 [] 02/09/15 00:10 もし!毒蛇に噛まれたら、 切り口を素早くナイフでえぐり、 急いで口で吸え! ほら、言ってみろ!! http://mevius.5ch.net/test/read.cgi/unix/1003311346/175
176: 名無しさん@お腹いっぱい。 [sage] 02/09/15 00:37 虫歯がある時にそれやったら死んでしまう罠。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/176
177: 名無しさん@お腹いっぱい。 [] 02/09/15 01:44 ごめんなさい クックロビンを殺したのは私です。。。。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/177
178: 名無しさん@お腹いっぱい。 [] 02/09/15 01:44 boot0.sコードので分らない部分があるのですが、 61 movw $LOAD,%sp # stack 66 movw %sp,%si # Source 67 movw $start,%di # Destination 68 movw $0x100,%cx # Word count 69 rep # Relocate 70 movsw # code この部分は、MBRを再配置するコードだと考えているのですが、 アドレスLOAD(0x7c00)からの512バイトの領域を、現在実行して いるstartで表されるアドレスからの512バイトの領域にコピーする という意味なのでしょうか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/178
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 200 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s