MBA_esnhack
MBA_esnhack
arithmético-booléennes (MBA)
1
Au menu
Expressions linéaires
Expressions polynomiales
Exemple overkill
Attaques
Conclusion
2
“MBA”, was ist das ?
Expressions mixtes arithmético-booléennes (MBA)
3
Expressions mixtes arithmético-booléennes (MBA)
x + (y ⊕ z)
3
Expressions mixtes arithmético-booléennes (MBA)
x + (y ⊕ z)
5 × (x ⊕ y )2 − 3 × (¬x ∧ y )
3
Expressions mixtes arithmético-booléennes (MBA)
x + (y ⊕ z)
5 × (x ⊕ y )2 − 3 × (¬x ∧ y )
• Monstre de Frankenstein
• Croisement entre deux mondes
• Pas de règle de réduction simple
3
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
x + y = 2 × (x ∧ y ) − (¬x ⊕ y ) − 1
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
x + y = 2 × (x ∧ y ) − (¬x ⊕ y ) − 1
• Dissimulation de constantes :
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
x + y = 2 × (x ∧ y ) − (¬x ⊕ y ) − 1
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
x + y = 2 × (x ∧ y ) − (¬x ⊕ y ) − 1
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
x + y = 2 × (x ∧ y ) − (¬x ⊕ y ) − 1
• Anti-tamper
4
Expressions mixtes arithmético-booléennes (MBA)
• Objectifs :
• Obfuscation de fonctions :
x + y = 2 × (x ∧ y ) − (¬x ⊕ y ) − 1
• Anti-tamper
• Watermarking
4
Expressions linéaires
MBA “linéaires”
x ×y x2 11x
x 5 × (x ⊕ y ) + z 914
5
Génération d’expressions linéaires
MBA linéaires : génération
6
MBA linéaires : génération
x y x ⊕y x ∨y x ∧y
6
MBA linéaires : génération
x y x ⊕y x ∨y x ∧y
0 0 0 0 0
0 1 1 1 0
1 0 1 1 0
1 1 0 1 1
6
MBA linéaires : génération
x y x ⊕y x ∨y x ∧ y a
0 0 0 0 0
b 0
0
0 1 1 1 0 c =
0
1 0 1 1 0 d
1 1 0 1 1 0
e
6
MBA linéaires : génération
x y x ⊕y x ∨y x ∧ y a
0 0 0 0 0
b 0
0
0 1 1 1 0 c =
0
1 0 1 1 0 d
1 1 0 1 1 0
e
2. ⇔ Résoudre le système :
6
MBA linéaires : génération
x y x ⊕y x ∨y x ∧ y a
0 0 0 0 0
b 0
0
0 1 1 1 0 c =
0
1 0 1 1 0 d
1 1 0 1 1 0
e
2. ⇔ Résoudre le système :
0a + 0b + 0c + 0d + 0e = 0
0a + 1b + 1c + 1d
+ 0e = 0
1a + 0b + 1c + 1d + 0e = 0
1a + 1b + 0c + 1d
+ 1e = 0 6
MBA linéaires : génération
x y x ⊕y x ∨y x ∧ y a
0 0 0 0 0
b 0
0
0 1 1 1 0 c =
0
1 0 1 1 0 d
1 1 0 1 1 0
e
2. ⇔ Résoudre le système :
a =c −e
0a + 0b + 0c + 0d + 0e = 0
b = c − e
0a + 1b + 1c + 1d
+ 0e = 0
⇔ c=c
1a + 0b + 1c + 1d + 0e = 0
d = −2 × c + e
1a + 1b + 0c + 1d
+ 1e = 0
6
e=e
MBA linéaires : génération
a = c − e
b =c −e
d = −2 × c + e
7
MBA linéaires : génération
a = c − e
b =c −e
d = −2 × c + e
Théorème 1 [zhou2007]
7
MBA linéaires : génération
A partir de Ec,e
8
MBA linéaires : génération
A partir de Ec,e
on a E3,1 :
8
MBA linéaires : génération
A partir de Ec,e
on a E3,1 :
2x + 2y = −3 × (x ⊕ y ) + 5 × (x ∨ y ) − (x ∧ y )
8
MBA linéaires : génération
A partir de Ec,e
on a E3,1 :
2x + 2y = −3 × (x ⊕ y ) + 5 × (x ∨ y ) − (x ∧ y )
avec E3,2 :
8
MBA linéaires : génération
A partir de Ec,e
on a E3,1 :
2x + 2y = −3 × (x ⊕ y ) + 5 × (x ∨ y ) − (x ∧ y )
avec E3,2 :
y = −x − 3 × (x ⊕ y ) + 4 × (x ∨ y ) − 2 × (x ∧ y )
8
MBA linéaires : génération
A partir de Ec,e
on a E3,1 :
2x + 2y = −3 × (x ⊕ y ) + 5 × (x ∨ y ) − (x ∧ y )
avec E3,2 :
y = −x − 3 × (x ⊕ y ) + 4 × (x ∨ y ) − 2 × (x ∧ y )
8
MBA linéaires : génération
A partir de Ec,e
on a E3,1 :
2x + 2y = −3 × (x ⊕ y ) + 5 × (x ∨ y ) − (x ∧ y )
avec E3,2 :
y = −x − 3 × (x ⊕ y ) + 4 × (x ∨ y ) − 2 × (x ∧ y )
8
Implémentation
MBA linéaires : LLVM
9
MBA linéaires : LLVM
9
MBA linéaires : LLVM
9
MBA linéaires : LLVM
9
Expressions polynomiales
Expressions polynomiales
10
Expressions polynomiales
11x
x × (y ⊕ z) x2 914
10
Polynômes de permutation
11
Polynômes de permutation
• Propriétés :
11
Polynômes de permutation
• Propriétés :
• Bijectifs
11
Polynômes de permutation
• Propriétés :
• Bijectifs , donc :
11
Polynômes de permutation
• Propriétés :
• Bijectifs , donc :
• Tous inversibles : il existe un (unique) Q tq. Q(P(x )) = x
11
Polynômes de permutation
• Propriétés :
• Bijectifs , donc :
• Tous inversibles : il existe un (unique) Q tq. Q(P(x )) = x
• Utilité :
11
Polynômes de permutation
• Propriétés :
• Bijectifs , donc :
• Tous inversibles : il existe un (unique) Q tq. Q(P(x )) = x
• Utilité :
• Runtime : écrire en mémoire avec P(x ) au lieu de x et utiliser Q
pour la lecture
11
Polynômes de permutation
• Propriétés :
• Bijectifs , donc :
• Tous inversibles : il existe un (unique) Q tq. Q(P(x )) = x
• Utilité :
• Runtime : écrire en mémoire avec P(x ) au lieu de x et utiliser Q
pour la lecture
• Transformer une MBA seulement linéaire en MBA polynomiale
11
Polynômes de permutation
• Propriétés :
• Bijectifs , donc :
• Tous inversibles : il existe un (unique) Q tq. Q(P(x )) = x
• Utilité :
• Runtime : écrire en mémoire avec P(x ) au lieu de x et utiliser Q
pour la lecture
• Transformer une MBA seulement linéaire en MBA polynomiale
• Cacher n’importe quel autre polynôme f : développer Q(K + P(f )),
avec K = 0 une MBA
11
Exemple overkill
Exemple
• c = 1337
Constante à cacher
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
• P(1337) = 56662
Encodage de c
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
• P(1337) = 56662
Encodage de c
• K (x , y , z) = P(1337) =
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
• P(1337) = 56662
Encodage de c
• K (x , y , z) = P(1337) = 8965 × (x ⊕ y ) + 11115 × (x ∧ y ) + 6815 × (¬(x ∨ y )) + 8104 × (¬x ) + 2150 ×
(¬y ) + −18406 × (z) + 18406 × (y ∧ z) + 5954 × (x ∨ z) + −5954 × ((¬x ) ∧ z) + −18406 × (y ∨ (¬z))
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
• P(1337) = 56662
Encodage de c
• K (x , y , z) = P(1337) = 8965 × (x ⊕ y ) + 11115 × (x ∧ y ) + 6815 × (¬(x ∨ y )) + 8104 × (¬x ) + 2150 ×
(¬y ) + −18406 × (z) + 18406 × (y ∧ z) + 5954 × (x ∨ z) + −5954 × ((¬x ) ∧ z) + −18406 × (y ∨ (¬z))
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
• P(1337) = 56662
Encodage de c
• K (x , y , z) = P(1337) = 8965 × (x ⊕ y ) + 11115 × (x ∧ y ) + 6815 × (¬(x ∨ y )) + 8104 × (¬x ) + 2150 ×
(¬y ) + −18406 × (z) + 18406 × (y ∧ z) + 5954 × (x ∨ z) + −5954 × ((¬x ) ∧ z) + −18406 × (y ∨ (¬z))
12
Exemple
• c = 1337
Constante à cacher
• P(x ) =9543x 16 + 31922x 15 + 49485x 14 + 3577x 13 + 7115x 12 + 50138x 11 + 45503x 10 + 25130x 9 + 37449x 8 +
47827x 7 + 58867x 6 + 13758x 5 + 12731x 4 + 61184x 3 + 39973x 2 + 6235x 1 + 42377
Q(x ) =65524x 15 + 5x 14 + 65481x 13 + 54x 12 + 65506x 11 + 128x 10 + 65201x 9 + 203x 8 + 65533x 7 + 1193x 6 +
2028x 5 + 6888x 4 + 35087x 3 + 7345x 2 + 52609x 1 + 1175
Génération d’un PP et de son inverse
• P(1337) = 56662
Encodage de c
• K (x , y , z) = P(1337) = 8965 × (x ⊕ y ) + 11115 × (x ∧ y ) + 6815 × (¬(x ∨ y )) + 8104 × (¬x ) + 2150 ×
(¬y ) + −18406 × (z) + 18406 × (y ∧ z) + 5954 × (x ∨ z) + −5954 × ((¬x ) ∧ z) + −18406 × (y ∨ (¬z))
12
1175+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×
(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ×
¬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧
z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×
(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(52609+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )×
¬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+
50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)×
¬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×
(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧
z)×(y ∨¬z)×(7345+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+
38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨
¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ×
¬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨
z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(35087+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +
57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +
6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+
49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×
z׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z×(x ∨z)+20717×z×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+
47682×(¬x ∧z)×(y ∨¬z)×(6888+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×
(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×
(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×
z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×
(x ∨z)+20717×z×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(2028+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +
57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +
6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+
49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×
z׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z×(x ∨z)+20717×z×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+
47682×(¬x ∧z)×(y ∨¬z)×(1193+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧
z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧
y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +
37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +
40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(65533+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×
(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×
(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧
z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)×
¬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨
z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(203+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+
37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧
z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397×
¬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨
¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(65201+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨
y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )×
¬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨
y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +
37334×(y ∨¬z)׬x +7100×z׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z×(x ∨z)+20717×z×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧
z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(128+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨
z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×
(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)×
¬(x ∨y )+34397׬x ׬y +37142×z׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +
34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(65506+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕
y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×
(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ×
¬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)×
¬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧
z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(54+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+
6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+
50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨
¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧
z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(65481+35091×(x ∧y )×(x ⊕y )+
5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z ×(x ⊕y )+47844×(y ∧z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨
y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨
y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +
12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨
z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×(5+35091×(x ∧y )×(x ⊕y )+5572×(x ⊕y )׬(x ∨y )+56500×(x ⊕y )׬x +57113×(x ⊕y )׬y +38767×z×(x ⊕y )+47844×(y ∧
z)×(x ⊕y )+6609×(x ∨z)×(x ⊕y )+37206×(¬x ∧z)×(x ⊕y )+38575×(y ∨¬z)×(x ⊕y )+15790×(x ∧y )׬(x ∨y )+21002×(x ∧y )׬x +22022×(x ∧y )׬y +6712×z ×(x ∧y )+50091×(x ∧y )×(y ∧z)+19401×(x ∧
y )×(x ∨z)+50194×(x ∧y )×(¬x ∧z)+33677×(x ∧y )×(y ∨¬z)+52861׬x ׬(x ∨y )+62685׬y ׬(x ∨y )+3760×z ׬(x ∨y )+47123×(y ∧z)׬(x ∨y )+49735×(x ∨z)׬(x ∨y )+33836×(¬x ∧z)׬(x ∨y )+
41947×(y ∨¬z)׬(x ∨y )+34397׬x ׬y +37142×z ׬x +7319×(y ∧z)׬x +13199×(x ∨z)׬x +12581×(¬x ∧z)׬x +37334×(y ∨¬z)׬x +7100×z ׬y +28628×(y ∧z)׬y +47596×(x ∨z)׬y +
43720×(¬x ∧z)׬y +34257×(y ∨¬z)׬y +40760×z ×(x ∨z)+20717×z ×(¬x ∧z)+33509×(y ∧z)×(x ∨z)+36086×(y ∧z)×(¬x ∧z)+13795×(x ∨z)×(y ∨¬z)+47682×(¬x ∧z)×(y ∨¬z)×65524))))))))))))))
13
Attaques
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Déobfuscation/simplification de MBA
14
Merci !
Complexifier la virtualisation
PC = 0;
x + y x × y x ⊕ y
PC += 1;
15
Complexifier la virtualisation : entrelacement de handlers
E3,2 : x + y = −3 × (x ⊕ y ) + 4 × (x ∨ y ) − 2 × (x ∧ y )
E1,7 : x ⊕ y = 6 × x + 6 × y − 5 × (x ∨ y ) − 7 × (x ∧ y )
PC = 0;
x + y x × y x ⊕ y
PC += 1;
16
Complexifier la virtualisation : entrelacement de handlers
E3,2 : x + y = −3 × (x ⊕ y ) + 4 × (x ∨ y ) − 2 × (x ∧ y )
E1,7 : x ⊕ y = 6 × x + 6 × y − 5 × (x ∨ y ) − 7 × (x ∧ y )
PC = 0;
x + y x × y x ⊕ y x ∨ y x ∧ y
PC += 1;
17
Complexifier la virtualisation : obfuscation des handlers
PC = 0;
-2 × (¬(x ⊕ y)) x ⊕ y
2 × (x ∧ y) S−1 (K(x,y)
+ (¬ x) ∨ y x ∧ y + x ⊕ y + ¬(x ⊕ y)
+ x ⊕ y + S(x × y))
+ x ∨ (¬y) - ¬(x ∧ y)
PC += 1;
18
Complexifier la virtualisation : dispatching polynomial
PC = 0;
-2 × (¬(x ⊕ y)) x ⊕ y
2 × (x ∧ y) S−1 (K(x,y)
+ (¬ x) ∨ y x ∧ y + x ⊕ y + ¬(x ⊕ y)
+ x ⊕ y + S(x × y))
+ x ∨ (¬y) - ¬(x ∧ y)
PC += 1;
19