問題タブ [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.
encryption - エントロピーが低い場合のアドレス空間レイアウトのランダム化 (ASLR) の動作
< this > の質問によると、プロセス (cat など) は、アドレス空間のランダム化 (ASLR) のためにランダム プールからエントロピーを読み取ります。
ASLR の動作を確認するために、以下に示すようにエントロピーを手動で使い果たしました
- 1) cat /dev/random を使用して、利用可能なすべてのエントロピーを使い果たします。
- 2) cat /proc/sys/kernel/random/entropy_avail を実行して、利用可能なエントロピーを確認します。
2 番目の cat プロセスは、エントロピーが完全に使い果たされたにもかかわらず、ブロックされませんでした。したがって、エントロピーが十分ではなかったとしても、ASLR は正常に動作しているように見えます (?)。
私の質問は、エントロピーが本当に低い場合、ASLR の予想される動作は何ですか? /dev/random から読み取るランダムビットがないため、他のアルゴリズムを使用して内部的にエントロピーを生成しますか?
windows - ASLR は、dll のリベースが不要であることを意味しますか?
ASLRを使用する場合、ビルド中に dll をリベースしても意味がないと考えるのは正しいでしょうか。カーネルがロードするときに dll が再びリベースされるからです。
私たちのアプリケーションがターミナル サービス マシンで頻繁に使用されていることを懸念しています。そのため、ロード時にリベースが発生すると、DLL がロードされるプロセスごとにリベースされる可能性があります (セッションごとに 1 つのプロセスがあります)。そして、これにより、支払いを希望する以上のメモリ使用量とページングが発生します。心配する必要がありますか?
次のブログ投稿を見つけました。リベースは 1 回だけ行われ、システム全体で行われると書かれています: Matt Evans - メモリ節約のために ASLR を有効にしますか? . これに関する他の参考文献は見たことがありません。ASLR を使用し、ビルド中にリベースしない場合、ターミナル サービス ボックスでメモリの問題が発生しないことを確認したかっただけですか?
linux - ELF ファイルからアドレスのランダム化 (ASLR) を無効にする方法は?
解決済み: 解決 策は、パーソナリティ (0x40000) を呼び出すことでした。以下のコメントの詳細を参照してください。
ASLR フラグは ELF ファイル内のどこにありますか? 特定のライブラリ (.so) の ASLR を無効にする必要があります。objdump を使用してみましたが、その方法がわかりませんでした。
Android 4.4.4 では動作しないように見えるため、/proc を使用できないため、バイナリを変更しようとしています。
編集: 私は以下をコンパイルしました:
ASLR なし (PIE):
ASLR (PIE) を使用:
ただし、noPIE バイナリは実際にはランダム化されていません。
android - Phone Gap アプリで Address Space Layout Randomization (ASLR) を実装する方法
電話ギャップアプリを構築しています。私たちのアプリケーションは現在、インターネット、ギャラリー、カメラ、バックグラウンド サービスを利用しています。現時点では、クライアント側に機密レコードはありません (ただし、将来的にはそうなる可能性があります)。このため、アプリケーションの要件を作成している一部のクライアントは、Address Space Layout Randomization (ASLR) を利用しています。現在、これがすでに有効になっているかどうかはわかりません。これを電話ギャップ アプリに実装する方法、または ASLR をサポートする電話ギャップ プラグインはありますか?
https://en.wikipedia.org/wiki/Address_space_layout_randomization
hex - gproftools プロファイリングでの 16 進関数名
gproftools (Google プロファイラー) を使用した CPU プロファイリングの後、一部の関数名が 16 進値として表示されます。
https://groups.google.com/forum/#!topic/google-perftools/7sdO7wrPUpEの最後のコメントによると、問題はASLRによって引き起こされたように見えます が、一部の関数名が 16 進数値であり、他の関数名が正常である理由がわかりませんでした。
プロファイリングのサンプル出力。
16 0.40% 86.80% 16 0.40% 00007f05e018bc5d
16 0.40% 87.20% 36 0.90% _IO_file_xsgetn
16 0.40% 87.60% 16 0.40% __memcpy_sse2
16 0.40% 88.00% 16 0.40% __tls_get_addr
15 0.40% 88.40% 15 0.40% __GI___libc_free
15 0.40% 88.70% 15 0.40% __GI_strlen
c++ - ローカル変数のアドレスが毎回異なるのはなぜですか?
Google に問い合わせて、StackOverflow について調査しました。私の質問はmain()
、C++ プログラムで関数を入力して最初の変数を宣言すると、この変数のアドレスが実行ごとに異なるのはなぜですか? 以下のサンプルプログラムをご覧ください。
実行結果 1:
実行結果 2:
実行結果 3:
ご覧のとおり、実行ごとに異なる結果が得られます。割り当てられたメモリのアドレスに対応する出力の最初の行は、ヒープで発生するはずです。毎回異なるアドレスが割り当てられている場合、私には意味があります。ただし、2 行目に対応するローカル変数のアドレスを出力しても、結果は異なります。
一見すると、プログラムが物理メモリ アドレスを出力しているためだと思っていましたが、この投稿Virtual Memory or Physical Memoryは私の最初の考えを反証しています。プログラムの実行が「同じ」で、スレッドやユーザー入力などがない場合、異なるアドレスのメモリ割り当てがまだあるという理由はありますか?
テスト環境:
- Linux 14.04
- マック OS X 10.10
linux - Linux 上のスタックの ASLR エントロピー ビット
MITのプレゼンテーションで、さまざまな種類の ASLR 実装について説明しています。
たとえば、静的 ASLR の場合、スタックには 19 ビットのエントロピーがあると指摘しています。私の理解では、これは、スタック ベース アドレスをランダム化して 2^19 の異なる値を取ることしかできないことを意味します。
スタックに 19 ビットのエントロピーがあることを計算する方法を知りたいですか?
編集:
オンラインで確認したところ、Linux のスタック ASLR に関する説明が見つかりました。別の質問から学ぶと、関連すると思われるコードは次のとおりです。
ここが私の質問の理由を説明する適切な場所であるかどうかを尋ねたいですか?