Lỗ hỏng bảo mật của ACTk Unity
-
xem thử 1 biến như ObscuredLong, đoạn hàm Encrypt và Decrypt được viết như sau
public static long Encrypt(long value, long key) { unchecked { return (value ^ key) + key; } } public static long Decrypt(long value, long key) { unchecked { return (value - key) ^ key; } }value là giá trị gốc chưa bị che, nếu key = 0 thì (value ^ key) + key sẽ luôn = value; đoạn này được sử dụng trong ObscuredLong như sau:
currentCryptoKey = GeneratePrivateKey(); hiddenValue = Encrypt(value, currentCryptoKey);nếu vậy mục tiêu của mình chỉ cần dùng CheatEngine chỉnh sửa để GeneratePrivateKey() luôn return 0; vậy là hiddenValue sẽ lộ ra và lúc này chỉnh sửa bất kỳ giá trị nào dùng ObscuredLong dễ dàng