問題タブ [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.
aslr - Windows PE バイナリで ASLR を有効にする方法は?
実行可能ファイルのアドレス空間レイアウトのランダム化を有効にするにはどうすればよいですか?
注:私はVisual Studio、または/dynamicbase
コンパイラオプションを提供するコンパイラを使用していません。
この説明では、ASLR を有効にする機能をコンパイラに追加するとします。
その他の PE フラグ
設定方法を既に知っている他の Windows 実行可能イメージ オプションがあります。たとえば、次にIMAGE_FILE_NET_RUN_FROM_SWAP
フラグを立てます。PE バイナリ ヘッダーで PE オプションを設定します。
アドレス空間レイアウトのランダム化を有効にするにはどうすればよいですか? PEフラグですか?アセンブリ マニフェストエントリですか。
ボーナス
実行可能ファイルを NX (実行なし) にオプトインするにはどうすればよいですか?
fork - 新しい子をフォークするときの ASLR
子をフォークしているときに、ASLR が親から継承されていることがわかります。
たとえば、アンアンプする方法はありますか: 子プロセスからのlibc、
ASLRがlibcに影響を与えるように、もう一度mmapしますか?
子プロセスで ASLR を実行できるようにしたいのですが、
どういうわけかダイナミックローダーがシンボルを再度解決する必要があるため、不可能に聞こえることはわかっています。
成功できるか心配
ありがとう
windows - MapUserPhysicalPages (AWE 再マッピング) は ASLR に影響しますか?
APIはMapUserPhysicalPages
VirtualAlloc と を使用して割り当てられたアドレスを取得しMEM_PHYSICAL
、MEM_RESERVE
ページを一連の物理ページ フレーム番号に再マップします。これは、プロセスの AWE サポートを提供するように設計されています。
私には、これは、再マッピングによってメモリが固定仮想アドレスに配置されるケースのように思えます。したがって、既知のメモリ領域をターゲットにすることで ASLR がバイパスされる可能性があります。
私はこの仮定で正しいですか?バイパスの可能性は、ユーザー モードの ASLR レベルまたは KASLR レベルでしょうか?
gcc - -fPIC と -s の両方が使用されています - おそらく矛盾していますか?
特定のプロジェクトで、次のコンパイラ オプションが一度に使用されるのを見ました。
-fPIC
ここで と を一緒に-s
使用することは矛盾していますか? そうでない場合、なぜですか?
macos - OS X で ASLR を無効にする文書化された方法は?
OS X 10.9 (Mavericks) では、文書化されていない属性を呼び出して渡すことでプロセスを起動すると、単一プロセスのアドレス空間レイアウトのランダム化を無効にすることができます。このような:posix_spawn()
0x100
(これは、 Apple の GDB ソースからリバース エンジニアリングされたものです。)
このような文書化されていない機能の問題点は、予告なしに消えてしまう傾向があることです。このスタック オーバーフローの回答によると、動的リンカーdyld
は環境変数を参照するために使用されますDYLD_NO_PIE
が、これは 10.9 では機能しません。同様に、静的リンカは明らかに--no-pie
オプションを使用していましたが、これはもはや当てはまりません。
ASLRを無効にする文書化された方法はありますか?
(ASLR を無効にする必要があるのは、アドレス ベースのハッシュ テーブルやBIBOP ベースのメモリ マネージャーなど、動作がオブジェクトのアドレスに依存するコードのテストおよびデバッグ時に再現性を確保するためです。)
c++ - mingw を使用してコードブロック内の exe で ASLR、DEP、および SafeSEH を有効にするにはどうすればよいですか?
ASLR のリンカ オプションを使用してみ-dynamicbase -pie
まし-e_mainCRTStartup
たが、ollydbg にロードすると、常に 400000 でロードされます
c - -fPIE でコンパイルされた実行可能ファイルのベースアドレスを強制する
ちょっと変わった質問でここにいます。
exec
プログラムをロードする VirtualAddress を指定する方法はありますか?
例:
a.out
エントリポイントを持つ PIE0x460
です。
b.out
fork
&exec
のですが、「ねえ、セクションをa.out
にロードしたいので、エントリ ポイントは"..text
0x200000
0x200460
私は POSIXexec
関数ファミリー 、ld.so
、およびを見ましたld-linux.so.2
が、これを可能にするものは何も見当たりませんでした。
私の当面の解決策は、独自のリンカーを作成することですが、既にこれを実行できるものがあれば、私の人生はずっと楽になります。
ありがとう!