トリコロールな猫

つくばラブ/国境無き猫モフ団/猫/水曜どうでしょう/JOCV/エルサルバドル/熱帯魚/…

トリコロールな猫

つくばラブ/国境無き猫モフ団/猫/水曜どうでしょう/JOCV/エルサルバドル/熱帯魚/日本庭園/盆栽/弓道/ビリヤード/'90HRHM/英語/スペイン語/インターネットセキュリティ/IT教育/どこに行っても猫探し

最近の記事

第六話:EBPとESP、スタック領域の使われ方

前回の「第五話:スタックとLIFO、だから何?(怒)」はスタック領域の意味の分からなさにキレて終わったわけですが、今回はスタック領域の使われ方について触れたいと思います。 第五話でも書いた通り、スタック領域は変数などの値の一時的な格納場所です。枕詞として、各関数ごとに場所が違う、というのもつきます。 例えばこのシリーズで出てくるmain_sub.exeのスタック領域は以下のようなイメージです。こんな風に分けておくことで、他の関数のことは気にせずに変数の値を入れ替えることが

有料
100
    • 第五話:スタックとLIFO、だから何?(怒)

      「第四話:CALL命令で起こること」で端折ったスタックの話です。 「スタック」という単語を(例えば情報処理技術者試験などの勉強をして)知っている人の知識としては、 1. 一時的に値を退避しておく場所である 2. Last In Fast Out(LIFO:最後に入れたものを最初に取り出す)である この2つが挙げられると思います。 1.は読んで字のごとくだからいいとして、2.については実際に見てみた方が早いでしょう。 ここで、新しい実行ファイルの登場です。ここからダウ

      有料
      100
      • 第四話:CALL命令で起こること

        今回はいよいよ佳境、CALL命令(とRET命令)についてです。 なぜCALL命令が佳境かというと、最終話で書くつもりのバッファオーバーフローを利用した古き良き攻撃手法は、CALL命令によるサブルーチンの呼び出しと、サブルーチンの処理を終えて元の関数に戻るRET命令がキモだからです。 CALL命令とは「第零話:まずは動かしてみる 〜ブレイクポイントとステップ実行〜」で述べた話を少し振り返ります。 このお話でサンプルとして使っている実行ファイルは、main()からsub()

        有料
        200
        • 第三話:ASLRの意味をデバッガで見てみる

          ※初めての方はまず「OllyDbgを使ってx86アセンブラとデバッガの基礎の基礎を学ぼう」と第零話「まずは動かしてみる 〜ブレイクポイントとステップ実行〜」をご一読ください。 目次のページに書いた通り、このシリーズではASLRという機能を無効にしたWindows 7を使っています。これを有効にしたり無効にしたりすると何が起こるかをデバッガで見てみます。 ASLRとは英語ではAddress space layout randomization、日本語では「アドレス空間配置

        第六話:EBPとESP、スタック領域の使われ方

          第二話:メモリマップから見るコードとスタックの場所

          (このノートは最後まで無料で読めます。投げ銭方式です) 今回はメモリマップの見方のお話です。 まずは第零話の「ブレイクポイント」の章と同じく、main()関数のところにブレイクポイントを設置して実行します。EIPがmain()関数の最初の命令の行を指します。 そこで[View]メニューから[Memory Map]を選択。 別のウィンドウにメモリマップが表示されます。 これは何かというと。このプログラムに与えられた仮想アドレス空間です。 例えば1行目が何を表している

          有料
          100

          第二話:メモリマップから見るコードとスタックの場所

          第一話:ステップイン/ステップオーバー/ステップアウト

          ※初めての方はまず「OllyDbgを使ってx86アセンブラとデバッガの基礎の基礎を学ぼう」と第零話「まずは動かしてみる 〜ブレイクポイントとステップ実行〜」をご一読ください。 第零話では「ステップ実行」をやってみました。この「ステップ実行」には、いくつかの種類があります。ステップイン・ステップオーバー・ステップアウトです。

          有料
          200

          第一話:ステップイン/ステップオーバー/ステップアウト

          第零話:まずは動かしてみる 〜ブレイクポイントとステップ実行〜

          (このノートは最後まで無料で読めます。投げ銭方式です) さて、なにはともあれOllyDbgを動かしてみましょう。 こちらのzipファイルをダウンロードし、展開して出てくるexeファイルをOllyDbgで開いてみてください。 ソースコードは以下のとおりです。 #include int sub(int i, int j) { int x = 0; x = i + j; return x; } main() { int a =

          有料
          300

          第零話:まずは動かしてみる 〜ブレイクポイントとステッ…