Как отключить рандомизацию адресного пространства для двоичного файла на Linux?

Делегат. EndInvoke документируется как , тыс должна назвать это (т.е. необходимый - еще протекает, происходят) - от msdn:

Важное Примечание

, Неважно, какую технику Вы используете, всегда называйте EndInvoke для завершения асинхронного вызова.

Управление. EndInvoke в порядке для игнорирования для методов "выпустил-забыл" - от msdn:

можно назвать EndInvoke для получения возвращаемого значения от делегата, если neccesary, но это не требуется.

Однако - если Вы используете Delegate.BeginInvoke и не хотите результат, рассматриваете использование ThreadPool.QueueUserWorkItem вместо этого - он сделает жизнь намного легче, и избежит боли IAsyncResult и т.д.

17
задан Phil Miller 21 September 2009 в 18:19
поделиться

3 ответа

Предположительно у вас есть какой-то демон который вызывает ваши параллельные программы на узлах. Если это так, вы можете заставить этого общего родителя отключать ASLR для любых дочерних процессов, которые он создает.

Посмотрите в исходниках GDB (7.0 или CVS Head), как это сделать. Суть его в том, чтобы вызвать личность (orig_personality | ADDR_NO_RANDOMIZE) после fork и до exec .

14
ответ дан 30 November 2019 в 14:17
поделиться

Есть ли причина, по которой вы не можете отобразить пространство общей памяти или использовать именованный FIFO ?

1
ответ дан 30 November 2019 в 14:17
поделиться

По крайней мере, в некоторых более ранних версиях ASLR в ядре Linux сохраняются смещения при разветвлении . Вместо того, чтобы отключать рандомизацию для ваших процессов, не могли бы вы просто расположить их в иерархии родительских / дочерних процессов, которая сохраняла бы одинаковые смещения между экземплярами двоичного файла, разветвленными одним и тем же родителем?

0
ответ дан 30 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: