(Write-up) Reversing.Kr: Easy Keygen

(Write-up) Reversing.Kr: Easy Keygen

🤔Overview

Khi giải nén file thử thách thì nhận được hai file là Easy Keygen.exe ReadMe.txt.
notion image
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

notion image
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 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:
notion image
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:
notion image
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à:
notion image
Vậy key của chall này là: K3yg3nm3
 

Loading Comments...