OPERATOR DOCUMENTATION
Operator Documentation
This manual focuses on prerequisites, execution order, safe degradation paths, rollback requirements, and fault isolation that can change the result of an operation.
01
Decide whether this operation requires R0
Browsing ordinary process lists, viewing basic file information, reading most system configuration, viewing logs, and using read-only R3 pages.
Cheat Engine bridging, R3/R0 cross-view, kernel memory and page tables, driver-object evidence, callback operations, protected-process operations, and any feature explicitly marked R0.
The real requirements are that the client can open \\.\KswordARKLog, the current driver supports the target IOCTL, and the required DynData and Capability are ready.
02
The application, driver, profiles, and plugins must come from the same release package
The client classifies some ERROR_INVALID_FUNCTION, ERROR_NOT_SUPPORTED, and ERROR_INVALID_PARAMETER results as an old driver or a missing IOCTL. Mixed versions commonly produce blank pages, Unsupported states, or partial fields instead of a complete startup failure.
- 1Exit KSword, Cheat Engine, and all plugin processes.
A process that still owns a device handle can make you misjudge whether the new driver is active.
- 2Unload the old service before replacing the entire directory.
Do not leave the service ImagePath pointing to a SYS in an old directory.
- 3Start the application from the same directory.
Use the language files, profiles, plugins, and driver from that package.
Basis: old-IOCTL classification and the unified device path in ArkDriverClient.cpp.
03
“Service started” does not mean the driver is usable
- The service exists
- StartService succeeds
- ImagePath points to the correct SYS
\\.\KswordARKLogopens- Protocol and IOCTL versions match
- The required Capability is available
After loading the driver, check Driver Status first and DynData second. Do not begin by repeatedly clicking feature buttons.
Check elevation, service state, signature, SYS path, and device creation. DynData is not yet the issue.
Communication exists, but the SYS lacks the control code. Restore the driver from the same release.
The request reached the driver. Continue with R0 logs, target state, and parameters instead of reinstalling the service.
Basis: DriverClient::open() and deviceIoControl().
04
DynData determines which R0 features can run safely
Loaded means only that the channel exists. Features that depend on kernel structure offsets, global RVAs, function RVAs, or type sizes also require a profile that matches the current kernel identity and is accepted by the driver.
The local profile matches the current module identity; still verify Accepted items and Capability.
Disable only features that depend on those fields. Do not interpret one missing item as total R0 failure.
The application is newer than the driver. Copying a JSON file cannot repair a protocol mismatch.
Do not reuse offsets from a “similar” Windows version. Incorrect offsets may be more dangerous than a safe feature downgrade.
Even the same Windows major version may use a different kernel build and PDB identity.
Basis: matched, accepted, missing, and capability states in KernelDock.DynData.cpp.
05
Cheat Engine must be launched from KSword
The integrated launcher checks the device, configures the bridge DLL, state file, and target PID, and then starts the bundled CE. The Lua bootstrap loads the bridge before opening the target so the first OpenProcess goes through KSword.
OpenProcessVirtualQueryExReadProcessMemoryWriteProcessMemory
- Debugger operations
- Remote threads
- Remote memory allocation
- Page-protection changes
- If the plugin cannot open
\\.\KswordARKLogduring initialization, it refuses to install hooks instead of silently falling back to normal Win32 memory access. - Reads are split into chunks of at most 1 MiB; writes use chunks of at most 256 KiB.
- Writes include
UI_CONFIRMEDonly and never enableFORCEautomatically. - If CE was opened before the driver was loaded, close it and relaunch it from KSword so early handles and enumeration state are rebuilt.
r0_requiredCancel the launch and load the driver in KSword.
bridge_not_readyCE was created but the bridge did not confirm Ready. Close that CE instance and do not continue scanning.
launch_failedThe bundled CE, bridge DLL, or directory structure is incomplete. Re-extract the complete plugin payload.
Basis: CheatEngineExecutablePlugin/LauncherMain.cpp, 10_ksword_bridge.lua, and KswordCeBridge.cpp.
06
Process operations cannot rely on PID alone
KSword identifies processes with PID + creationTime100ns because exited PIDs are reused. A row that has remained on screen for a long time may no longer represent the original process.
- Context-menu and batch actions on an application-group row apply to every real member in the group.
- The friendly application view and parent-child tree show different relationships. Switch back to the parent-child tree before reasoning about process ancestry.
- Do not use PID 0, PID 4, the current KSword process, or critical system processes as write-operation test targets.
- Before hiding a process, record its path, creation time, and original PID. Recovery depends on records maintained by the driver, so do not unload the driver before recovery completes.
- A difference between R3 and R0 enumeration is evidence. Do not delete or hide objects merely to make the lists match.
Basis: process identity, application-group batch actions, and R0 visibility records.
07
A successful read does not mean write requirements are satisfied
Page protection, driver write policy, or target state rejected the write. The CE bridge does not take over VirtualProtectEx and does not enable FORCE automatically.
A chunk was not returned in full. Confirm that the process did not exit or change, then reduce the address range. Do not treat partial data as a complete scan result.
The bridge rejects zero-length, out-of-range, or non-covering regions to prevent an infinite CE loop. Check for mixed driver and client versions first.
Check the corresponding DynData item and Capability instead of only checking Loaded.
- When the target process restarts, old addresses, handles, and scan results are invalid.
- Save the original bytes before making a change.
- For large operations spanning multiple regions, check the actual completed byte count rather than only the function return value.
08
Unlocker does not automatically close every holder
The automatic no-selection unlock path was intentionally removed to avoid closing the wrong process or a related handle. Closing a remote handle can crash the owner, discard unwritten data, or leave it in an abnormal state.
- 1Inspect the file-holder list first.
Verify the process path, PID, creation time, and handle type.
- 2Prefer a normal application exit.
Close a handle only when the owner cannot release it normally.
- 3Handle one confirmed owner at a time.
Refresh the holder list after each action.
- 4Then move, delete, or replace the file.
An empty holder list does not prove that file contents have been safely flushed.
- If mapped-file lookup shows Unsupported, the current driver lacks the interface; it does not prove that no process maps the file.
- Before recovery, deletion, integrity-label changes, or forced operations, copy the original file or record its metadata.
Basis: the manual process-selection safety change in Unlocker and R0 mapped-file queries.
09
Collect evidence before modifying kernel state
Export the current address, owning module, signature, source view, and timestamp first. Refresh after the change instead of reasoning from the old table.
- Callback and module states change. Refresh immediately before the operation and confirm that the target still belongs to the same module.
- Removing callbacks from third-party security drivers can break their internal state. Test only in a rollback-capable virtual machine.
- The driver-debug-output page shows only messages allowed by the active kernel filter. No visible log does not prove that code did not run.
- Preserve Partial and Unsupported states instead of filling missing fields with “normal.”
- Before unloading KswordARK, close CE, stop continuous monitoring, and restore temporary state maintained by the driver.
10
Some network features change system state
Primarily observational. A NIDS alert is not an automatic blocking conclusion; correlate it with connections, processes, and the timeline.
Directly affect active traffic. Record PID, endpoints, and protocol first.
May involve a local proxy, system proxy configuration, and certificate state, so it is not purely read-only.
- Record the current Windows proxy settings before enabling HTTPS analysis.
- When finished, stop the proxy in KSword and verify that the system proxy was restored.
- If browsers lose network access after an abnormal KSword exit, check the system proxy and local listening port first.
- Do not run multiple tools that modify the system proxy at the same time.
11
“Installed successfully” and “runtime protocol works” are different states
- A marketplace package must be downloaded, verified, and extracted completely. The runtime entry is defined by runtime and entrypoint in
plugin.json; a source file is not automatically executable. - Executable plugins report ready, progress, results, and completion through JSON Lines. Raw text or invalid JSON is not converted into structured scan results.
- If the scan page remains in a waiting state, inspect the plugin process, exit code, stderr, and protocol events before repeatedly reopening the UI.
- Cancellation guarantees only that the host starts its terminate or cancel flow. Child processes and external state created by the plugin still require inspection.
- Close running instances before updating a plugin so old DLLs or EXEs are not still locked.
It has independent driver-check, launch, tab, and info commands and maintains a persistent driver session.
Basis: PluginHost.cpp, plugin manifests, and the scan-table protocol.
12
Prepare rollback material before editing the registry, startup entries, services, or disks
Export the target key before editing it. Preserve value type, data, and permissions, not only a screenshot.
Record the original start type, ImagePath, account, and dependencies. Confirm that a service is not a shared driver service before deleting it.
Save the target range or a complete image before any raw-sector write. Do not test writes on the system disk.
- “Optimization” does not mean safe for every machine. Apply changes individually and reboot-test before continuing.
- A successful service stop does not prove that its driver object, device, or filters were cleaned up safely.
- Undoing a disk write depends on saved original bytes, not UI history.
13
R0 changes require a controlled shutdown order
- 1Stop new scans, monitors, and plugin tasks.
Wait for Current Operations to clear or explicitly cancel them.
- 2Close CE and plugins that own KswordARK device handles.
Prevent an old session from calling a driver that is being unloaded.
- 3Restore temporary changes.
This includes hidden processes, proxy settings, test state, and other recoverable system changes.
- 4Export logs and evidence.
Keep the refreshed post-change result together with the pre-change snapshot.
- 5Unload the driver or exit KSword last.
Do not treat driver unload as an automatic rollback for every kernel modification.
14
Map each symptom to the correct layer
Check the device handle, elevation, service, and signature before changing profiles.
Check the feature IOCTL, Missing items, and Capability. The whole driver usually has not failed.
Bridge initialization or delayed openProcess(pid) failed. Close CE and relaunch it from KSword.
The write policy or page conditions are not satisfied. The bridge does not FORCE and does not change page protection.
Refresh the holder list and check for mappings, a second handle, or a newly created process instance.
Check the system proxy, certificate state, and local proxy process before resetting the network stack.
Inspect the manifest entry, exit code, stderr, and JSONL events.
Confirm that the EXE, SYS, profiles, and plugins came from the same release.
Include at least the following in an Issue
The source release for KSword, SYS, plugins, and profiles.
PID, path, creation time, and Windows build.
Device-open result, protocol error, Missing items, and Capability.
Win32 Error, NTSTATUS, event code, and timestamp.
The startup order for the driver, KSword, plugins, and CE, including whether files were replaced during the session.