Custom splash guide
What is the custom splash for the kernel?
The custom splash is an assembly file that loads before the splash is displayed. It allows you to create custom splashes from simple progress bars to complex console art.
[!TIP] To get started to our Kernel Simulator API, visit this page.
Custom splash format
The mods have the file extension of .dll
, and can support more than one code file for each mod. This will allow you to make bigger mods that can't fit on one source file, or if you want to separate some parts of the big source code to multiple fragments.
How to start your own custom splash on Visual Studio?
[!NOTE] We recommend following the template repository for making your own mod here.
If you're going to make your custom splash, follow these steps:
On the Start Page, click on
New Project
Click on
Class Library (.NET Framework)
orClass Library
, select VB or C#, and name your splash. Select Framework as.NET Framework 4.8
or.NET 6.0
. When you're finished, clickCreate
.Right-click on References in the Solution Explorer, and press
Manage NuGet packages...
Go to
Browse
, and findKernel Simulator
and install it.You will see that your KS executable files are added to the references. In your project file, this will be added:
The code will be ready in your SplashName codefile:
Now, follow these steps to create your first mod:
Between the Public Class... and the End Class lines, let Visual Studio know that you're going to create your KS mod by writing:
Implements ISplash
Define properties for mod information by putting below the Implements ISplash: (Change the values as appropriate)
Make your opening splash sub named Opening() that implements the ISplash.Opening, by writing:
Replace every
'Your code below
comment with your code. Repeat this step on all the interface subsMake your display splash sub named Display() that implements the ISplash.Display, by writing:
Make your progress report splash sub named Report() that implements the ISplash.Report, by writing:
Make your closing splash sub named Closing() that implements the ISplash.Closing, by writing:
Right-click on the solution and press Build.
Copy the output
.dll
file to KSSplashes directory in your profile folder (/home/<user>/
in Linux, andUsers\<user>\
in Windows)Run your Kernel Simulator you've just referenced to in your project, and set it to display your splash using the
settings
command. Be sure to reboot the kernel.
Optional Stuff
You can make your subs anywhere on the class, but if:
they're on the different class, make a separate code file for it:
The new subs or functions should meet the following conditions:
They shouldn't make an infinite loop unless you're making them that exits if specified conditions are met
They shouldn't try to cause errors with the kernel.
If you're an exploiter and are making the exploit code for the splash implementation, do so on your test environment first then the production environment, then make your CVE report so we get attention and fix that quickly.
If you're going to add imports, these rules must be met:
Don't import "KS" by itself. KS does that automatically
When importing modules/classes like TextWriterColor, it's written like this:
Imports KS.Misc.Writers.TextWriterColor
Examples
If you want to check out the examples, feel free to check them out in the KSModExamples respository in GitHub.
Last updated