Skip to content

Commit

Permalink
add signal handle to disable redirect!
Browse files Browse the repository at this point in the history
  • Loading branch information
csujedihy committed May 13, 2015
1 parent 35e0848 commit 85e4d8a
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 9 deletions.
44 changes: 40 additions & 4 deletions src/local.c
Expand Up @@ -310,7 +310,7 @@ int process_find() {
int tell_kernel_to_hook() {
struct ctl_info ctl_info;
struct sockaddr_ctl sc;

LOGI("tell kernel");
gSocket = socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL);
if (gSocket < 0) {
LOGE("socket SYSPROTO_CONTROL");
Expand Down Expand Up @@ -357,6 +357,32 @@ int tell_kernel_to_hook() {
return 0;
}

void signal_handler(uv_signal_t *handle, int signum)
{
LOGI("Ctrl+C pressed, tell kernel not to HOOK socket");
conf.pid = 999;
#define HOOK_PID 8
if (setsockopt(gSocket, SYSPROTO_CONTROL, HOOK_PID, &conf.pid, sizeof(conf.pid)) == -1) {
LOGE("setsockopt failure HOOK_PID");
exit(EXIT_FAILURE);
}

int pid_to_hook = 0;
int size = sizeof(pid_to_hook);
if (getsockopt(gSocket, SYSPROTO_CONTROL, HOOK_PID, &pid_to_hook, &size) == -1) {
LOGE("getsockopt HOOK_PID failure");
exit(EXIT_FAILURE);
}
if (pid_to_hook == conf.pid)
LOGI("Unhook Succeed! Now back to bypass mode", pid_to_hook);

#undef HOOK_PID
uv_loop_t* loop = handle->data;
uv_signal_stop(handle);
uv_stop(loop);
exit(0);
}

int main(int argc, char **argv) {
int c, option_index = 0, daemon = 0;
char* configfile = NULL;
Expand Down Expand Up @@ -414,7 +440,8 @@ int main(int argc, char **argv) {

struct sockaddr_in bind_addr;
// system("ps -e|grep Chrome|head -1");
loop = uv_default_loop();
loop = malloc(sizeof *loop);
uv_loop_init(loop);
listener_t *listener = calloc(1, sizeof(server_ctx_t));
listener->handle.data = listener;
uv_tcp_init(loop, &listener->handle);
Expand All @@ -425,12 +452,21 @@ int main(int argc, char **argv) {
LOGE("address error");
r = uv_tcp_bind(&listener->handle, (struct sockaddr*)&bind_addr, 0);
if (r)
LOGE("bind error");
LOGI("bind error");
r = uv_listen((uv_stream_t*) &listener->handle, 128 /*backlog*/, server_accept_cb);
if (r)
LOGE("listen error port");
LOGI("listen error port");
LOGI("Listening on %s:%d", conf.proximac_listen_address, conf.proximac_port);

signal(SIGPIPE, SIG_IGN);
uv_signal_t sigint;
sigint.data = loop;
int n = uv_signal_init(loop, &sigint);
n = uv_signal_start(&sigint, signal_handler, SIGINT);

uv_run(loop, UV_RUN_DEFAULT);
uv_loop_close(loop);
free(loop);
CLOSE_LOGFILE;
return 0;
}
2 changes: 2 additions & 0 deletions src/local.h
Expand Up @@ -25,6 +25,8 @@
#define RC_OK 2
#define MAX_RC_NUM 32

int tell_kernel_to_hook();

typedef struct {
uv_write_t req;
uv_buf_t buf;
Expand Down
3 changes: 1 addition & 2 deletions src/proximac.c
Expand Up @@ -2363,8 +2363,7 @@ static int ctl_set(kern_ctl_ref ctl_ref, u_int32_t unit, void *unitinfo, int opt
}
intval = *(int *)data;
lck_mtx_lock(gmutex);
if (intval >= 0)
pid_to_hook = intval;
pid_to_hook = intval;
lck_mtx_unlock(gmutex);
break;
case TCPLOGGER_QMAX:
Expand Down
Binary file not shown.
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "2.0">
</Bucket>
Expand Up @@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "32A4FEB80562C75700D090E7"
BuildableName = "proximac.kext"
BuildableName = "tcplognke.kext"
BlueprintName = "KEXT"
ReferencedContainer = "container:tcplognke.xcodeproj">
</BuildableReference>
Expand Down Expand Up @@ -43,7 +43,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "32A4FEB80562C75700D090E7"
BuildableName = "proximac.kext"
BuildableName = "tcplognke.kext"
BlueprintName = "KEXT"
ReferencedContainer = "container:tcplognke.xcodeproj">
</BuildableReference>
Expand All @@ -61,7 +61,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "32A4FEB80562C75700D090E7"
BuildableName = "proximac.kext"
BuildableName = "tcplognke.kext"
BlueprintName = "KEXT"
ReferencedContainer = "container:tcplognke.xcodeproj">
</BuildableReference>
Expand Down

0 comments on commit 85e4d8a

Please sign in to comment.