Skip to content

Instantly share code, notes, and snippets.

@alfarom256
Created March 19, 2020 16:55
Show Gist options
  • Save alfarom256/3615e950783f727f19c5d6114addb516 to your computer and use it in GitHub Desktop.
Save alfarom256/3615e950783f727f19c5d6114addb516 to your computer and use it in GitHub Desktop.
Slow the fuck down
#include <Windows.h>
#include <jobapi2.h>
#include <stdlib.h>
// something something don't use iostream
#include <iostream>
#define IF_ERR(x,y) if(x == y) {std::cout<<"Error! : " << GetLastError() << std::endl; exit(-1);}
int main() {
int x;
std::cout << "Enter PID: ";
std::cin >> x;
HANDLE hProc = OpenProcess(PROCESS_SET_QUOTA | PROCESS_TERMINATE | PROCESS_QUERY_LIMITED_INFORMATION, FALSE, x);
IF_ERR(hProc, NULL);
HANDLE hJob = CreateJobObjectW(NULL, L"FUG");
BOOL proc_in_job;
IF_ERR(IsProcessInJob(hProc, hJob, &proc_in_job), 0);
if (proc_in_job)
{
std::cout << "process has a job already... skipping" << std::endl;
exit(0);
}
BOOL assign_success = AssignProcessToJobObject(hJob, hProc);
IF_ERR(assign_success, FALSE);
PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION jcrci = new(JOBOBJECT_CPU_RATE_CONTROL_INFORMATION);
jcrci->ControlFlags = JOB_OBJECT_CPU_RATE_CONTROL_ENABLE | JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP;
jcrci->CpuRate = 1;
BOOL set_info_job_obj = SetInformationJobObject(hJob, JobObjectCpuRateControlInformation, jcrci, sizeof(JOBOBJECT_CPU_RATE_CONTROL_INFORMATION));
IF_ERR(set_info_job_obj, FALSE);
std::cout << "Job CPU set to 0.01%" << std::endl;
// do whatever
Sleep(INFINITE);
// handle your ctl+c here
CloseHandle(hJob);
CloseHandle(hProc);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment