Рассмотрим код ниже:
char *args[3];
char *arg = "\x90\x90\x00\x90\x90";
args[0] = "/path/to/exe";
args[1] = arg;
args[2] = NULL;
execve(args[0], args, NULL);
Поскольку arg
завершается нулем в середине, когда execve создает новый образ процесса, все, что находится за пределами \x00
, не копируется для нового процесса. Есть ли способ «обмануть» execve, чтобы скопировать все, что находится за пределами \x00
?