タイトル/名前 | 更新者 | 更新日 |
---|---|---|
読書メモ/"Hacking: The Art of Exploitation" | msakamoto-sf | 2011-01-24 17:24:36 |
日記/2011/01/22/伊豆・大瀬崎 | msakamoto-sf | 2011-01-24 11:54:47 |
日記/2011/01/19/PerlのSwitchモジュールで"}continue"でsyntax error | msakamoto-sf | 2011-01-19 22:19:23 |
日記/2011/01/18/ソフトウェア開発で「ぽっち担当」はやっぱりトラブルの元 | msakamoto-sf | 2011-01-18 10:58:14 |
技術/Windows/アイコン画像ファイル(.ico)フォーマットメモ | msakamoto-sf | 2011-01-15 18:28:59 |
読書メモ/「OpenSSL 暗号・PKI・SSL/TLSライブラリの詳細」 | msakamoto-sf | 2011-01-15 18:24:30 |
日記/2011/01/13/きつめの記事一つに頭ガツーンとやられたくらいで | msakamoto-sf | 2011-01-13 19:37:23 |
日記/2011/01/12/SNS系のツールって難しい・・・ | msakamoto-sf | 2011-01-12 20:30:37 |
C言語系/C++/R0625 "pure virtual function call" と __purecall | msakamoto-sf | 2011-01-11 14:48:43 |
読書メモ/"Designing BSD Rootkits" | msakamoto-sf | 2011-01-09 13:32:16 |
購入したのはLiveCD付属の原著第二版。日本語訳されているのは第一版です。
内容を一言で表すなら、
ドキドキ ☆ H ☆ 初体験!
ってとこでしょうか。
1/22-23と伊豆・大瀬崎にダイビングしてきました。
前回は7月のちょうど海の日連休だったので人ごみが凄かったですが、今回は真冬ということで空いていました。透明度も良好で、ゆっくりとダイビングを楽しめました。
コメントが中にあると発生する可能性があるらしい。
ソースコードフィルタで使ってるのか知らないが、 Text::Balanced というのを使ってて、それにpatch当てればOKだとか云々。
うん、もういいよ。
あれでしょ?Larry Wall的には不要と思われたからそもそもswitch文が無かったんでしょ?
じゃぁ、Perl5ではswitch使うな、っちゅーことで。
LarryWallの哲学から外れたことしようとすると、複雑なモジュール依存で構築された砂上の楼閣、僅かなバグであっという間にドツボにハマるという実例。
ソフトウェア開発とか、組み込み機器の品質保証の試験担当とかで、ある作業単位を一人で担当させるのはトラブルの元、とゆー話。
昨日、旧知の友人とお酒を飲んでいて出てきた話。その友人は数年前、とある通信インフラのシステム試験を担当していたらしい。
万におよぶ試験項目を作り上げ、試験していくわけだが、なんかいきなりそれを「ぼっち担当」でやらされたらしい。
「通信インフラの基盤システムの試験を、一人に任せるなんてありえないっしょ」と友人はボヤいていた。実際、上司に「自分は人間っすよ、間違える可能性もあるっすよ。一人は危ないっす」と増援を要請したが、叶わなかったらしい。
ソフトウェア開発やってた時も感じたが、いかんせんコンピュータシステムでは「抜けがない、漏れがない」点が重要視される。
が、それを開発している人間は、人間である以上ミスをする可能性をゼロには出来ない。
ということで、やっぱり「ぼっち担当」は危ないなーというのを友人の話を聞いていて痛感した。
なんというか、「ぼっち担当」って「エラー処理してないソースコード」並に危険だなーと。あらゆるエラー状態が頭に入っていて、それを発生させないようあらゆる努力を惜しまなければ、まぁ「たまたま」正常動作しますよ、と。
ところが、人によってはそこまで手が届かず、不幸にしてエラーが発生してしまったりすると、あっという間にプログラムが異常終了してしまいますよ、と。
ああ、「ぼっち担当」でトラブルが発生する状況と似てるなぁ・・・。
"The Old New Thing" 参考リンク:
原著はオライリーなんですが、和書はオーム社からという組み合わせです。
和書の初版が平成16年。今から7年も前で、使っているOpenSSLのバージョンも0.9.6や0.9.7と大分時間が経っています。
しかしコマンドラインやAPIの基本的な構成や使い方は今でも参考になりますし、使用上の注意点、陥りやすい落とし穴の解説も分かりやすく丁寧です。
サンプルコードはありますが、自分で打ち込んで学ぶというよりは真似するときの台本にするタイプです。殆どのサンプルがそのままでは動作せず、他の章のサンプルを参考に継ぎ接ぎしたり鍵ファイルや証明書を手動で調整しないといけません。
また、SSLを構成する暗号技術の解説は表面的なものにとどまっているため、暗号技術の初学者には難易度が高いと思います。「暗号技術入門」( 技術/"暗号技術入門"読書メモ )を予習用教材としてお薦めしておきます。
ある程度の基礎知識があることを前提に、OpenSSLを使うときのガイド兼ヒント集みたいに使うと便利そうな一冊です。
人間の根っこが変わるわけねーだろ。
日経とかダイアモンドとかの経済誌とかビジネス誌に出てくる、厳しい論調とかキツメの物言いの記事にガツーンとやられたくらいで基質とか性格とかやる気とか人生観とかホイホイ変わるようだったら、もうちょい楽観的な世の中になってるんじゃねーの?ってかその程度で人間心理がころころ上書きされるようだったら、なんとおっかねー洗脳社会だっつーことになる。
変化は、もっとゆっくり、地を這う蛇のように、ほんの僅かな音だけ立てて、姿を見せずに忍び寄ってくる。変化はあまりにも僅かすぎてその途中では認識できない。
認識できた時には、変化が終わっていて目の前を覆い尽くすほどになってる。
劇的な一瞬のイベントで変わったと見えても、それは錯覚で、すぐにぶり返しが来る。
でも本当の変化はその存在に気づかれない速度で徐々に忍び寄ってくる。
短期間で、自分が思ったように/相手が思ったように 人間の心を劇的に変えることが出来ない。それに思い悩んでもしょうがない。わずか数時間、数十冊のビジネス書・自己啓発書を読んだところで、目の前に広がる圧倒的な現実に立ち向かうなんて凡夫には不可能だ。潮の流れに逆向きに泳いだところで、力尽きで溺死するのが関の山。
それよりも、予想できない方向への変化が、気づかないほどゆっくりとした速度で進行していること。まずそれがあるかどうか、丹念に調べておきたい。制御できない自分の心の動きを、相手との会話に反応する自分の心を、じっくりねっとりと注視しながら。
自分は全くSNS系のツールはやっていないが、身内で仕事柄活用している人がいる。
で、昨日その人のSNSに関する愚痴を聞いてきたのだが、まぁコンピュータネットワーク、顔が見えない、テーブル向かいあわせで話せない環境ならではか、いろいろ人付き合いに気を使ったり、サークル的なコミュニティを始めたものの引き時が掴めないし切り出し方が難しくて弱ってる、仕事が忙しくなるとSNSでの返信が難しくなって、人付き合いのトラブルに繋がってたり、などなど。mixiとかTwitterとか、複数使ってて、それぞれでつながりがあって、一つのツールでの発言が、別のツール(=SNS)に伝わって、本人のあずかり知らないところで伝言ゲーム的に変形されたり、そこにネット上での勘違いとか色々加わって面倒なことになったりとか。
自分はあんまり、というかほとんどmixiとかTwitterに興味が湧かなかったので使ってないのだけれど、pixivは使ってるけどROMだし。
いやー、SNSの使い過ぎには注意が必要っすね。もうちょっと「疲れたから開店休業しちゃう!」ってーのを許容できる緩さがあるといーんでしょーけど。「SNSやめる」ってゆーアクション自体が周囲からそれぞれ勝手に解釈されて、「あの人は○○で○○だから辞めたんだ」ってーのが各人それぞれの頭の中で妄想されちゃって、悪い方向に尾ヒレがついてしまう・・・そーゆーリスク。まだまだ無視できる小ささでは無いようで。まぁ所属するコミュニティにもよるんでしょーけど。たまたまその人が、そういうリスクを無視できないようなコミュニティに所属してたりすると、辛いだろうなあ。
"The Old New Thing" p280-282で"__purecall"について紹介されている。 C言語系/呼び出し規約/x86 をまとめたこともあり、"XXYYcall"とくれば呼び出し規約のことか、と思ったが違うらしい。
ということでずっと気になっていたんですが、この度ようやくもやもやが晴れました。"__purecall"というよりはC++の実行時エラー R6025 "pure virtual function call" の方で有名になっているようです。
「実行時エラー」というあたりから、バグとしてはかなり厄介な印象を受けます。
で、この厄介なバグを回避するための結論を先に書いてしまうと「コンストラクタやデストラクタの中で仮想関数を呼ない」というのが複数箇所で書かれています。"The Old New Thing"の"What is __purecall?"記事で書かれていますし、"C++プログラミングの処方箋"(翔泳社, Stephen C.Dewhurust, 初版第一刷)の「鉄則75 コンストラクタとデストラクタにおける仮想関数の呼び出し」にも書かれています。
本記事では「コンストラクタやデストラクタの中で仮想関数を呼ない」の理論面について簡単に紹介し、実際にR6025が発生するサンプルコードを示し、アセンブラリストや実行時の内部データ構造を追うことで"__purecall"との関連を調べていきます。
環境:
OS: Windows 7 Professional 日本語版, 32bit CPU: Intel Core i3 RAM: 4GB Visual C++ 2008 Express Edition SP1 cl: Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 link: Microsoft (R) Incremental Linker Version 9.00.30729.01
参考図書:
参考URL:
もしも内容に間違いがあったら、メールなりブクマコメントなりでご指摘ください。
どこで見かけたのかは忘れちゃいましたが、2009年の12月頃にamazonで購入し、一年程本棚で眠ってましたが、この度ようやく読み終えました。
オフィシャルサイト:正誤表とかサンプルコードのダウンロードとか。
FreeBSD 6.0-RELEASEでのRootkit入門です。root権限を持ってることを前提に、カーネルモジュールやkvmでどんな悪戯ができるのかサンプルコード付きで書いてあります。system callをhookしたり、ファイルを隠したりTCPポートを隠したりとか。
ページ数は130p程度に収まっており、サンプルコードも短くて分かりやすいです。文章もあまり難しい英単語が出てこないので、読みやすいほうだと思います。
あくまでも「入門」ですし、FreeBSD 6.0が対象なので(初版は2007年)技術的な内容としては時代遅れかもしれません。
しかし、単純に「ちょっと裏側を覗いてみたいな」程度の好奇心を満たすのであれば、十分楽しめる内容になっています。
OSの裏側を覗くための入り口の一つとしておすすめできます。
読み手側の注意点としては、x86アセンブラや仮想メモリなどのアーキテクチャ、UNIXプログラミング、UNIX系OSの構造などその辺の基礎知識は必要です。また、サンプルコードの打ち込みをミスるとあっという間にkernel panicなので、DDBの使い方とかCrash Dumpの取得+kgdbでのオフラインデバッグとか調べておきましょう。