🤔Overview
Khi giải nén file thử thách thì nhận được hai file là Easy Keygen.exe và ReadMe.txt.
Chạy file exe, nhập tên và serial sau đó enter thì không có gì xảy ra.
Miêu tả của chall này được đề cập trong file ReadMe.txt
💻Problem
Trong chall này, vấn đề cần giải quyết là phải tìm Name (cũng chính là key) phù hợp với Serial được cho là 5B134977135E7D13.
🚩Let’s go
Mở file exe trong IDA và tìm nơi có nhiệm vụ chuyển đổi Name nhập vào thành Serial.
Chuyển sang mã giả để dễ dàng phân tích hơn thì mình tìm thấy đoạn này xử lý việc chuyển đổi thành Serial:
Vậy là Serial được sinh ra từ đoạn code:
for ( i = 0; v3 < (int)strlen(v8); ++i ) { if ( i >= 3 ) i = 0; sprintf(Buffer, "%s%02X", Buffer, v8[v3++] ^ v7[i - 1]); }
(v8 chính là Name được người dùng nhập vào)
Xem giá trị của v7 ở assembly:
Vậy v7 là một mảng giá trị:
[0x10, 0x20, 0x30]
Dựa trên những dữ kiện trên, mình code lại đoạn mã Python để đảo ngược từ mã Serial trở lại thành Name:
v8 = "5B134977135E7D13" v8 = bytes.fromhex(v8) v7 = [0x10, 0x20, 0x30] key = "" for i in range(8): key += chr(v8[i] ^ v7[i%3]) print("Key: " + key)
Và kết quả nhận được khi chạy chương trình trên là:
Vậy key của chall này là:
K3yg3nm3