難し過ぎ。しかし断念ではない。 『ハッカープログラミング大全』

とりあえずヒープも終え、メモリセグメントは終わりました。

今後復習するつもりです。  しかし、何度読んでも難しい物は難しいです。

 

だから、違う本で出来るだけ知識を蓄えた後に、もう一度も戻ろうと思います。

 

そこで!

紹介したい本が

 

『ハッカー・プログラミング大全』

この本は かの有名な  『愛甲健二』さんが書かれた、本です。

僕の中で一番尊敬しています。  

はぁい。ʕ̡̢̡ʘ ͜͡ʘ̲̅ʔ̢̡̢

    ⬆きもすぎ。      

 

 

さっきいった通り、僕はあくまで  ヒープ(heap), スタック(stack)をちゃんと理解したい

からこの本を手に取った訳なので、

 

スタックとヒープが書かれている所から見ていこうと思うのですが、

まさかいきなり root権限の取り方 とかはじまるとは思ってもいなかったですねぇ。

 

バッファオーバーフローしてroot権限を取るのかとかいまいちわからないので、

読んでみた所、setuid というのがありまして、 これがUNIX系ではroot権限を変えれると。

まぁ、使い方を誤ったら危ないですが、普通に考えたら使いやすいとか…。

☎  

☎┓ | ┏☎  

☎┓(^o^)┏☎  

☎┛ | ┗☎  

 

まぁ、そんなことする人いないので安心です。

 

うん。ほとんどスタックのことが書かれていない!!

 

って思ったら、次が スタックのことでしたねぇ。

 

stack buffer overflow みたいな?

簡単に言うと、

 

与えられたスタック以上に入力すると、すると

『セグメンテーション違反です』って出ます。

 

僕のLinuxでは、

f:id:reonreon3reon:20121016021300p:plain

 

ってかんじですねぇ。 分かりやすく

memory map なんかも書いてくれてますねぇ。

Backtraceってなんだっけ?

まぁ、とりあえず

 *** stack smashing detected *** 

  ⬆これが多分 『セグメンテーションエラー』ってやつですね。

 

あっ、ちなみに

./ex1 は  ./a.out 的なやつです。

gcc -o ex1 ex1.c  

だったはずです。

 

その右の  `python -c 'print "A"*600'`

っていうのは Pythonistaを 強調したいというかぁw

 

この本では  ./ex1 `perl -e 'print "A" x 600'`

って書いてあります。 

アルファベットの x が カケるって斬新ですね。

 

とりあえず、こういうバグを使ってどのようにユーザが用意したプログラムを実行させるのかは次項です。

 

感想:

 セグメンテーションエラーになったら

 バッファオーバーフロー出来てないような?