R0 CREW

Обфускация данных в протекторах?

Бывает ли в протекторах обфускация данных?
Пытаюсь понять как она может работать.
Допустим есть строка
[HTML]string=“238sdnr94”;[/HTML]
Протектор ее зашыфровал. Но как ему найти все ссылки на нее, чтоб вовремя ее расшифровывать перед исползованием ?
А если у нас есть такой код:

SOME_STRUCT st; st.Field44 = &string; (ссылка может быть и хитрей, типа косвенных смещений)
SomeWindowsAPI( & st )

Получается в данном варианте вообще сложно будет отловить момент обращения к строке или то что на нее ссылаются.

Протекторы работают немного по другому, обычно функции защиты строк реализуются через SDK протектора, вот например как это сделано в SDK VMProtect’a

Кодэ выглядит примерно таким образон:

void my_func()
{
   char* decoded_str = VMProtectDecryptStringA("This string is protected by VMProtect");
   printf("%s\n", decoded_str);
   VMProtectFreeString(decoded_str);
}

На этапе установки протектора на бинарь, прот находит все вызовы функции VMProtectDecryptString и определяет параметр передаваемый в них (т.е. адрес защищаемой строки), далее оригинальная строка шифруется, а вместо стабов VMProtectDecryptString и VMProtectFreeString протектор ставит необходимые функции расшифровки, шифрования.

Имелась ввиду обфускация на уровне скомпилированных РЕ.

Я вас прекрасно понял, протекторы работают именно так, как я вам написал выше, иначе им работать не имеет смысла. Если и есть какие-то решения данной задачи, то они скорее относятся не к протекторам, а к малварным крипторам