Çarp-XOR Kontrol
Crackme’nin karşılaştırma fonksiyonu:
``c`
int check(unsigned char *s){
for(int i=0; s[i]; i++){
unsigned char v = (s[i] + i*3) & 0xFF;
v ^= 0xAA;
if(v != T[i]) return 0;
}
return 1;
}
Hedef dizi T:
0xeb, 0xe5, 0xf0, 0xe0, 0xcf, 0x20, 0xdf, 0xde, 0x29, 0xd6, 0x3d, 0x25, 0x2f, 0x38, 0x23, 0x3a, 0x3b, 0x0f, 0x0c, 0x32, 0x1e, 0x04, 0x1e, 0x68`
Dönüşümü ters çevir; doğru girdi flag’indir.
Bu challenge ne öğretiyor?
- XOR, aynı anahtarla iki kez uygulandığında veriyi geri veren bit düzeyinde bir işlemdir.
- Disassembly, makine kodunu okunabilir komutlara çevirir.
- Tersine mühendislik challenge'ları bir programın mantığını okuyup tersine çevirmeyi öğretir.