A test project on the basics of protecting software from debugging, disassembly and modification.
Unsafe project was modified with such additions:
- Strings are encrypted during the compile time;
- Pass-check function immutability is checked by counting function's CRC;
- Added five different methods for debugging detection such as:
- Checking debugger with IsDebuggerPresent();
- Checking BeingDebugged value in PEB structure;
- Checking NtGlobalFlag for debugger;
- Checking heap flags and force flags;
- Checking NtQueryInformationProcess;
- Added four different disassembly countermeasures:
- Added assembly instructions of conditional branches;
- Added garbage assembly instructions;
- Added some self-modified assembly code;
- Added macroses for changing unvaluable bytes to assembly instructions;
Developped for MSVC/Windows Visual Studio compiler.