Rev0x02
Challenge
Solution
int main() {
char *licence;
bool check1_success;
unsigned int n1;
unsigned int n2;
unsigned int n3;
unsigned int n4;
unsigned int sum;
unsigned int licence_part;
bool check2_success;
bool check3_success;
licence = (char *)malloc(0x18);
printf("Bonjour Bonjour reverseur.\n Bienvenue dans m...");
scanf("%s",licence);
check1_success = check1(licence);
if (check1_success == 0) {
puts("Vous essayez d\'utiliser mon programme gratuitement. Allez acheter une licence.");
} else {
licence_part = cut(licence,0x4);
n1 = licence_part;
licence_part = cut(licence + 0x5,0x4);
n2 = licence_part;
licence_part = cut(licence + 0xa,0x4);
n3 = licence_part;
licence_part = cut(licence + 0xf,0x4);
n4 = licence_part;
licence_part = cut(licence + 0x14,0x4);
sum = checksum(n1,n2,n3,n4);
if (licence_part == sum) {
check2_success = check2(n1,n2,n3,n4);
if (check2_success == 0) {
puts("Vous essayez d\'utiliser mon programme gratuitement. Allez acheter une licence.");
} else {
check3_success = check3(n1 << 0x10 | n2, licence_part * 0xc0de, n3 << 0x10 | n4);
if (check3_success == 0) {
puts("Vous essayez d\'utiliser mon programme gratuitement. Allez acheter une licence.");
} else {
puts("Bon travail, mais je pense qu'il n'y a rien...");
win();
}
}
} else {
puts("Vous essayez d\'utiliser mon programme gratuitement. Allez acheter une licence.");
}
}
return 0x0;
}Check1
Checksum
Check3
Résolution avec z3
Unintended way
Mis à jour