Mieszane wyrażenia logiczno-arytmetyczne (ang. MBA)
Zniekształcenie z założenia zmienia kod w taki sposób, aby pozostał on semantycznie równoważny. Oznacza to, że zachowuje on swoją funkcjonalność oraz dla tych samych danych wejściowych zwraca identyczne wyniki.
Mieszane wyrażenia logiczno-arytmetyczne to zniekształcenia zamieniające stałe wartości liczbowe lub podstawowe operacje w trudny do zbadania ciąg wyrażeń, zawierający połączone operatory arytmetyczne, logiczne i bitowe.
Rodzaje wyrażeń logiczno-arytmetycznych mogą być następujące:
- liniowe — zmienne występują wyłącznie w pierwszej potędze i nie są przez siebie mnożone.
- wielomianowe (wyższych stopni) — występuje mnożenie zmiennych lub są one podniesione do potęgi drugiej bądź wyższej.
- wykładnicze — zmienne występują w wykładnikach potęg.
- mieszane (lub złożone) — stanowią połączenie różnych rodzajów wyrażeń lub zawierają stałe liczbowe w wyrażeniach logicznych.
Kilka przykładowych tożsamości liniowych, które można spotkać w zniekształceniach, przedstawiono poniżej.
Mieszane wyrażenia logiczno-arytmetyczne spotykane w anomaliach mogą być naprawdę bardzo nietypowe. Ich poszczególne fragmenty są wielokrotnie zagnieżdżane poprzez zastępowanie kolejnych operacji ich alternatywnymi postaciami. Dodatkowo często są one połączone z innymi zniekształceniami.
Wykaz literatury
[1] Microsoft Corporation, microsoft.com/en-us/research/project/z3, 2026.
[2] Trail of Bits, Inc., Simplifying MBA obfuscation with CoBRA, 2026.
[3] Yongxin Zhou, Alec Main, Yuan X. Gu & Harold Johnson, Information Hiding in Software with Mixed Boolean-Arithmetic Transforms, 2007.