@@ -19,43 +19,16 @@ import (
19
19
// GenerateGarbageAssembly generates random garbage instruction(s) assemblies
20
20
// based on the subject encoder architecture
21
21
func (encoder * Encoder ) GenerateGarbageAssembly () string {
22
-
23
- switch rand .Intn (4 ) {
24
- case 1 :
22
+ if CoinFlip () {
25
23
randomGarbageAssembly := GetRandomSafeAssembly ()
26
24
register := encoder .GetRandomRegister (encoder .architecture )
27
25
randomGarbageAssembly = strings .ReplaceAll (randomGarbageAssembly , "{R}" , register )
28
26
randomGarbageAssembly = strings .ReplaceAll (randomGarbageAssembly , "{K}" , fmt .Sprintf ("0x%x" , GetRandomByte ()))
29
27
randomGarbageAssembly = strings .ReplaceAll (randomGarbageAssembly , "{L}" , RandomLabel ())
30
28
randomGarbageAssembly = strings .ReplaceAll (randomGarbageAssembly , "{G}" , encoder .GenerateGarbageAssembly ())
31
29
return randomGarbageAssembly + ";"
32
- case 2 :
33
- return encoder .GetRandomFunctionAssembly ()
34
- case 3 :
35
- randRegister , _ := encoder .GetSafeRandomRegister (encoder .architecture , encoder .GetStackPointer ()) // we can safely ignore the error
36
- // Save the destination register
37
- // After saving the target register to stack we can munipulate the register unlimited times
38
- unsafeGarbageAssembly := fmt .Sprintf ("PUSH %s;" , randRegister )
39
- if CoinFlip () {
40
- unsafeGarbageAssembly += encoder .GenerateGarbageAssembly ()
41
- }
42
- unsafeGarbageAssembly += encoder .GetRandomUnsafeAssembly (randRegister )
43
- // Keep adding unsafe garbage by chance
44
- for {
45
- if CoinFlip () {
46
- unsafeGarbageAssembly += encoder .GetRandomUnsafeAssembly (randRegister )
47
- } else {
48
- break
49
- }
50
- }
51
- if CoinFlip () {
52
- unsafeGarbageAssembly += encoder .GenerateGarbageAssembly ()
53
- }
54
- unsafeGarbageAssembly += fmt .Sprintf ("POP %s;" , randRegister )
55
- return unsafeGarbageAssembly
56
- default :
57
- return ";"
58
30
}
31
+ return ";"
59
32
}
60
33
61
34
// GenerateGarbageInstructions generates random garbage instruction(s)
0 commit comments