переопределите пути hardcoded в исполняемых файлах

[1181656] Обратите внимание, что вам не следует этого делать: [12154] Над оболочкой открывается [1182084]tmp[1182085] для записи на дескриптор 2, затем открывается [1182086]tmp[1182087] для повторной записи на дескриптор 1, а затем выполняется [1182088]ls[1182089]. У вас будет два дескриптора [1182090]ls[1182091], указывающие на два отдельных описания открытых файлов в одном и том же файле.[12155] Если [1182092]ls[1182093] запишет и на свой дескриптор 1 (stdout для списка файлов), и на дескриптор 2 (stderr для сообщений об ошибках), то эти выходы перезапишут друг друга (предполагая, что [1182094]tmp[1182095] является обычным файлом, а не именованной трубкой). [12156]На самом деле вывод stdout будет буферизован, поэтому более вероятно, что он будет записан в конце перед выходом [1182096]ls[1182097], поэтому он перезапишет вывод stderr. [12157]Пример:[12158]Вы должны использовать:[12159]или[12160]В этом случае оболочка открывает [1182098]tmp[1182099] в fd 2, а затем дублирует этот fd на fd 1, так что оба fd 1 и 2 будут иметь одно и то же описание открытого файла на [1182100]tmp[1182101], и выходы не будут перезаписывать друг друга.[12161]
1
09.09.2018, 21:20
5 ответов
[119337] Я только что нашел [119661] эту реимплементацию цветов на основе птрейса: PRoot[119662].

Функция привязки - это именно то, что я искал!

Это надежнее, чем замена строк в исполняемом + может быть легко использована в скриптах...[119342]

0
27.01.2020, 23:17
[12145]/другое/dir/nmap[118716] должно быть той же длины, что и [118717]/usr/share/nmap[118718]. В противном случае можно использовать символы [118719]/[118720]:[12146]Новый путь не может быть длиннее. В [118721]/tmp[118722] всегда можно создавать симлинки, если это необходимо.[118189].
4
27.01.2020, 23:17
[118120]Ссылка на ответ @slm ...

Третьим способом сделать это [118666]может быть [118667] создание chrooted sandbox окружения для запуска исполняемого файла, в котором все, кроме исполняемых файлов, которые вы хотите вернуть, направлено на реальную вещь. Но это было бы сложно.

но я бы посоветовал получить исходный код и перекомпилировать его. (Или, если это несвободный код, заплатив поставщику за то, чтобы он раскрутил для вас какие-нибудь пользовательские исполняемые файлы ...)[118125].

1
27.01.2020, 23:17
[118068] В предыдущей жизни я делал [118558] аккуратно [118559] редактирование исполняемого файла для замены строк (замена должна быть короче, заполняться нулевыми символами!), используя двоичный редактор (например, [118560]hexl-mode[118561] в emacs/xemacs).

Если исполняемый файл содержит фиксированные пути, их часто можно переопределить переменными окружения (например, TMPDIR, EDITOR/VISUAL или подобные). или давая одобренные аргументы. Когда путь действительно фиксирован, я бы спросил причину. Могут быть объяснения по поводу безопасности или конфигурации, которые просто не должны быть переопределены. Конечно, это может быть просто [118562]лень [118563], но это маловероятно с программным обеспечением, упакованным вашим дистрибутивом, и предположительно проверенным...[118071].

0
27.01.2020, 23:17
[118114] Есть только два метода, которые я знаю, где вы сможете сделать что-то подобное.

Первый включает в себя создание ссылки в месте, которое было жестко закодировано в исполняемый файл. Поэтому в вашем примере ссылка должна быть создана по адресу [118664]/usr/share/nmap/[118665] с переуказанием на любое другое место. Этот подход потребует привилегий root'а и использования символических ссылок в этом месте.

Второй метод предполагает использование шестнадцатиричного редактора, в котором вы заходите в предварительно скомпилированные исполняемые файлы и хирургически изменяете двоичные файлы, добавляя их по своим собственным путям, вместо предварительно скомпилированных. [118119]

0
27.01.2020, 23:17

Теги

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