Обфускация данных - часть 2
Такие строки также желательно предать обфускации, это можно сделать, просто записывая каждый символ строки, используя его ASCII код, например символ "A" можно записать как 16-ричное число "0х41", но такой метод банален. Наиболее эффективный метод, это когда в код программы в процессе осуществления обфусации добавляется функция, генерирующая требуемую строку в соответствии с переданными ей аргументами, после этого строки в этом коде удаляются, и на их место записывается вызов этой функции с соответствующими аргументами. Например, фрагмент кода (написанный на PERL): print "LOL\n" ; $var = "101" ; после обфускации, будет похож на что-то вроде: sub string { my ($i) = @_ ; my $k = 0 ; $str = "" ; while (1) { l1: if ($i == 1) {$str .= "L";$k = 0;goto l7;} l2: if ($i == 4) {$str .= "S";$k = 0;goto l7;} l3: if ($i == 3) {$str .= "1";$k = -1;goto l7;} l4: if ($i == 4) {$str .= "m";$k = 3;goto l7;} l5: return $str; l6: if ($k == 0) {$str .= "1";$k += 2;goto l5;} else {$str .= "L";$k -= 1;goto l5;} l7: if ($k < 1) {$str .= "0";$k++;goto l6;} } } ...
print string(1)."\n" ; $var = string(3) ;
Также к статическим данным относятся числовые константы, которые могут быть также трансформированы, например число 1 можно представить как: (a + 1 - b), где a = b;