int main(int argc, char **argv) { MalelfDissect dissect; MalelfInfect infect; Disas disas; Database database; Analyse analyse; _u8 error = MALELF_SUCCESS; if (argc == 1) { _malelf_help(); return -1; } if (strncmp(argv[1], DISSECT, sizeof(DISSECT)) == 0) { error = malelf_dissect_init(&dissect, argc, argv); malelf_dissect_finish(&dissect); } else if (strncmp(argv[1], SHELLCODE, sizeof (SHELLCODE)) == 0) { malelf_shellcode_init(argc, argv); malelf_shellcode_finish(); } else if (strncmp(argv[1], INFECT, sizeof(INFECT)) == 0) { malelf_infect_init(&infect, argc, argv); malelf_infect_finish(&infect); } else if (strncmp(argv[1], DYNAMIC_ANALYSIS, sizeof(DYNAMIC_ANALYSIS)) == 0) { malelf_dynanalyse_init(argc, argv); malelf_dynanalyse_finish(); } else if (strncmp(argv[1], DISAS, sizeof(DISAS)) == 0) { disas_init(&disas, argc, argv); disas_finish(&disas); } else if (strncmp(argv[1], DATABASE, sizeof(DATABASE)) == 0) { database_init(&database, argc, argv); database_finish(&database); } else if (strncmp(argv[1], ANALYSE, sizeof(ANALYSE)) == 0) { error = analyse_init(&analyse, argc, argv); analyse_finish(&analyse); } else if (strncmp(argv[1], "-v", 2) || strncmp(argv[1], "--version", 9)) { show_version(*argv); } else { _malelf_help(); } if (MALELF_SUCCESS != error) { if (MALELF_ERROR != error) { MALELF_PERROR(error); } return error; } return 0; }
/** * 主程序全局初始化函数 */ void WD_init() { // 记录起始运行时间 if(-1 == time(&WD_start_time)) { err_exit("get start time error"); } // 初始化配置文件模块 WD_config_init(); user_config_init(); analyse_init(); decrypt_init(); analyse_flow_init(); }