LINUX.ORG.RU

Как программно изменить параметры запуска бинарника?


0

0

Господа, есть такая проблема: запускается бинарник с параметрами командной строки типа пользователь= пароль=. Как после запуска программно очистить/забить эти параметры, чтоб в списке процессов никто их не увидел? (ОС МСВС, среда программирования ПС Конструктор - на всякий случай). Заранее спасибо за помощь!

qqq

Видел картину, когда после запуска приложения оно меняет своё имя через (int argc, char **argv). Если через argv можно поменять имя программы, которое будет отображаться с списках процессов, то наверно входящие параметры тоже можно обнулить.наверно спараметрами можно надо также.

binr ★★
()

ййй

Если эта фишка пройдёт, напиши в форум плиз. Интересный прикол.

binr ★★
()
Ответ на: qqq от binr

И еще интересно, "общесистемно" запретить это делать программам как-нибудь можно?

free_serj ★★
()
Ответ на: комментарий от free_serj

qqq

Думаю надо искуственно вставлять функцию в main()

Мало вероятно, что это можно отключить стандартным способом. Ядро же не знает, прочитала прога свои входящие параметры или нет.

binr ★★
()
Ответ на: qqq от binr

> Для весх *nix систем наверно одинакого.

а открыть ссылку слабо? там написано что на bsd и sysv по-разному. про linux ничего. надо исходник ps глядеть.

anonymous
()

sendmail точно меняет:

 4142 ?        S      0:26 sendmail: accepting connections
 4151 ?        S      0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue

Shmuma
()
Ответ на: комментарий от anonymous

qqq

Можно попробовать в Линухе. Да, ps работает по разному. Но везде args одинаковый. Уверен, что везде будет работать если args редактировать.

binr ★★
()
Ответ на: комментарий от Zulu

qqq

man setproctitle, а также поиск в /usr/include ни чего не даёт

Есть стандартный кроссплатформенный способ - он правильный ;)

binr ★★
()
Ответ на: qqq от binr

> man setproctitle, а также поиск в /usr/include ни чего не даёт

setproctitle IMHO BSD-specific, хотя возможно есть и реализация
для Linux (но не в glibc)

> Есть стандартный кроссплатформенный способ - он правильный ;)

Да нету кроссплатформенного способа. Или ты продемонстрируешь?

Onanim
()
Ответ на: qqq от binr

Редактирование argc, argv[] напрямую не помогает. setproctitle(), sendmail просто не существуют (Linux ядро 2.4).

wildman
() автор топика
Ответ на: комментарий от wildman

ниего не понимаю пароль затирается легко вот так

else if (!strcmp(*argv, "-sp") || !strcmp(*argv, "--sql-user-password")) {
if (!(*++argv)) usage();
else {
int i=0;
if((sql_user_password=strdup(*argv))==NULL) {
printf("cant init sql-username-password"); exit(-1);
}


while((*(*argv+i)) != '\0') {
*(*argv+i)='X';
i++;
}
}

Aleks_IZA
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.