diff --git a/.gitignore b/.gitignore index a5231de..542db4c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -build +build* .directory .clangd v2ray_config/proxy diff --git a/CMakeLists.txt b/CMakeLists.txt index 58d68ba..02ad0d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ project(cgproxy VERSION 0.18) include(GNUInstallDirs) -add_compile_options(-Wall -Wextra -Wpedantic -Wno-unused-result -Wno-unused-parameter) +add_compile_options(-Wall -Wextra -Wpedantic -Wno-unused-result -Wno-unused-parameter -Wl,--no-undefined) # for clangd set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/execsnoop-kernel/aarch64/execsnoop_kern_skel.h b/execsnoop-kernel/aarch64/execsnoop_kern_skel.h new file mode 100644 index 0000000..fc051e1 --- /dev/null +++ b/execsnoop-kernel/aarch64/execsnoop_kern_skel.h @@ -0,0 +1,216 @@ +/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ + +/* THIS FILE IS AUTOGENERATED! */ +#ifndef __EXECSNOOP_KERN_SKEL_H__ +#define __EXECSNOOP_KERN_SKEL_H__ + +#include +#include + +struct execsnoop_kern { + struct bpf_object_skeleton *skeleton; + struct bpf_object *obj; + struct { + struct bpf_map *perf_events; + struct bpf_map *records; + } maps; + struct { + struct bpf_program *syscall_enter_execve; + struct bpf_program *syscall_exit_execve; + } progs; + struct { + struct bpf_link *syscall_enter_execve; + struct bpf_link *syscall_exit_execve; + } links; +}; + +static void +execsnoop_kern__destroy(struct execsnoop_kern *obj) +{ + if (!obj) + return; + if (obj->skeleton) + bpf_object__destroy_skeleton(obj->skeleton); + free(obj); +} + +static inline int +execsnoop_kern__create_skeleton(struct execsnoop_kern *obj); + +static inline struct execsnoop_kern * +execsnoop_kern__open_opts(const struct bpf_object_open_opts *opts) +{ + struct execsnoop_kern *obj; + + obj = (typeof(obj))calloc(1, sizeof(*obj)); + if (!obj) + return NULL; + if (execsnoop_kern__create_skeleton(obj)) + goto err; + if (bpf_object__open_skeleton(obj->skeleton, opts)) + goto err; + + return obj; +err: + execsnoop_kern__destroy(obj); + return NULL; +} + +static inline struct execsnoop_kern * +execsnoop_kern__open(void) +{ + return execsnoop_kern__open_opts(NULL); +} + +static inline int +execsnoop_kern__load(struct execsnoop_kern *obj) +{ + return bpf_object__load_skeleton(obj->skeleton); +} + +static inline struct execsnoop_kern * +execsnoop_kern__open_and_load(void) +{ + struct execsnoop_kern *obj; + + obj = execsnoop_kern__open(); + if (!obj) + return NULL; + if (execsnoop_kern__load(obj)) { + execsnoop_kern__destroy(obj); + return NULL; + } + return obj; +} + +static inline int +execsnoop_kern__attach(struct execsnoop_kern *obj) +{ + return bpf_object__attach_skeleton(obj->skeleton); +} + +static inline void +execsnoop_kern__detach(struct execsnoop_kern *obj) +{ + return bpf_object__detach_skeleton(obj->skeleton); +} + +static inline int +execsnoop_kern__create_skeleton(struct execsnoop_kern *obj) +{ + struct bpf_object_skeleton *s; + + s = (typeof(s))calloc(1, sizeof(*s)); + if (!s) + return -1; + obj->skeleton = s; + + s->sz = sizeof(*s); + s->name = "execsnoop_kern"; + s->obj = &obj->obj; + + /* maps */ + s->map_cnt = 2; + s->map_skel_sz = sizeof(*s->maps); + s->maps = (typeof(s->maps))calloc(s->map_cnt, s->map_skel_sz); + if (!s->maps) + goto err; + + s->maps[0].name = "perf_events"; + s->maps[0].map = &obj->maps.perf_events; + + s->maps[1].name = "records"; + s->maps[1].map = &obj->maps.records; + + /* programs */ + s->prog_cnt = 2; + s->prog_skel_sz = sizeof(*s->progs); + s->progs = (typeof(s->progs))calloc(s->prog_cnt, s->prog_skel_sz); + if (!s->progs) + goto err; + + s->progs[0].name = "syscall_enter_execve"; + s->progs[0].prog = &obj->progs.syscall_enter_execve; + s->progs[0].link = &obj->links.syscall_enter_execve; + + s->progs[1].name = "syscall_exit_execve"; + s->progs[1].prog = &obj->progs.syscall_exit_execve; + s->progs[1].link = &obj->links.syscall_exit_execve; + + s->data_sz = 2024; + s->data = (void *)"\ +\x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x28\x05\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0b\0\ +\x01\0\x85\0\0\0\x0e\0\0\0\xbf\x06\0\0\0\0\0\0\x63\x6a\xfc\xff\0\0\0\0\x85\0\0\ +\0\x0f\0\0\0\xbf\x07\0\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\xe8\xff\0\0\0\0\ +\x7b\x1a\xe0\xff\0\0\0\0\x7b\x1a\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\xbf\ +\xa2\0\0\0\0\0\0\x07\x02\0\0\xfc\xff\xff\xff\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\ +\xd0\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb7\x04\0\0\x01\0\0\0\x85\ +\0\0\0\x02\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x19\0\0\0\0\0\ +\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\xfc\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x08\0\0\0\0\0\0\x15\x08\x12\0\0\0\0\0\x77\x06\0\ +\0\x20\0\0\0\x61\xa1\xfc\xff\0\0\0\0\x63\x78\x1c\0\0\0\0\0\x63\x68\x14\0\0\0\0\ +\0\x63\x18\x10\0\0\0\0\0\x85\0\0\0\x23\0\0\0\x07\0\0\0\x78\x04\0\0\xbf\xa1\0\0\ +\0\0\0\0\x07\x01\0\0\xf0\xff\xff\xff\xb7\x02\0\0\x08\0\0\0\xbf\x03\0\0\0\0\0\0\ +\x85\0\0\0\x04\0\0\0\x07\x08\0\0\x18\0\0\0\x79\xa3\xf0\xff\0\0\0\0\x07\x03\0\0\ +\x6c\x04\0\0\xbf\x81\0\0\0\0\0\0\xb7\x02\0\0\x04\0\0\0\x85\0\0\0\x04\0\0\0\xb7\ +\0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\xbf\x16\0\0\0\0\0\0\x85\0\0\0\x0e\0\0\0\x63\ +\x0a\xfc\xff\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\xfc\xff\xff\xff\x18\x01\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x07\0\0\0\0\0\0\x15\x07\x13\ +\0\0\0\0\0\x79\x61\x10\0\0\0\0\0\xb7\x02\0\0\0\0\0\0\x6d\x12\x0b\0\0\0\0\0\xbf\ +\x71\0\0\0\0\0\0\xb7\x02\0\0\x10\0\0\0\x85\0\0\0\x10\0\0\0\xbf\x61\0\0\0\0\0\0\ +\x18\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x03\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\ +\0\xbf\x74\0\0\0\0\0\0\xb7\x05\0\0\x20\0\0\0\x85\0\0\0\x19\0\0\0\xbf\xa2\0\0\0\ +\0\0\0\x07\x02\0\0\xfc\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\0\ +\0\x03\0\0\0\xb7\0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\x01\0\0\0\x04\0\0\0\x20\0\0\0\ +\0\x28\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0\x04\0\0\0\x80\0\0\0\0\0\0\0\x47\x50\x4c\ +\0\x06\x07\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xac\0\0\0\x04\ +\0\xf1\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdb\0\0\0\0\0\x03\0\x70\x01\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\xd4\0\0\0\0\0\x05\0\xc0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcd\ +\0\0\0\0\0\x05\0\xe8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa3\0\0\0\x11\0\x08\0\0\0\0\ +\0\0\0\0\0\x04\0\0\0\0\0\0\0\x20\0\0\0\x11\0\x09\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\ +\0\0\0\x07\0\0\0\x11\0\x07\0\x14\0\0\0\0\0\0\0\x14\0\0\0\0\0\0\0\x18\0\0\0\x11\ +\0\x07\0\0\0\0\0\0\0\0\0\x14\0\0\0\0\0\0\0\x8e\0\0\0\x12\0\x03\0\0\0\0\0\0\0\0\ +\0\x80\x01\0\0\0\0\0\0\x51\0\0\0\x12\0\x05\0\0\0\0\0\0\0\0\0\xf8\0\0\0\0\0\0\0\ +\x70\0\0\0\0\0\0\0\x01\0\0\0\x08\0\0\0\xb8\0\0\0\0\0\0\0\x01\0\0\0\x08\0\0\0\ +\x28\0\0\0\0\0\0\0\x01\0\0\0\x08\0\0\0\x88\0\0\0\0\0\0\0\x01\0\0\0\x07\0\0\0\ +\xd0\0\0\0\0\0\0\0\x01\0\0\0\x08\0\0\0\0\x2e\x74\x65\x78\x74\0\x70\x65\x72\x66\ +\x5f\x65\x76\x65\x6e\x74\x73\0\x6d\x61\x70\x73\0\x72\x65\x63\x6f\x72\x64\x73\0\ +\x5f\x76\x65\x72\x73\x69\x6f\x6e\0\x2e\x72\x65\x6c\x74\x72\x61\x63\x65\x70\x6f\ +\x69\x6e\x74\x2f\x73\x79\x73\x63\x61\x6c\x6c\x73\x2f\x73\x79\x73\x5f\x65\x78\ +\x69\x74\x5f\x65\x78\x65\x63\x76\x65\0\x73\x79\x73\x63\x61\x6c\x6c\x5f\x65\x78\ +\x69\x74\x5f\x65\x78\x65\x63\x76\x65\0\x2e\x72\x65\x6c\x74\x72\x61\x63\x65\x70\ +\x6f\x69\x6e\x74\x2f\x73\x79\x73\x63\x61\x6c\x6c\x73\x2f\x73\x79\x73\x5f\x65\ +\x6e\x74\x65\x72\x5f\x65\x78\x65\x63\x76\x65\0\x73\x79\x73\x63\x61\x6c\x6c\x5f\ +\x65\x6e\x74\x65\x72\x5f\x65\x78\x65\x63\x76\x65\0\x5f\x6c\x69\x63\x65\x6e\x73\ +\x65\0\x65\x78\x65\x63\x73\x6e\x6f\x6f\x70\x5f\x6b\x65\x72\x6e\x2e\x63\0\x2e\ +\x73\x74\x72\x74\x61\x62\0\x2e\x73\x79\x6d\x74\x61\x62\0\x4c\x42\x42\x31\x5f\ +\x34\0\x4c\x42\x42\x31\x5f\x33\0\x4c\x42\x42\x30\x5f\x33\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xbd\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\x40\x04\0\0\0\0\0\0\xe2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\x69\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\ +\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x65\0\ +\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\x03\0\0\0\0\0\0\x20\0\0\0\0\ +\0\0\0\x0a\0\0\0\x03\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x2d\0\0\0\x01\0\ +\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc0\x01\0\0\0\0\0\0\xf8\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x29\0\0\0\x09\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x10\x04\0\0\0\0\0\0\x30\0\0\0\0\0\0\0\x0a\0\0\0\x05\0\0\ +\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x13\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\xb8\x02\0\0\0\0\0\0\x28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\xa4\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\xe0\x02\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\x21\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe4\x02\0\0\0\ +\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc5\ +\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe8\x02\0\0\0\0\0\0\x08\x01\0\ +\0\0\0\0\0\x01\0\0\0\x05\0\0\0\x08\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\0"; + + return 0; +err: + bpf_object__destroy_skeleton(s); + return -1; +} + +#endif /* __EXECSNOOP_KERN_SKEL_H__ */ diff --git a/execsnoop-kernel/arm_docker.md b/execsnoop-kernel/arm_docker.md new file mode 100644 index 0000000..ee79a04 --- /dev/null +++ b/execsnoop-kernel/arm_docker.md @@ -0,0 +1,40 @@ +## Arm64 docker + +https://www.stereolabs.com/docs/docker/building-arm-container-on-x86/ + +https://wiki.debian.org/QemuUserEmulation + +- install + +```bash +# install qemu with user emulation +pacman -S qemu qemu-user-static +# docker +docker pull arm64v8/ubuntu +docker pull multiarch/qemu-user-static +# register +docker run --rm --privileged multiarch/qemu-user-static --reset -p yes +``` + +- test + +```bash +docker run --rm -t arm64/ubuntu uname -m +``` + +- run + +```bash +# start container background +docker run -dit --name arm64 -v /home/fancy/workspace-xps:/data arm64v8/ubuntu + +# enter container +docker exec -it arm64 bash +# use another repository: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ +# install in container for kernel bpf build +apt install install dialog apt-utils +apt install build-essential gcc clang llvm +apt install bison flex bc rsync libssl-dev binutils-dev libreadline-dev libelf +apt install make cmake nlohmann-json3-dev rpm +``` + diff --git a/execsnoop-kernel/execsnoop b/execsnoop-kernel/execsnoop deleted file mode 100755 index 6dd8b56..0000000 Binary files a/execsnoop-kernel/execsnoop and /dev/null differ diff --git a/execsnoop-kernel/execsnoop_kern.c b/execsnoop-kernel/execsnoop_kern.c index fce5e08..6dfafa3 100644 --- a/execsnoop-kernel/execsnoop_kern.c +++ b/execsnoop-kernel/execsnoop_kern.c @@ -34,7 +34,7 @@ struct bpf_map_def SEC("maps") records = { .type = BPF_MAP_TYPE_HASH, .key_size = sizeof(pid_t), .value_size = sizeof(struct event), - .max_entries = 1024, + .max_entries = 10240, }; struct bpf_map_def SEC("maps") perf_events = { .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY, diff --git a/execsnoop-kernel/execsnoop_kern.o b/execsnoop-kernel/execsnoop_kern.o deleted file mode 100644 index 09450b5..0000000 Binary files a/execsnoop-kernel/execsnoop_kern.o and /dev/null differ diff --git a/execsnoop-kernel/execsnoop_share.cpp b/execsnoop-kernel/execsnoop_share.cpp index 6db8ed7..6ec15a9 100644 --- a/execsnoop-kernel/execsnoop_share.cpp +++ b/execsnoop-kernel/execsnoop_share.cpp @@ -1,9 +1,15 @@ +#include "execsnoop_share.h" + #include #include #include #include -#include "execsnoop_kern_skel.h" -#include "execsnoop_share.h" + +#if defined(__x86_64__) + #include "x86_64/execsnoop_kern_skel.h" +#elif defined(__aarch64__) + #include "aarch64/execsnoop_kern_skel.h" +#endif namespace CGPROXY::EXECSNOOP { @@ -73,7 +79,7 @@ main_loop: while ((err = perf_buffer__poll(pb, -1)) >= 0) {} perf_buffer__free(pb); - /* handle Interrupted system call when sleep*/ + /* handle Interrupted system call when sleep */ if (err == -EINTR) goto main_loop; perror("perf_buffer__poll"); diff --git a/execsnoop-kernel/execsnoop_user_1.c b/execsnoop-kernel/execsnoop_user_1.c index 0b9fd63..c9c0d43 100644 --- a/execsnoop-kernel/execsnoop_user_1.c +++ b/execsnoop-kernel/execsnoop_user_1.c @@ -1,9 +1,12 @@ - #include #include #include -#include "execsnoop_kern_skel.h" -// #include "bpf_load.h" + +#if defined(__x86_64__) + #include "x86_64/execsnoop_kern_skel.h" +#elif defined(__aarch64__) + #include "aarch64/execsnoop_kern_skel.h" +#endif #define TASK_COMM_LEN 16 struct event { diff --git a/execsnoop-kernel/readme.md b/execsnoop-kernel/readme.md index 4ab8002..2456ade 100644 --- a/execsnoop-kernel/readme.md +++ b/execsnoop-kernel/readme.md @@ -6,16 +6,20 @@ ## Build in kernel tree +- download kernel source code - ready and config kernel tree ```bash # kernel config -gunzip -c /proc/config.gz > .config -make oldconfig && make prepare +#gunzip -c /proc/config.gz > .config +#make oldconfig && make prepare +make defconfig && make prepare # install headers to ./usr/include make headers_install -j8 -# build bpf -make M=samples/bpf -j8 +# build samples/bpf +make samples/bpf -j8 +# build bpftool +make tools/bpf -j8 ``` - put or link `execsnoop_kern.c` and `execsnoop_user.c` to *samples/bpf/* @@ -43,8 +47,6 @@ sudo bash -c "ulimit -l unlimited && ./execsnoop" ## With bpftool -- move compiled `execsnoop_kern.o` to current `exexcnoop-kernel` directory - - generate `execsnoop_kern_skel.h` ``` @@ -57,12 +59,6 @@ bpftool gen skeleton execsnoop_kern.o > execsnoop_kern_skel.h gcc -Wall -O2 execsnoop_user_1.c -o execsnoop -lbpf ``` - - - - -**Followings are just some notes. they are not really related.** - ## Detail build command using `make V=1 M=samples/bpf | tee -a log.txt` to get and filter following command @@ -125,6 +121,75 @@ clang -nostdinc \ -lelf -lz ``` +## ARM64 + +```bash +# if cross compile +export ARCH=arm64 +export CROSS_COMPILE=aarch64-linux-gnu- +``` + +The recommend way is to build in [ARM Docker Containers](https://www.stereolabs.com/docs/docker/building-arm-container-on-x86/). see `arm_docker.md` + +- make + +```bash +# clean +make mrproper +make -C tools clean +make -C samples/bpf clean +# make +make defconfig && make prepare +make headers_install -j8 +# build samples/bpf +make samples/bpf -j8 +# build bpftool +make tools/bpf -j8 +``` + +- detail build `execsnoop_kern.o` + + note `-g` may not needed + +```bash +clang -nostdinc \ + -isystem /usr/lib/gcc/aarch64-linux-gnu/9/include \ + -I./arch/arm64/include -I./arch/arm64/include/generated \ + -I./include -I./arch/arm64/include/uapi \ + -I./arch/arm64/include/generated/uapi \ + -I./include/uapi \ + -I./include/generated/uapi \ + -include ./include/linux/kconfig.h \ + -I./samples/bpf \ + -I./tools/testing/selftests/bpf/ \ + -I./tools/lib/ \ + -include asm_goto_workaround.h \ + -D__KERNEL__ -D__BPF_TRACING__ -Wno-unused-value -Wno-pointer-sign \ + -D__TARGET_ARCH_arm64 -Wno-compare-distinct-pointer-types \ + -Wno-gnu-variable-sized-type-not-at-end \ + -Wno-address-of-packed-member -Wno-tautological-compare \ + -Wno-unknown-warning-option \ + -fno-stack-protector \ + -O2 -emit-llvm -c samples/bpf/execsnoop_kern.c \ + -o -| llc -march=bpf -filetype=obj -o samples/bpf/execsnoop_kern.o +``` + +- generate + +``` +bpftool gen skeleton execsnoop_kern.o > aarch64/execsnoop_kern_skel.h +``` + + + +http://www.redfelineninja.org.uk/daniel/2018/02/running-an-iso-installer-image-for-arm64-aarch64-using-qemu-and-kvm/ + +``` +qemu-system-aarch64 -cpu cortex-a53 -M virt -m 2048 -nographic \ +-drive if=pflash,format=raw,file=QEMU_EFI.img \ +-drive if=virtio,format=raw,file=ubuntu-20.04-live-server-arm64.iso +``` + ## Some resources diff --git a/execsnoop-kernel/execsnoop_kern_skel.h b/execsnoop-kernel/x86_64/execsnoop_kern_skel.h similarity index 97% rename from execsnoop-kernel/execsnoop_kern_skel.h rename to execsnoop-kernel/x86_64/execsnoop_kern_skel.h index ecb38ed..f0ee3cd 100644 --- a/execsnoop-kernel/execsnoop_kern_skel.h +++ b/execsnoop-kernel/x86_64/execsnoop_kern_skel.h @@ -150,10 +150,10 @@ execsnoop_kern__create_skeleton(struct execsnoop_kern *obj) \xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\xfc\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\ \0\0\0\x85\0\0\0\x01\0\0\0\xbf\x08\0\0\0\0\0\0\x15\x08\x12\0\0\0\0\0\x77\x06\0\ \0\x20\0\0\0\x61\xa1\xfc\xff\0\0\0\0\x63\x78\x1c\0\0\0\0\0\x63\x68\x14\0\0\0\0\ -\0\x63\x18\x10\0\0\0\0\0\x85\0\0\0\x23\0\0\0\x07\0\0\0\x18\x05\0\0\xbf\xa1\0\0\ +\0\x63\x18\x10\0\0\0\0\0\x85\0\0\0\x23\0\0\0\x07\0\0\0\xa0\x04\0\0\xbf\xa1\0\0\ \0\0\0\0\x07\x01\0\0\xf0\xff\xff\xff\xb7\x02\0\0\x08\0\0\0\xbf\x03\0\0\0\0\0\0\ \x85\0\0\0\x04\0\0\0\x07\x08\0\0\x18\0\0\0\x79\xa3\xf0\xff\0\0\0\0\x07\x03\0\0\ -\x0c\x05\0\0\xbf\x81\0\0\0\0\0\0\xb7\x02\0\0\x04\0\0\0\x85\0\0\0\x04\0\0\0\xb7\ +\x94\x04\0\0\xbf\x81\0\0\0\0\0\0\xb7\x02\0\0\x04\0\0\0\x85\0\0\0\x04\0\0\0\xb7\ \0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\xbf\x16\0\0\0\0\0\0\x85\0\0\0\x0e\0\0\0\x63\ \x0a\xfc\xff\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\xfc\xff\xff\xff\x18\x01\0\ \0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x07\0\0\0\0\0\0\x15\x07\x13\ @@ -163,7 +163,7 @@ execsnoop_kern__create_skeleton(struct execsnoop_kern *obj) \0\xbf\x74\0\0\0\0\0\0\xb7\x05\0\0\x20\0\0\0\x85\0\0\0\x19\0\0\0\xbf\xa2\0\0\0\ \0\0\0\x07\x02\0\0\xfc\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\0\ \0\x03\0\0\0\xb7\0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\x01\0\0\0\x04\0\0\0\x20\0\0\0\ -\0\x04\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0\x04\0\0\0\x80\0\0\0\0\0\0\0\x47\x50\x4c\ +\0\x28\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0\x04\0\0\0\x80\0\0\0\0\0\0\0\x47\x50\x4c\ \0\x06\x07\x05\0\x10\0\0\0\0\0\0\0\x01\x7a\x52\0\x08\x7c\x0b\x01\x0c\0\0\0\x18\ \0\0\0\x18\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x1c\0\0\0\x34\0\0\ \0\0\0\0\0\0\0\0\0\xf8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ diff --git a/pack/CMakeLists.txt b/pack/CMakeLists.txt index b59297a..fd4a9fb 100644 --- a/pack/CMakeLists.txt +++ b/pack/CMakeLists.txt @@ -4,8 +4,12 @@ set(CPACK_PACKAGE_NAME "cgproxy") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "cgproxy will transparent proxy anything running in specific cgroup.It aslo supports global transparent proxy and gateway proxy") ## deb pack +execute_process(COMMAND dpkg --print-architecture + OUTPUT_VARIABLE DEBIAN_ARCH + OUTPUT_STRIP_TRAILING_WHITESPACE) +set(CPACK_DEBIAN_FILE_NAME ${CPACK_PACKAGE_NAME}_${CMAKE_PROJECT_VERSION}_${DEBIAN_ARCH}.deb) set(CPACK_DEBIAN_PACKAGE_NAME "cgproxy") -set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") +# set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") set(CPACK_DEBIAN_PACKAGE_DEPENDS "systemd") set(CPACK_DEBIAN_PACKAGE_SECTION "network") set(CPACK_DEBIAN_PACKAGE_PRIORITY "Optional") @@ -14,7 +18,11 @@ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "springzfx@gmail.com") set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/prerm") ## rpm pack -set(CPACK_RPM_PACKAGE_ARCHITECTURE, "x86_64") +execute_process(COMMAND uname -m + OUTPUT_VARIABLE RPM_ARCH + OUTPUT_STRIP_TRAILING_WHITESPACE) +set(CPACK_RPM_FILE_NAME ${CPACK_PACKAGE_NAME}_${CMAKE_PROJECT_VERSION}_${RPM_ARCH}.rpm) +# set(CPACK_RPM_PACKAGE_ARCHITECTURE, "x86_64") set(CPACK_RPM_PACKAGE_REQUIRES "systemd") set(CPACK_RPM_PACKAGE_GROUP "network") set(CPACK_RPM_PACKAGE_URL "https://github.com/springzfx/cgproxy")