This is my first attempt at a binary protector. Currently, the VM has very little protection, so this should be good for those interested in learning about VM-based obfuscation. I intend on uploading new challenges that feature my protector as I add more features.
GOAL:
- You must find the correct key. Simply patching to get a goodboy message is NOT allowed.
- Bonus points for devirt and explanation of your approach.
- MOST IMPORTANTLY, have fun!
:)
#include <stdio.h> #pragma GCC push_options #pragma GCC optimize ("O0") int isCorrect(unsigned int input) { unsigned int key = 0x77259243; key |= 0x23; key &= 0x23; key += 0x843; key &= 0x5466; key += 0x843; key |= 0x234; int result = 0; key += 0x63654; key &= 0x4545; key |= 0x65466; key -= 0x5234; key -= 0x863; key ^= 0x7; if (input == 0x743) result = 1; key += 0x65363; key &= 0x75454; key |= 0x754; key += 0x1; key -= 0x1; key += 0x711; if (input == 0x972) result = 1; key += 0x3643; key += 0x54; key |= 0x54; key |= 0x331; key |= 0x12; key += 0x321; if (input == 0x666) result = 1; key -= 0x97; key += 0x744; key |= 0x54; key -= 0x82; key |= 0x12; key += 0x223; if (input == key) result = 1; key += 0x7342; key ^= 0x42; key ^= 0x744; unsigned int tempKey2 = 0x7443; key ^= 0x33; key |= 0x88; key += 0x764; if (input == tempKey2) result = 1; return result; } #pragma GCC pop_options int main() { unsigned int input = 0x0; printf("Enter Key: "); scanf("%d", &input); if (isCorrect(input)) { printf("Correct Key!\n"); } else { printf("Incorrect Key.\n"); } return 0; }
correct key: 299902
Recommended Comments
There are no comments to display.