Как я могу добавить программу в другую, а затем запустить ее? - PullRequest
1 голос
/ 08 ноября 2010

Я имею в виду небольшую программу:

void main(void)
{
 printf("Password");
 gets(pass);
 if(!strcmp(pass,"Something"))
   //execute program in the same binary
 else
  printf("Wrong password");
}

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

Я выполняю некоторые действия в своей собственной программе, а затем запускаю вторую программу.

¿Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 08 ноября 2010

Я не уверен, что будет так легко соединить двоичные файлы.Имеют ли они в качестве одного исполняемого файла?

Если нет, то очень близким решением является использование одной из функций exec , если вы работаете в* Никс.

2 голосов
/ 08 ноября 2010

Вы не можете сделать это (что-то близко) так, как вам кажется. Вы можете справиться с этим, но это довольно много работы. По сути, вам нужно объединить две программы вместе с первой, чтобы она выполнялась. Затем вашей программе придется извлечь другой файл во временный файл, выполнить его, а затем удалить этот временный файл после его завершения (или, если возможно, использовать функции ОС, чтобы гарантировать его автоматическое удаление).

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

0 голосов
/ 08 ноября 2010

Используйте system код, подобный этому

system("binary_code.exe")

Может быть предпочтительнее указать путь к binary_code.exe, но ... что произойдет, если удалена внешняя программа ... выНужно разобраться с этим и принять это во внимание.

Кроме того, вы напрашиваетесь на проблемы, используя устаревший код gets, который можно использовать в буфере ... используйте fgets вместо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...