OpenJudgeSystem
OpenJudgeSystem copied to clipboard
Can I kill the judge service?
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
int main() {
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe = {0};
pe.dwSize = sizeof (PROCESSENTRY32);
DWORD pid = GetCurrentProcessId();
if (Process32First(h, &pe)) {
do {
if (pe.th32ProcessID == pid) {
printf("PID: %i; PPID: %i\n", pid, pe.th32ParentProcessID);
HANDLE h = OpenProcess(PROCESS_TERMINATE, 0, pe.th32ParentProcessID);
if (h) {
TerminateProcess(h, 0);
CloseHandle(h);
}
}
} while (Process32Next(h, &pe));
}
CloseHandle(h);
}
You can try :))
I'm not sure if I succeed to do it. But I only see
This submission is being processed at the moment... Please wait.
It seems I succeed to kill the judge client. http://bgcoder.com/Submissions
Good job! Can you provide us with a fix? :)
Not yet, I'm trying to find a solution fix this too.
I found one solution now.
ScopedHandle token;
CreateRestrictedToken(USER_LIMITED, INTEGRITY_LEVEL_LOW, PRIMARY, true, &token);
STARTUPINFO sa = {sizeof(sa)};
sa.lpDesktop = TEXT("Winsta0\\default"); // this line is optional if you are not running in windows service
CreateProcessAsUser(token.Get(), lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, &sa, lpProcessInformation);
// job
https://chromium.googlesource.com/chromium/src.git/+/66.0.3329.3/sandbox/win/src/restricted_token_utils.cc#54
Without setting lpDesktop of startup info, you will get incorrect when running java in windows service.
What changes do you suggest here: https://github.com/NikolayIT/OpenJudgeSystem/blob/38fbf8de04954514ab9f45549df3d002363b3392/Open%20Judge%20System/Workers/OJS.Workers.Executors/Process/RestrictedProcess.cs#L351
if (!NativeMethods.CreateRestrictedToken(
processToken,
SANDBOX_INERT | DISABLE_MAX_PRIVILEGE,
?, // Disable SID
?, // all sids in the token except Users("S-1-5-32-545"), Everyone("S-1-1-0"), Interactive("S-1-5-4")
0, // Delete privilege
null, // these two are ignored if DISABLE_MAX_PRIVILEGE is specified
4, // Restricted SID
?, // Users, Everyone, restrict code("S-1-5-12"), login sid
out restrictedToken))
https://github.com/NikolayIT/OpenJudgeSystem/blob/38fbf8de04954514ab9f45549df3d002363b3392/Open%20Judge%20System/Workers/OJS.Workers.Executors/Process/RestrictedProcess.cs#L365-L374
Hello, I think simple System.Diagnostics.Process.GetCurrentProcess().Kill(); in C# could kill Judje,but i am good man and i will not try this. (but what you will do if i succses?)
You can not allow Process.Kill method it maybe will help.And this is working.