Pull to refresh

Comments 5

Извиняюсь за тупой вопрос, но вот в декомпилированном коде непосредственно перед вызовом SetEnvironmentVariableA есть цикл, в котором в строке ищется "=", чтобы разбить строку на имя переменной окружения и значение. А если этого "=" не будет, то он так и будет сканировать память, пока не повезёт?

Судя по коду - да. Но это не единственная проблема. Например, согласно документации, поддерживается задание нескольких переменных среды, разделенных символом \b. Ho также по коду видно, что переменная может задаваться только одна. На практике на той версии - у меня работала только одна.

В тему статьи: в протоколе удалённой отладки GDB есть фича выполнения изнутри отлаживаемой программы некоторых (по белому списку) системных вызовов на хосте. Я вот не уверен, что мешает, например, недоверенному gdbserver'у внутри контейнера через спецфайлы Линукса вроде /proc/self/mem и /proc/self/maps получить доступ к процессу gdb разработчика, которым он приаттачился для отладки.

GDB также имеет возможность вызывать ptrace с ключами PTRACE_POKETEXT, что также эффективно дает перезаписывать исполняемую память процесса отлаживаемой программы (как результат, выполнение любого кода в ее контексте). Таким образом, в данном случае, мы не получаем большого преимущества, имея возможность выполнить отдельные сисколлы.

я думаю, что имелось ввиду наоборот: удалённый отлаживаемый начинает контролировать процесс-отладчик

Sign up to leave a comment.