From f7959435211d8e52410d1fdb47e32bd095dfa890 Mon Sep 17 00:00:00 2001 From: "QCQCQC@Ubuntu" <1220204124@zust.edu.cn> Date: Tue, 8 Apr 2025 10:00:31 +0800 Subject: [PATCH] tests --- .vscode/settings.json | 3 +- Makefile | 8 +++-- intercept.so | Bin 31168 -> 30672 bytes tests/a.out | Bin 16248 -> 0 bytes tests/output.txt | 0 tests/shm_reader.c | 76 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 84 insertions(+), 3 deletions(-) delete mode 100755 tests/a.out delete mode 100644 tests/output.txt create mode 100644 tests/shm_reader.c diff --git a/.vscode/settings.json b/.vscode/settings.json index 2e29463..e8731cb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,6 +8,7 @@ "*.wxs": "javascript", "*.json": "jsonc", "string.h": "c", - "shm.h": "c" + "shm.h": "c", + "unistd.h": "c" } } \ No newline at end of file diff --git a/Makefile b/Makefile index bbb60c6..da84008 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC = gcc -CFLAGS = -shared -fPIC -Wall -Wextra -Werror +CFLAGS = -shared -fPIC -Wall -Wextra -Werror -O2 -fno-strict-aliasing -fPIC -fno-omit-frame-pointer -fno-stack-protector -Wl,-z,relro,-z,now LDFLAGS = -ldl -ljson-c TARGET = intercept.so SRC = execve_intercept.c @@ -15,4 +15,8 @@ $(TARGET): $(SRC) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) clean: - rm -f $(TARGET) \ No newline at end of file + rm -f $(TARGET) + +debug: + $(MAKE) DEBUG=1 + \ No newline at end of file diff --git a/intercept.so b/intercept.so index 7dc80e5f814e6618781b3594fe0859f01d9f7a6a..f9bebb3246fd953b2a671d355c2fde3a591d4b13 100755 GIT binary patch literal 30672 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 diff --git a/tests/a.out b/tests/a.out deleted file mode 100755 index 727cc879d1acdc21aecb14812024cc74ad20a929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16248 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 +#include +#include +#include +#include +#include +#include +#include + +#define SHM_KEY 12345 +#define MAX_RULES 100 +#define MAX_ARGS 10 + +typedef struct { + char cmd[256]; + char type[32]; + char msg[1024]; + char args[MAX_ARGS][256]; + int arg_count; +} Rule; + +typedef struct { + bool enabled; + Rule rules[MAX_RULES]; + int rule_count; +} ConfigData; + +void print_config(const ConfigData *cfg) { + printf("=== Config ===\n"); + printf("Enabled: %s\n", cfg->enabled ? "true" : "false"); + printf("Rule count: %d\n", cfg->rule_count); + for (int i = 0; i < cfg->rule_count && i < MAX_RULES; i++) { + const Rule *r = &cfg->rules[i]; + printf("Rule %d:\n", i + 1); + printf(" CMD : %s\n", r->cmd); + printf(" Type: %s\n", r->type); + printf(" Msg : %s\n", r->msg); + printf(" Args(%d):\n", r->arg_count); + for (int j = 0; j < r->arg_count && j < MAX_ARGS; j++) { + printf(" - %s\n", r->args[j]); + } + } + printf("=====================\n\n"); +} + +int main() { + int shmid = shmget(SHM_KEY, sizeof(ConfigData), 0666); + if (shmid < 0) { + perror("shmget failed"); + return 1; + } + + ConfigData *shared_cfg = (ConfigData *)shmat(shmid, NULL, SHM_RDONLY); + if (shared_cfg == (void *)-1) { + perror("shmat failed"); + return 1; + } + + ConfigData last_cfg = {0}; + + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 100 * 1000000; // 100ms + + while (1) { + if (memcmp(&last_cfg, shared_cfg, sizeof(ConfigData)) != 0) { + printf(">>> Config changed:\n"); + print_config(shared_cfg); + memcpy(&last_cfg, shared_cfg, sizeof(ConfigData)); + } + nanosleep(&ts, NULL); // 每 100 毫秒检查一次 + } + + shmdt(shared_cfg); + return 0; +}