Skip to content

Commit f54fa65

Browse files
committed
GenerateGarbageAssembly function adjusted for better stability.
1 parent 012c110 commit f54fa65

File tree

2 files changed

+3
-29
lines changed

2 files changed

+3
-29
lines changed

main.go

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ func main() {
119119
color.Blue("\n" + hex.Dump(payload) + "\n")
120120
}
121121

122+
utils.PrintVerbose("Total Garbage Size: %d", encoder.ObfuscationLimit)
122123
utils.PrintSuccess("Final size: %d", outputSize)
123124
utils.PrintSuccess("All done \(^O^)/")
124125
}

pkg/obfuscate.go

+2-29
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,16 @@ import (
1919
// GenerateGarbageAssembly generates random garbage instruction(s) assemblies
2020
// based on the subject encoder architecture
2121
func (encoder *Encoder) GenerateGarbageAssembly() string {
22-
23-
switch rand.Intn(4) {
24-
case 1:
22+
if CoinFlip() {
2523
randomGarbageAssembly := GetRandomSafeAssembly()
2624
register := encoder.GetRandomRegister(encoder.architecture)
2725
randomGarbageAssembly = strings.ReplaceAll(randomGarbageAssembly, "{R}", register)
2826
randomGarbageAssembly = strings.ReplaceAll(randomGarbageAssembly, "{K}", fmt.Sprintf("0x%x", GetRandomByte()))
2927
randomGarbageAssembly = strings.ReplaceAll(randomGarbageAssembly, "{L}", RandomLabel())
3028
randomGarbageAssembly = strings.ReplaceAll(randomGarbageAssembly, "{G}", encoder.GenerateGarbageAssembly())
3129
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 ";"
5830
}
31+
return ";"
5932
}
6033

6134
// GenerateGarbageInstructions generates random garbage instruction(s)

0 commit comments

Comments
 (0)