Closed kudo104 closed 2 years ago
Cho em xin bổ xung cho mọi người hiểu sâu 1 chút là hàm conv() đơn giản là nối 2 ký tự liên tiếp thành 1 và đổi sang decimal.
Hàm check là xor thêm cái đó với t(i*i)
Nên các giá trị trong mảng Oak là từ 2 kí tự liên tiếp của flag nối với nhau (0,1), (1,2), (2,3),... Sau đó xor với t(i*i)
Bài Này cho 1 file Oak.class.Mình decomplie ra được đoạn code sau:
}
Sau một lúc phân tích đoạn code thì được 1 chỗ quan trọng:
Tại hàm này thực hiện kiểm tra flag bằng vòng lặp kiểm tra từng kí tự và mình cũng không cần quan tâm hàm conv và hàm t làm gì.Để lấy flag mình chỉ cần thực hiện (Oak.data[i] ^ (long)t(i*i)) & 0xff.
Flag: