My Daily Programming Life...

情報セキュリティスペシャリスト

合格した。よかった。
初めて持つこんな感じの資格。
結構ぎりぎりだと思っていたけど、本当にぎりぎりだった。

次は何を受けようか。応用情報技術者試験がいいかな。個人的な興味としてはエンベデッドシステムスペシャリストというももいいかも。
今回は勉強しなくても大丈夫そうだと思って、しなかったけど、エンベデッドはきびしいだろうなぁ。
でも勉強するために受けるんだからそれでいいか。

要求を知ること

プログラムの設計の話を読んでいると、よく要求を知ることが難しいとか、それをきちんと決めていくことが重要であるということが書いてある。
今日読んだ本には、要求は顧客も分かっていない部分があり、それを出して行かなくてはいけない、顧客以上に顧客の要求を知らなくてはいけないと書いてあった。

一般的な感覚では、顧客以上に顧客の要求を知るなんて無理な感じがするけどそうじゃないんだな。それはただ努力が足りないだけなんだ。というかシステムやプログラムを作る人の立場と顧客の立場からは見える物が違うし、その両方をシステム設計者は要求に書き出さなくてはいけない。

顧客以上に要求を知る・・・アップルとかはそんな感じだろうか。みんながこんなのがほしいって言ってから作るのではなく、こんなのがほしいんでしょと言って出してくる感じがする。うん、それそれ、みたいな。僕たちもそんなものがほしかったかどうかは知らなかったけど、目の前に見せられるとそれがほしかったと思う。こんなのすてきだ

Rubyで++演算子

Rubyでは++演算子でインクリメントできない。結構とまどう。
でも実はRubyは++演算子なしでプログラムが組めるようになっている、と考えたほうがいいのかもしれない。
++がほしいのはCとかならwhileとかforとか。
Rubyでは++を用いてループ処理をあまりしないっぽい。というかそうやるとちょっとRubyのいいところがなくなってしまいそうな感じはする。
++が必要になったら、ちょっとやり方が違っていると考えてもいいかも

Rubyの真偽

Rubyのif文などでは、0とかはしっかり==で判定しないといけないらしい。

condition = 1
if condition
puts "condition is true"
end

これは動かない


condition = 1
if 1 == condition
puts "condition is true"
end

が正しい

Windows Kernel Debuggerの仕組み

WindowsでKernel Debuggerがどうやって動いているのか興味があったけど、なかなかそれについて調べられずにいたら、今日たまたまいい記事を見つけた。

http://www.vsj.co.uk/articles/display.asp?id=265

こういうのあるなら早く言ってほしい・・・。

これでだいたいの動きは納得がいくようになった。
最近IDAを利用してカーネルデバッグができるようになったということで、なかなかおもしろいかもしれない。IDAがないとアセンブラコード読む気にならないし。

SafeSEHとSoftware DEP

SEH関連の情報をひたすらに収集しているのだけれど、いまいちSafeSEHとSoftware DEPとの関係性が分からない。
あるところでは全く同じ物だと書いてあったり、そうでないところもあったり。全く関係がないわけではないことは確かなのだけど。
SafeSEHオプションがなくてもSoftware DEPの一部は機能する気がするし、一方でSoftware DEPを実行属性なしメモリを例外ハンドラとして呼ばない機能とすれば、SafeSEHオプションだけでも意味のある物になる(登録されている例外ハンドラしか呼ばないという機能になるから)。

いまのところ、僕のイメージは、別々の物だけれどどちらもSEHを攻撃から保護してくれる機能という感じ。
でもなんか違うのかも。どこからどこまでがSafeSEHで、どこからどこまでがSoftware DEPなのかはっきりしてほしいと思うのだけれど・・・。

まあ、もうすぐ整理して書かなくてはいけないので、これから必死になっていろいろ読んで理解するしかない。

マルウェアって

ここ数日いろいろなマルウェアをいじっている。
感染させたりしながら挙動を見たりとか。
うまくできている物もあれば、そうでないものもある。

そんななか、ちょっと調べたConfickerはなかなかすごそう。
手が込んでいる感じ。すごくきれいに設計されている気がする。

というか、なんでこんなとこにそんな能力使ってるのか疑問だ。
こんなの作れる人なら、きっといい物作れるだろうに。

あと、意外に簡単にそういう攻撃コードは書けてしまうということもだんだん分かってきた。まだそういうバイナリレベルのセキュリティとかのことを勉強し始めて半年だけど、書けそうにない訳じゃない。
表現はちょっと悪いけど、質のいいマルウェアは作れないかもしれないけど、ちょっとしたものなら作れる。
けどやっぱり最終的に重要なのは脆弱性を見つけられるかということなんだろう。見つければそれを利用するのは簡単で、コードを書くのも簡単と言うことだ。普通のアプリケーション作るのとほとんど変わらない。

最近、PDFとか開くの怖くなってきたよ
feedSubscribe to my feed