Trinity Obfuscator
  • Welcome to Trinity Info Desk
  • FAQ
    • File won't work after obfuscation
    • File detected as virus
    • My personal data
    • My file didn't come through
  • Protections
    • Code Protection
      • Control Flow
        • Dynamic Control Flow
        • Duplicate Control Flow
      • Constants
        • Mutate Constants
        • Constants Melt
        • Expression Constants
        • Math Protection
      • Junk Dump
      • Invalid Metadata
      • Module Flood
    • Name Protections
      • Name Protection
      • Reference Proxy
      • Locals to Fields
      • Decompiler Crash
      • Type Scrambler
    • Code Convertion
      • Virtualization
      • Call to Calli Conversion
    • Anti Protections
      • Force Elevation
      • Anti VM
      • Anti DnSpy
      • Anti Debug
      • Anti Dump
      • Anti Tamper
      • Anti De4dot
      • Process Monitor
      • Integrity Check
    • Free Protections
      • Executable Packer
      • String Encryptor
Powered by GitBook
On this page

Was this helpful?

  1. Protections
  2. Code Protection
  3. Control Flow

Dynamic Control Flow

An extra addition to Control Flow that uses a dynamic switch-base.

Before Obfuscation
protected override void Dispose(bool disposing)
		{
			bool flag = disposing && this.components != null;
			if (flag)
			{
				this.components.Dispose();
			}
			base.Dispose(disposing);
		}
After Obfuscation
protected override void Dispose(bool disposing)
		{
			for (;;)
			{
				IL_01:
				int num = -1776109792;
				for (;;)
				{
					bool flag;
					switch (<Module>.InterfaceTunnelType(num))
					{
					case 1:
						IL_40:
						base.Dispose(disposing);
						num = -1776109793;
						continue;
					case 2:
						if (disposing)
						{
							num = -1776109791;
							continue;
						}
						flag = false;
						goto IL_5A;
					case 3:
						num = -1776109714;
						continue;
					case 4:
						num = -1776109715;
						continue;
					case 5:
						flag = (this.components != null);
						goto IL_5A;
					case 6:
						goto IL_01;
					}
					return;
					IL_5A:
					bool flag2 = flag;
					if (!flag2)
					{
						goto IL_40;
					}
					this.components.Dispose();
					num = -1776109790;
				}
			}
		}
PreviousControl FlowNextDuplicate Control Flow

Last updated 6 years ago

Was this helpful?