Hack BBS
[全部のスレッド一覧][新規投稿][記事の削除・変更]
[Home Page]
返信投稿はタイトルのリンクをクリックして下さい
スレッド【No.57】の中の記事をすべて表示しています
【No.57】のスレッド
04/03/05(金) 00:52:25 投稿者[たつや] [No.57]のスレッド内
- 【No.57】 タイトル[Flash ROM について]
この記事がスレッドの最初です
- ハックの記録で山下さん writes:
>カーネル(/dev/fl1) も同じように書き込めるのだろうが、
Flash ROM の書き込み方法は私も調べていました。
もう少し早く書いていればよかったですね。
私がやったのは、ap_servd デーモンのシステムコール呼出を
strace で記録した状態でファームウェアのアップデートを行
う、というものです。
その結果からカーネルの書き込みを行っている部分を抜粋す
ると、
02:16:56 open("/dev/fl1", O_WRONLY) = 6
02:16:56 write(6, "\0\0\0\1\0\0\0\3HD-HLAN(PLUS)\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
02:16:56 write(6, "\313?!\303\345\317\312p\371-\31.\2779\303\3457e\270\374"..., 1024) = 1024
(ひたすら write の繰り返し・・・・)
02:16:59 write(6, "\0270g\365r\224/\270\252\202\360\240\272\215\362tB\206"...,
503) = 503
02:16:59 close(6) = 0
02:18:01 open("/dev/fl1", O_RDONLY) = 6
02:18:01 read(6, "\0\0\0\1\0\0\0\3HD-HLAN(PLUS)\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
02:18:01 read(6, "\313?!\303\345\317\312p\371-\31.\2779\303\3457e\270\374"..., 1024) = 1024
(ひたすら read の繰り返し・・・・)
02:18:05 read(6, "\0270g\365r\224/\270\252\202\360\240\272\215\362tB\206"..., 50
3) = 503
02:18:05 close(6) = 0
となっていました。単純に /dev/fl1 を open して write で
ひたすら書き込み、再度読み込みモードで open してから読
み出して Verify しているようです。
残念ながら、上記の方法では fork() したプロセスのトレース
ができない (fork() した子プロセスをトレースするにはカー
ネルのパッチが必要?) ので、ap_servd が起動しているコマ
ンドを追うことはできませんでしたが、HD-LAN FWUpdate.exe
との間のやりとりなどはしっかり記録されています。
(ppc_uartd のやっていることも、同様の方法で解析できそう
ですが、これはまだやってみていません。)
>・カーネルをどうやって作るのか
玄箱についていたカーネルソースはコンパイルできる形では
ありませんでしたか?
MontaVista Linux 自体は GPL なので、玄箱にはコンパイル
できるソースがついているだろうと期待しているのですが。
>・どのような形式で書き込むのか
>が、不明。
>失敗すると、死亡は確実だし。
これはやはり問題ですね。
少なくとも、108 バイトのヘッダは作ってあげないと起動
しなさそうですし、これができたとしても、カーネルが一
発で作れないと、失敗したらただの箱になってしまいます
ので。
フラッシュ上のカーネルの書き換えは、技術的には簡単な
のですが、カーネルの構築に失敗した等の危険を考えると、
実質的に書き換え不可能だと思い始めています。
それより、作成したカーネルを HDD 上においておき、フ
ラッシュから起動した後に HDD 上のカーネルで再起動す
ることができれば、安全にカーネルの入れ替えが可能なの
ではないかと思い、その方法を考えてみたいと思っていま
す。
今日思いついたばかりなので、まだできるかどうかは不明
です。しかし、他のマシン上では既に行われていることの
ようなので、実現の方法としてはもっとも可能性が高そう
だと考えています。
例えば、PS2 用 Linux では以下のような物があるようです。
Http://hp.vector.co.jp/authors/VA008536/ps2linux/akmem.html
# またまた長文になってしまいました。ごめんなさい。
04/03/05(金) 01:16:02 投稿者[山下康成] <http://www.yamasita.jp/linkstation>
[No.57]のスレッド内
- 【No.58】 タイトル[Re: Flash ROM について]
【No.57】に対する返信
- たつやさん、いつも参考になる書き込みありがとうございます。
>>・カーネルをどうやって作るのか
>
>玄箱についていたカーネルソースはコンパイルできる形では
>ありませんでしたか?
FLASH に書き込める事を確認したので、次はカーネルだ
と思っているところでした。まだ確認できていません
今度の週末にでもチャレンジします。
>MontaVista Linux 自体は GPL なので、玄箱にはコンパイル
>できるソースがついているだろうと期待しているのですが。
まだ未確認です。
ヘッダファイルが足りないということでしたが、
とりあえず、kernel/include/melco というディレクトリは存在しています
>フラッシュ上のカーネルの書き換えは、技術的には簡単な
>のですが、カーネルの構築に失敗した等の危険を考えると、
>実質的に書き換え不可能だと思い始めています。
書き換えができれば、本物のハッカーかと。(社員除く:-)
>それより、作成したカーネルを HDD 上においておき、フ
>ラッシュから起動した後に HDD 上のカーネルで再起動す
>ることができれば、安全にカーネルの入れ替えが可能なの
>ではないかと思い、その方法を考えてみたいと思っていま
>す。
報告をお待ちしてます。
04/03/05(金) 01:40:45 投稿者[たつや] [No.57]のスレッド内
- 【No.59】 タイトル[Re: Flash ROM について]
【No.58】に対する返信
- >たつやさん、いつも参考になる書き込みありがとうございます。
とんでもないです。こちらこそ、お世話になってます。
>FLASH に書き込める事を確認したので、次はカーネルだ
>と思っているところでした。まだ確認できていません
>今度の週末にでもチャレンジします。
よろしくおねがいします。
>ヘッダファイルが足りないということでしたが、
>とりあえず、kernel/include/melco というディレクトリは存在しています
バッファローで手を加えたり、追加したドライバのソースには、
#include <melco/melco_hwctl.h>
というヘッダファイルをインクルードしているところがいくつか
ありますが、この melco_hwctl.h が見あたらないんです。
おそらく、その kernel/include/melco の下に入っているべき物
だと思うのですが。
>書き換えができれば、本物のハッカーかと。(社員除く:-)
後先考えずに書き換えて病院送り、、、なんてのなら私は
得意なのですが :-)
>報告をお待ちしてます。
akmem の採っている方法だとカーネルにパッチを当てなけ
ればなりませんが、今回はそれができないのでモジュール
として後からロードできるように作らなければならないと
ころが難関だと思っています。仕組みもまだよく理解でき
ていませんし。
あまり期待しないでお待ちください。
04/03/06(土) 01:39:48 投稿者[山下康成] <http://www.yamasita.jp/linkstation>
[No.57]のスレッド内
- 【No.61】 タイトル[Re: Flash ROM について]
【No.59】に対する返信
- >>FLASH に書き込める事を確認したので、次はカーネルだ
>>と思っているところでした。まだ確認できていません
>>今度の週末にでもチャレンジします。
Monta Vista からカーネルのソースを入手するには、
MontaVista Linux Professional Edition の
MontaVista Linux Preview Kit を入手すればいいのですかね?
>バッファローで手を加えたり、追加したドライバのソースには、
>
>#include <melco/melco_hwctl.h>
>
>というヘッダファイルをインクルードしているところがいくつか
>ありますが、この melco_hwctl.h が見あたらないんです。
>おそらく、その kernel/include/melco の下に入っているべき物
>だと思うのですが。
melco_hwctl.h は玄箱に付属 CD の kurobako100src.tar.gz にも
入っていませんでした。
04/03/06(土) 04:38:10 投稿者[たつや] [No.57]のスレッド内
- 【No.63】 タイトル[Re: Flash ROM について]
【No.61】に対する返信
- >Monta Vista からカーネルのソースを入手するには、
>MontaVista Linux Professional Edition の
>MontaVista Linux Preview Kit を入手すればいいのですかね?
そうです。ほかにも方法はあるのかも知れませんが、私は
Preview Kit からカーネルソースを入手して使っています。
>melco_hwctl.h は玄箱に付属 CD の kurobako100src.tar.gz にも
>入っていませんでした。
そうでしたか。
このカーネルの「差分」は、「バッファローが手を加えたもの」
だと私は書いていましたが、それ以外にも drivers/{scsi,usb}
や、drivers/ide の一部のファイルなど、MontaVista Linux
(2.4.17) より新しいバージョンのものが入っていました。
多分、USB 2.0 の対応や IDE のパフォーマンスをあげるため
なんでしょうね。drivers/usb は Linux の 2.4.20 のものが
使われているようです。
(余談ですが、このバージョンの usb ドライバを使ったところ、
わたしの持っている USB NIC (GREEN HOUSE の USB100B)を動
かすことができました。)
04/03/07(日) 07:56:53 投稿者[はまじん] [No.57]のスレッド内
- 【No.67】 タイトル[Re: Flash ROM について]
【No.63】に対する返信
- まだ、手元に玄箱を持っていない、はまじんです。(今は何処にも無いですね(^_^;)
>(余談ですが、このバージョンの usb ドライバを使ったところ、
>わたしの持っている USB NIC (GREEN HOUSE の USB100B)を動
>かすことができました。)
ってことは、NICの2枚挿しOKという事ですね。
これで、色々と遊べそうですね。\(^O^)/
貴重な情報をありがとうございました。