Mieszane wyrażenia logiczno-arytmetyczne (ang. MBA)

· Dawid Farbaniec

ethical.blue Magazine NaN. Anomalie i zniekształcenia

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.

Rysunek 1. Podstawowe tożsamości liniowe (kilka przykładów)

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.