決定論的なローダーと共有オブジェクトのLDオプションはありますか?

決定論的なローダーと共有オブジェクトのLDオプションはありますか?

BeagleBone Blackの珍しい問題を解決しています。 「異常な」部分はデバッグの理由で段階的に実行され、SIGILL以前は存在しませんでした。

PIC と PIE により、アドレスは実行間で移動されます。 LDに決定的なロードを実行させるように強制したいと思います。アイデアは、次のことを行うことです。

LD_BASE_ADDRESS=0x1000 ./test.exe

または:

LD_ADDRESS_SEED=0x0000 ./test.exe

次に、乱数発生器に同じシードが適用されたかのように再現可能な結果を​​得る。

確認しましたld.so(8)マニュアルページに対応するオプションは表示されません。LD_USE_LOAD_BIAS似ているようですが、決定的な動作を提供するかどうかはわかりません。

プログラムとすべての共有オブジェクトを決定論的にロードするようにLDにどのように指示しますか?

ベストアンサー1

これはリンカーではなくカーネルによって制御されます。以下を使用してASLRを無効にできます。randomize_va_space:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

再度有効にするには:

echo 2 | sudo tee /proc/sys/kernel/randomize_va_space

setarch適用された適切な属性を使用して、個々のプロセスに対してこれを無効にすることもできます。

setarch $(uname -m) -R command

ASLRなしで実行されますcommand

おすすめ記事