Информационная безопасность


Обфускация управления - часть 7


for ($i = 1 ; $i =< n - 1 ; $i++) #PERL { # тело цикла }

после простой развертки:

for ($i = 1 ; $i < n - 1 ; $i++) { # тело цикла } # тело цикла

  • Разделение циклов, цикл состоящий из более чем одной независимой операции можно разбить на несколько циклов (которые должны выполняться одинаковое количество раз), предварительно разбив на несколько частей, его тело. Например, следующий цикл (PERL):

    for ($i = 1 ; $i < n ; $i++) { $a[$i] += $c ; $x[$i+$i]=$d+$x[$i+1] * $a[$i] ; }

    после разделения, может быть представлен: for ($i = 1 ; $i < n ; $i++) { $a[$i] += $c ; } for ($i = 1 ; $i < n ; $i++) { $x[$i+$i]=$d+$x[$i+1] * $a[$i] ; }

    Желательно осуществлять над исходным циклом последовательно все вышеперечисленные трансформации циклов, это позволит усложнить его статический анализ.

    Обфускация последовательности. Заключается в переупорядочивании блоков (инструкций переходов), циклов, выражений.




    - Начало -  - Назад -  - Вперед -