問題タブ [aslr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 命令のタイムスパンを決定することは可能ですか?
質問がありますが、概念が存在する場合、適切な用語が本当にわからないため、Google で検索できませんでした。私の質問はこれです。
C に 1 つのインライン アセンブリ命令を実行する while ループがあるとします。
次に、その出力をそれぞれ printf で印刷します。しかし、「時間」が正確に 1 秒に達したときを判断することは可能でしょうか?
私はASLRについていくつかの調査を行っています。ランダム化が互いに正確にX秒離れて発生するかどうかを確認することにより、各ランダム化の間に固定のタイムスパンがあるかどうかを確認したいと考えています。
読んでくれて/助けてくれてありがとう。
linux - ASLRの実装
ASLRがバッファオーバーフロー攻撃の防止にどのように役立つかについて読んだばかりで、その実装を見てみたいと思います。
誰かが私が探し始めることができる場所についていくつかの指針を提供できますか?同じことに関連するより多くの読み物に私を向けることができれば、私もそれが大好きです。
c++ - プリコンパイル済みヘッダーと ASLR の何が問題になっていますか?
いくつかのサイトで、プリコンパイル済みヘッダーとアドレス空間レイアウトのランダム化に互換性がないことを読みました。それらに互換性がない理由は何ですか? それを修正するには何が必要ですか?
私の質問は、OS に依存しないことです。これは、grsecurity を使用する Linux および新しい Windows バージョンの問題であると聞きました。(そして、他に ASLR があるかどうかはわかりません。)
linux - メモリアドレスのランダム化を無効にする
多くのポインタを使用するバイナリをデバッグしようとしています。エラーをすばやく把握するために出力を確認するために、オブジェクトのアドレスとそれに対応する値を出力することがありますが、オブジェクトのアドレスはランダム化されているため、このクイックチェックの目的が損なわれます。プログラムを実行するたびに同じ値を取得できるように、これを一時的/永続的に無効にする方法はありますか?
おっと。OSはLinux fsttcs1 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011 x86_64 GNU/Linux
aslr - 異なるオペレーティング システム間で ASLR を比較するにはどうすればよいですか?
アドレス空間レイアウトのランダム化 (ASLR) は、プロセスのアドレス空間で、通常は実行可能ファイルのベースとライブラリ、ヒープ、およびスタックの位置を含む主要なデータ領域の位置をランダムに配置することを伴うコンピューター セキュリティ手法です。
ウィキペディアからの説明です。
キーデータ領域の位置の「ランダム性」を推定することによって、2 つの異なる OS での ASLR の有効性を推定するのは公平ですか?
ASLR の有効性を比較できる他の測定可能な要因はありますか? 続行する方法に関するヒントはありますか?
delphi - Delphi での ASLR と DEP、見分け方は?
http://blogs.msdn.com/b/michael_howard/archive/2007/04/04/codegear-s-new-delphi-2007-supports-aslr-and-nx.aspxから、私は {$SETPEOPTFLAGS $140 を使用していますプロジェクト ファイルのプログラム名のすぐ下に } を追加して、アドレス空間レイアウトのランダム化 (ASLR) と DEP を取得します。
フラグが PE に設定されているかどうかは、どうすればわかりますか? PeStudio には情報があるようですが、機能していないようです。
ありがとう。
android - Android に何らかの ASLR 保護はありますか?
プログラムのインスタンス間で同じ関数アドレスを持つライブラリに誰かがアクセスできるかどうかを知りたいですか?
c - ASLR ブルートフォース
練習のために、自分のマシンで ASLR 実装をブルートフォースしようとしています。まず、ASLR がオンになっていることを確認します。
私が使用しているマシンは次のとおりです:-
私のプログラムは次のように単純です。
これを利用するために、次のように環境変数を作成します。ご覧のとおり、リバース シェルのエクスプロイト コードを含む非常に巨大な nop スレッドがあります。
次の C プログラムを使用して、環境変数のアドレスを見つけます。
としてアドレスを取得します0xbfefadfd
。
リターンアドレスのオーバーフローには76 bytes of something
+がかかることがわかりました4 bytes of the return address
。だから、私はブルートフォースするために: -
予想どおり、セグメンテーション違反のログは取得されますが、プログラムを約 30 分間実行した後でもリバース シェルは取得されません。ここで何か間違っていますか?
c - Mac OS X Snow Leopard で ASLR を無効にする
基本的に、Mac OS X Snow Leopard で ASLR を無効にし、gcc を使用してバッファ オーバーフローとスタック オーバーフローを処理したいと考えています。ASLRを無効にする方法を知っている人はいますか?
windows - 非認識実行可能ファイル用の ASLR および Windows システム DLL は?
マイクロソフトの記事から:
アドレス空間レイアウトのランダム化 (ASLR)
ASLR は、システムの起動時に実行可能イメージをランダムな場所に移動するため、エクスプロイト コードが予測どおりに動作することが難しくなります。コンポーネントが ASLR をサポートするには、そのコンポーネントが読み込むすべてのコンポーネントも ASLR をサポートする必要があります。たとえば、A.exe が B.dll と C.dll を使用する場合、3 つすべてが ASLR をサポートする必要があります。既定では、Windows Vista 以降ではシステム DLL と EXE がランダム化されますが、ISV によって作成された DLL と EXE は、/DYNAMICBASE リンカー オプションを使用して ASLR をサポートするように選択する必要があります。
よくわかりません。Windows 上のすべてのプロセスによってロードされる基本システム DLL を取り上げNtDll.dll
ますkernel32.dll
。
非対応の実行可能ファイルがある場合、これらのシステム DLL は ASLR を使用しますか? つまり、この実行可能ファイルは、Win 7 でシステムを再起動するたびに異なるベース アドレスにロードされますか? それとも、Win XP のように、システムの再起動後に常に同じベース アドレスにロードされますか?
私の言いたいことをより明確にするために:私の典型的なダミープログラムの起動スタックは次のようになります:
の asmBaseProcessStart
を見ると、XP ボックスに次のように表示されます。
今、私が興味を持っているのは次のことです:
Windows XP では、このマシンを何度再起動しても、アドレスは常に0x7C817054 になります。ASLR を使用して Win7 を使用している場合、kernel32.dll をロードする実行可能ファイルがASLR に対して有効になっていない場合、このアドレスは再起動ごとに変更されますか?
(注: 私にとって、このアドレスが役立つマイナーなユースケースは 1 つだけです。Visual Studio では、アセンブリ レベル関数の「データ ブレークポイント」、つまりブレークポイント @ 0x7 のみを設定できます。 . - 特定の ntdll.dll または kernel32.dll 関数でブレークしたい場合、Windows XP では、再起動の間にブレークポイントを調整する必要はありません.ASLR が開始された場合 (この質問の範囲)、変更する必要があります再起動間のデータブレークポイント。)