Я встраиваю bash в cpp. Может ли код bash быть скрытым (когда мы исполняем исполняемый файл, чтобы не видеть код bash). Простой код, который я использую:
#include <iostream>
#include <cstdlib>
using namespace std;
#define test1 "\
#!/bin/sh --posix \n\
echo \"2222222222222222222222222222222222222222222222222222\" \n\
"
int main()
{
system(test1);
return 0;
}
Без каких-либо встречных мер, когда мы использовали системные команды или метод "define", как показано выше, после компиляции мы можем сшить исполняемый файл и прочитать команды bash.
Трудно избежать использования определения.
Однако, если вы действительно хотите, чтобы это было скрыто от cat
или string
, вы можете это сделать.
Сделайте всю вещь константной строкой, но не той строкой, которую вы в настоящее время имеете. Вместо этого вручную просматривайте каждый символ и побивайте XOR с некоторым значением (0xA или 0x5 - хорошая ставка).
Когда вы хотите запустить системный вызов, снова создайте копию строки и не побитовое XOR, затем запустите систему на результат.
Конечно, любой, кто читает ваш код, действительно поднимет брови и задается вопросом, что вы делаете, что нужно зашифровать, но это позволит избежать того, что он будет видимым для сканирования ascii.
Обратите внимание, что это простая, конкретная реализация общего предложения в комментариях Пола Р.