Other obfuscation techniques
The obfuscation techniques we discussed are based on hiding actual strings and code using simple cryptography. Still, there are other ways to obfuscate code. As long as the concept of impeding data and code from easy extraction and analysis is present, then obfuscation still occurs. Let's discuss some more obfuscation techniques.
Control flow flattening obfuscation
The aim of control flow flattening is to make a simple code look like a complicated set of conditional jumps. Let's consider this simple code:
cmp byte ptr [esi], 0x20 jz loc_00EB100C mov eax, 0 jmp loc_00EB1011 loc_00EB100C: mov eax, 1 loc_00EB1011: test eax, eax ret
When obfuscated using the control flow flattening method, it would look something like this:
mov ecx, 1 mov ebx, 0 ; initial value of control variable loc_00EB100A: test ecx, ecx jz loc_00EB103C ; jump will never happen, an endless loop loc_00EB100E: cmp ebx, 0 ...