Каковы основные существующие подходы, чтобы скрыть значение литералов в коде, чтобы их нелегко было отследить с помощью шестнадцатеричного демпфера или декомпилятора?
Например, вместо того, чтобы кодировать это:
static final int MY_VALUE = 100;
Мы могли бы иметь:
static final int MY_VALUE = myFunction1();
private int myFunction1(){
int i = 23;
i += 8 << 4;
for(int j = 0; j < 3; j++){
i-= (j<<1);
}
return myFunction2(i);
}
private int myFunction2(int i){
return i + 19;
}
Это был всего лишь пример того, что мы пытаемся сделать. (Да, я знаю, компилятор может его оптимизировать и предварительно вычислить константу).
Отказ от ответственности: я знаю, что это вообще не обеспечит дополнительной безопасности, но делает код более непонятным (или интересным) для обратного проектирования. Цель этого - просто заставить злоумышленника отладить программу и тратить на это время. Имейте в виду, что мы делаем это просто для развлечения.