2010年10月14日

スタックオーバーフロー

"DEBUG HACKS"記載のスタックオーバーフロー事例の追試結果を示す。

 

 

       
  • sum.cを準備する(ソースは参考文献の"DEBUG HACKS"を確認のこと)
  •    
  • コンパイルする      
    $ make sum
    cc     sum.c   -o sum

     
  •  

  • 実行する
       
    $ uname -a
    Linux localhost.localdomain 2.6.18-53.el5PAE #1 SMP Wed Oct 10 16:48:18 EDT 2007 i686 athlon i386 GNU/Linux $ ulimit -c unlimited
    $ ./sum
    セグメンテーション違反です (core dumped)
    $ ls core*
    core.16163

     
  •  

  • gdbで読み込む
       
    $ gdb -c core.16163
    ...
    Program terminated with signal 11, Segmentation fault.
    #0  0x08048454 in ?? ()
    (gdb) p $sp
    $1 = (void *) 0xbf3c0000
    (gdb) info files
    Local core dump file:
            `/home/nekonoshin/proc/sum/core.16163', file type elf32-i386.
            0x00314000 - 0x00315000 is load1
            0x008f4000 - 0x008f5000 is load3
            0x008f5000 - 0x008f6000 is load4
            0x00a32000 - 0x00a34000 is load6
            0x00a34000 - 0x00a35000 is load7
            0x00a35000 - 0x00a38000 is load8
            0x08049000 - 0x0804a000 is load10
            0xb7fef000 - 0xb7ff1000 is load11
            0xbf3c0000 - 0xbffc0000 is load12
    (gdb)

     

load12(stack領域のダンプ)が0xbf3c0000 - 0xbffc0000。スタックポインター($sp)の値、0xbf3c0000はstack領域の範囲外。

参考文献

     
  • DEBUG HACKS, P.53, "HACK#9 デバッグに必要なスタックの基礎知識"吉岡弘隆, 大和一洋, 大岩尚宏, 安部東洋, 吉田俊輔, 株式会社オライリー・ジャパン, ISBN978-4-87311-4040    

0 件のコメント:

コメントを投稿

ラベル

Android Android-x86 apache Backup Blog CentOS DDNS Debian DIY DTM Eclipse Excel Fedora Firefox Google Chrome Hyper-V java Kreetingkard KVM Linux Linux Mint Linuxコマンド例 Linuxシステム管理 Linux管理 Minecraft Minecraft: Wii U Edition Nintendo 3DS nmap O'REILLY Office KB openssl OpenStack openSUSE openSUSE 12 Parted Magic patch(1) PC DIY PC自作 pgrep(1) PHP Picasa pmap(1) PMMP Postfix postgresql printer ps(1) pukiwiki QEMU RHEL rhel5 rhel6 samba sar(1) savscan(1) savupdate(1) Scientific Linux 6 security SELinux SEO showrgb(1) Slackware Linux SLES smbclient(1) smbstatus(1) snmpd(8) squid startx(1) stat(1) strace(1) SUSE syslogd(8) tac(1) tee(1) testdisk Thunderbird timezone tomcat touch(1) tr(1) trouble shooting tuning ubuntu uname(1) USB tethering USBブート USBメモリ vi(1) vim(1) virtualbox VMWare VMWare Player vmware server VMware Tools VNC Web Services Wii U Windows wordpress x window XAMPP イベント・祭り インターネット おもちゃ屋 カツカレー ギフト クリーニング店 ゲーム ゴミ コンビニ サンプルコード スプラトゥーン2 スポーツ スポット スマホ ソースコード その他 ダーツ ツールTIPS つぶやき ディスク設定 デジタルDIY デジタルガジェット デスクトップ設定 ドラッグストア トラブル トラブルシューティング ニュース ネットワーク設定 バス観光 バックアップ・リストア ビリヤード ブログパーツ プログラミング ブログ作成 ペット用品店 ホームセンター マンションギャラリー メダリーフ リモートアクセス設定 リラクゼーション レジストリ 為替 映画館 英語勉強メモ 横浜市 横浜市交通局 横浜矢向周辺 横濱たちばな亭 屋台 屋内プレイランド 屋内遊園地 温泉 花火 画像 海水浴場 外食 街猫 学校 楽天ウェブサービス 鎌倉 交通 公園 公共施設 国内x86サーバ 災害 雑貨店 参考文献 散髪 使い方 子供教室 死因 寺社 車関連 習い事 住居メンテナンス 出前 情報 食料品店 尻手駅前 新横浜 新横浜駅 新規出店情報 新築 新鶴見公園 新鶴見人道橋 神社 辛スナック 水族館 川崎 川崎駅 川崎駅周辺 川崎市南部市場 川崎大師 卓球 段葛 中古屋 中山ビル 釣り施設 鶴岡八幡宮 鶴見 鶴見神社 電気店 電車 統計 動物園 南武線 日枝神社 買い物 買物 博物館等 八景島シーパラダイス 美容・サロン 百貨店 病院 風呂 複合商業施設 保育園 本屋 漫画 漫画喫茶 矢向 遊園地