Скрыть код bash, который находится внутри программы c plus plus
Я встраивать 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.
1 ответ
Будет трудно избежать использования определения.
Однако, если вы действительно хотите, чтобы это скрыто от cat
или же string
Вы можете сделать это.
Сделайте всю вещь константной строкой, но не той строкой, которая у вас есть. Вместо этого вручную пролистайте каждый символ и поразрядно присвойте ему значение XOR (0xA или 0x5 - хорошая ставка).
Если вы хотите запустить системный вызов, создайте копию строки и снова побитируйте ее XOR, затем запустите system для результата.
Конечно, любой, кто читает ваш код, действительно поднимает брови и удивляется тому, что вы делаете, что должно быть так зашифровано, но это позволит избежать проблемы его видимости для сканирования ascii.
Обратите внимание, что это простая, конкретная реализация общего предложения в комментариях Пола Р.