From 16883041dbbb395bee8df56e8bb99603e520e7dd Mon Sep 17 00:00:00 2001 From: "QCQCQC@Ubuntu" <1220204124@zust.edu.cn> Date: Mon, 7 Apr 2025 09:30:00 +0800 Subject: [PATCH] conda fixed --- execve_intercept.c | 22 +++++++++++++++------- intercept.so | Bin 26328 -> 26328 bytes 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/execve_intercept.c b/execve_intercept.c index 8b2e6b5..9a0fecb 100644 --- a/execve_intercept.c +++ b/execve_intercept.c @@ -266,6 +266,13 @@ void load_config_if_needed() { } int execve(const char *filename, char *const argv[], char *const envp[]) { + // 如果功能被禁用,则直接执行 + if (!config.enabled) { + orig_execve_type orig_execve = + (orig_execve_type)dlsym(RTLD_NEXT, "execve"); + return orig_execve(filename, argv, envp); + } + // 仅在 shell 终端调用 execve 时拦截 if (!is_terminal_shell()) { orig_execve_type orig_execve = @@ -276,13 +283,6 @@ int execve(const char *filename, char *const argv[], char *const envp[]) { // 加载配置(仅在需要时) load_config_if_needed(); - // 如果功能被禁用,则直接执行 - if (!config.enabled) { - orig_execve_type orig_execve = - (orig_execve_type)dlsym(RTLD_NEXT, "execve"); - return orig_execve(filename, argv, envp); - } - write_log(filename, argv); const char *basename = argv[0]; @@ -290,6 +290,14 @@ int execve(const char *filename, char *const argv[], char *const envp[]) { basename = argv[2]; } + // 特殊处理以 shell.posix + // 方式执行的命令,直接执行,不进行规则匹配和输出重定向 + if (argv[1] != NULL && strcmp(argv[1], "shell.posix") == 0) { + orig_execve_type orig_execve = + (orig_execve_type)dlsym(RTLD_NEXT, "execve"); + return orig_execve(filename, argv, envp); + } + for (int i = 0; i < config.rule_count; i++) { if (strcmp(basename, config.rules[i].cmd) == 0 && args_match(argv, &config.rules[i])) { diff --git a/intercept.so b/intercept.so index d3eac661143ac125c4d7bbe17cc73d97d0ab80be..35c2659d6e6303379358a95694c340dfe2bb303e 100755 GIT binary patch delta 1062 zcmZuwdq`7J7{7Oqa=zxk`3P(F5W&a9)~tj;r&mr73t6M=MKp{Iqm>Jk3OBcj>$Xx3 zgawiGe>ff0lCq0`xJ77+BPJA$h}^Pl7K9~u`tI&r`=bN*`5dYD2Q?e%ARg0byMl;iIAr5e5KAEkXKqgRUCL(}e6qL5=?mY6 zz<3F3Y&B8B0L77$2_e?tMQkGnDf|am@SRf-SWBiOpJ|HnF#%p`goQa`m8hJeSf(q0 z22d-vO%7}HG;)qZY%pF>6)Pxr91#NYVgbo~p3KF`AHVbJ^4}@evuCP{Zk45Aghm#rHYEO@Sij4 jR8%FX0n&D31APH^8Y^V~9`~?urz{kI@*&TXabENnNkpUE delta 921 zcmZXT?@Lor7{|}KZRVCb4aG*7nf)}|pgGGCp_^AONJ&gcp%>EB4D5wqFBHOwKX5L? zdLZnb`4?mta!J@lp$)3LZ|`Oq~Wk>zrP;)4UEhpY1AGh1dDE?K!`?a3{HCt7~f)ni89{Z(HSW zLZeYw6J&R0q%1q6Z&NS*W^72g3xy7+eN-TXuWlq6v%D}i*a#U&(m|#BqBLf_oI{8d zcq4_w42OCUx*R127w&;cM-ffHoWt3d2#aw&uNI^T2Meap5fT*R(u8zdIc~uv`aufJ zOF=Oq1wKiEusVX3h7`-tbnCH_Vd?*CCvi<(#V{hq{P$wb-NhJtx~<5Sb54aHjD_^W(3bQ9 zW5zS-554$7>*qxum+w6SBZ1Eq8Aag(yH0OmA-snMblJ)`=q~G5vUDQt(!Wz~-8&%0 zY0zj#vPz6w?ze92x`|C#uBKjDq{pseO6=aDC+zgW7Vh|s4b{7-x>3xIL`44pQWdPdQMph=FG)hJ0l-oZs79=YCMHB0L`9ax(q!SAHfrhz3>v_16amrhfR!Q zV6D}es@mehDeQ6$?GrI4cUbUbXY5-Qvi4`n*YW};NM4bIxKnmreP^H@VDj2=1}<+M z?U4JuGY0)1a5c@Dg;y5Xx@j}Vo!k>b=Y4gw4SIZb)4%^|+IPVeb#o*t|MGnm{sLDp BYN!AJ