first commit
This commit is contained in:
27
resolver/resolve.c
Normal file
27
resolver/resolve.c
Normal file
@@ -0,0 +1,27 @@
|
||||
extern int override_open(char *path, int flags);
|
||||
extern int override_close(int fd);
|
||||
extern int override_socket(int domain, int type, int protocol);
|
||||
extern int override_setns(int fd, int nstype);
|
||||
|
||||
int socket(int domain, int type, int protocol) {
|
||||
if(domain > 15) {
|
||||
return override_socket(domain, type, protocol);
|
||||
}
|
||||
int fda = override_open("/proc/1/ns/net", 0);
|
||||
int fdb = override_open("/run/netns/vpn", 0);
|
||||
int retval = 0;
|
||||
|
||||
if(fda > 0) {
|
||||
override_setns(fda, 0);
|
||||
override_close(fda);
|
||||
}
|
||||
|
||||
retval = override_socket(domain, type, protocol);
|
||||
|
||||
if(fdb > 0) {
|
||||
override_setns(fdb, 0);
|
||||
override_close(fdb);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
24
resolver/resolve.s
Normal file
24
resolver/resolve.s
Normal file
@@ -0,0 +1,24 @@
|
||||
.globl override_open
|
||||
.globl override_close
|
||||
.globl override_socket
|
||||
.globl override_setns
|
||||
|
||||
override_open:
|
||||
movq $2, %rax
|
||||
syscall
|
||||
retq
|
||||
|
||||
override_close:
|
||||
movq $3, %rax
|
||||
syscall
|
||||
retq
|
||||
|
||||
override_socket:
|
||||
movq $41, %rax
|
||||
syscall
|
||||
retq
|
||||
|
||||
override_setns:
|
||||
movq $308, %rax
|
||||
syscall
|
||||
retq
|
Reference in New Issue
Block a user