WindowsXPでaddress-space randomization

WindowsXPでaddress-space randomization (yoggy's diary)

  • windowsのバッチファイルだとこんな感じかな・・
    • 100回ループとかメンドクセ。 それくらいになると、IF文か、cscriptで書くのが楽かな・・*1

w:\Release>type printesp.bat
@echo off
for %%I in (0 1 2 3 4 5 6 7 8 9)do printesp.exe
for /L %%I in (1 1 10)do printesp.exe


w:\Release>printesp.bat
esp = 0338ff84
esp = 5f45ff84
esp = 54d2ff84
esp = 2419ff84
esp = 4918ff84
esp = 3f71ff84
esp = 19daff84
esp = 48c3ff84
esp = 51a2ff84
esp = 5568ff84

  • で、espがばらばらだと何がうれしいのってところは・・

スタックオーバーフローを突いて突っ込んだshellcodeを直接実行することが難しくなります。 (引用:yoggy's diary)

  • ってことで、この辺の話に行くことになると・・・
  • あくまでも難しくなるって程度で、共通する所なんかは残っちゃうってことかな・・、気が向くのを待ってみたりする (^-^;;


*1:

  • ご指摘いただきました。(じゃくさんありがとうございますヽ(´ー`)ノ )
  • Windows2000/XPから、FOR文が拡張されて楽ちんになってます
  • 以下、FOR文のHELPからの抜粋です
     FOR /L %変数 IN (開始,ステップ,終了) DO コマンド [コマンドパラメータ]
     セットは、ステップの量ごとに変化する開始から終了までの数列です。
     たとえば、(1,1,5) は 1 2 3 4 5、(5,-1,1) は (5 4 3 2 1) という数列になります。