Code Flow Protection

The goal of this protection is to spaghettify the code execution flow while keeping its original functionality. That means the code should execute the same original tasks and instructions while providing a numbers of new proxy flow within the method. The new method flow is meant to prevent hackers from understanding the method flow with ease.

Features :

Non-original code blocks generated
Flow integrity relies on NETGuard.IO injected methods
Minimal loss of performance at runtime
Mutations of local variables used in the code flow switch

Code Exemple :

private static void Main(string[] args)
{
uint num = 3105109867u;
for (;;)
{
IL_07:
int num2 = -181619543;
int num3 = 1024793128;
for (;;)
{
int num4 = num3;
uint num5;
switch ((num5 = (uint)(-1596518223 - (num4 ^ (1654142260 ^ -1847547436 - 2139780623 + (-1047796153 + 446388577)) - -1407519459 ^ (-643823375 ^ -932261888) + 1904072015 + -796506999 * -1624925845 ^ -(338630279 + -2055020773)) * 723656101 + num2)) % 4u)
{
case 0u:
num3 = (int)(num5 ^ 2199804665u ^ 399250806u);
num2 = (int)(num ^ TokenizerShortBlock.CodePageIndex);
continue;
case 1u:
Console.WriteLine("");
num3 = ((int)num5 >> 825996233 ^ -932008391);
num2 = (int)Program.CustomErrorsModes[0];
continue;
case 2u:
goto IL_07;
}
return;
}
}
}
Was this article helpful?
Cancel
Thank you!