• XSS.stack #1 – первый литературный журнал от юзеров форума

Разработка под ESXi

Пытаюсь запустить приложение, но получаю ошибку "Failed to resolve full path of the current executable []". Есть ли какие-то решения этой проблемы. У исполняемого файла достаточно привилегий для запуска.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пытаюсь запустить приложение, но получаю ошибку "Failed to resolve full path of the current executable []". Есть ли какие-то решения этой проблемы. У исполняемого файла достаточно привилегий для запуска.
Ванги тут нет. Исходники в студию. Может быть что угодно, например если в твоем аппе есть логика определения собственного пути, то на ESXi она может работать не так, как ожидается. Ядро виртуальной машины ESXi может работать с путями иначе, чем в других средах. И так далее. Так что show me the code. Можешь под хайд.
 
Нет исходников. Просто прекомпилированный файл. А вот там, где исходники есть выдает "./prog: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./prog)"
Я так посмотрел, вроде ESXi 7 работает на glibc_2.17, тоесть мне нужно тогда как-то статически линковать glib или как-то 2.17 вместо 2.34 заставить использовать
Исходники prog:
Код:
void main(){
    print("Hello World!");
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
...там, где исходники есть выдает "./prog: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./prog)"
Ну, правильно. Там где ты собирал апп, стояла glibc 2.34, а на таргете (eSXI) ее нет.
Я так посмотрел, вроде ESXi 7 работает на glibc_2.17, тоесть мне нужно тогда как-то статически линковать glib или как-то 2.17 вместо 2.34 заставить использовать
Совершенно верно. Путей несколько: либо ты статически собираешь апп на своей машине (компиляция или кросс-компиляция), и тогда оно будет включено в апп, либо собирай на eSXI, либо ставь требуемую версию либы в eSXI и настраивай пути к ней (LD_LIBRARY_PATH), либо делай даунгрейд либы у себя чтобы оно совпало по версии с таргетом, либо если eSXI поддерживает какую-то контейнеризацию, попробуй упаковать все в образ.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Совершенно верно. Путей несколько: либо ты статически собираешь апп на своей машине (компиляция или кросс-компиляция), и тогда оно будет включено в апп,

Не очень надежный способ, потому как если собрать с ключем -static, то прилинковать параллельно динамическую библиотеку в некоторых случаях будет весьма непросто.
В общем не очень здорово статически линковать glibc, т.к. те либы которые линкуются динамически на машине где прога будет исполняться, могут быть расчитаны под другую версию glibc. Глюки могуть быть очень интересные и непредсказуемые.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
возми свой сорец - декомпильни в ассам под платформу на которой юзаешь - это в 90% amd64
и собирай бинарник уже из сорца на ассаме. попутно узнаешь много нового
 
Мне просто нужно чтобы программа запускалась без всяких зависимостей. Размер исполняемого файла в этом случае не важен. Как сделать её полностью self-contained?
 
возми свой сорец - декомпильни в ассам под платформу на которой юзаешь - это в 90% amd64
Это слишком продвинутый вариант. Есть что попроще?
 
Че сразу локер-то😅. Под ESXi ещё и другие программы нужны иногда. К тому же, раз у других получилось под ESXi локер создать, значит таки можно сторонние программы под ESXi создавать и они там будут запускаться.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
сокс прокинь с esxi на свой сервак в инете и не заморачивася тогда, если файрволл в сети используй http транспорт и 80 порт для соединения и все, смысл собирать это под esxi отпадет сам собой
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не очень надежный способ, потому как если собрать с ключем -static, то прилинковать параллельно динамическую библиотеку в некоторых случаях будет весьма непросто.
В общем не очень здорово статически линковать glibc, т.к. те либы которые линкуются динамически на машине где прога будет исполняться, могут быть расчитаны под другую версию glibc. Глюки могуть быть очень интересные и непредсказуемые.
Я понимаю, поэтому дал разные варианты. Но за пояснение -- спасибо.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
например для ESXi 6.7+ можно использовать образ conanio/gcc46 - Ubuntu 12.04.5, GCC 4.6.3, glibc 2.15
ты тестил или ты просто так думаешь?
 
Пробовал компилировать на Ubuntu 16.04 (x86_64 Linux 4.15.0-142-generic), GCC (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609, Glibc (Ubuntu GLIBC 2.23-0ubuntu11.3) 2.23.
Ошибка "GLIBC_2.34 not found" исчезла. Да и вообще никаких ошибок не показывает. Но при всем этом в консоль всё равно ничего не выводиться.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Попробуй после printf'а добавить fflush(stdout);

т.е. что-то вроде
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(void)
{
printf("hello xss.pro \n");
fflush(stdout);

while(1)
{
}

}
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх