Assets / Implants

What is an Asset?

A collection of plugins created to support an implant for HardHat C2 should include the main implant code in whatever language is desired and c# plugins to add relevant information to the team server and client.

What Languages can an Asset be in?

The TeamServer and Client plugin content must be C#, but the source of the Asset itself can be in any language that can send JSON data to HardHat.

How Much C# Is Required?

Very little C# code is required. Check out the https://github.com/HardHatToolbox/Asset-Development repo for premade templates and https://github.com/HardHatToolbox/Rivet for an idea of the bare minimum needed to get an Asset talking to HardHat.

Most of the required C# is already created via the templates, but code is required to set the content of any special Pre/Post processing, any special client-side validation of commands, and to handle build requests for your Assets on the team server.

How Can I Make an Asset?

Check out the Asset Creation Guide page, or visit https://github.com/HardHatToolbox/Asset-Development to get started in as little as three commands.

What Can I Do with an Asset and Its Plugins?

Currently, the provided templates expose almost all of the overridable functions. If you want to change the desired functionality of a function or just have it route to some custom code before going to the base implementation, that is possible by replacing the template source. However, only premade functions can be called, so if you need a new function, you will have to pick one of the premade ones to call your function during its execution. This also means currently, plugins can only override functions provided by the default implementation and must utilize default types such as ExtImplant or ExtTaskResponse.

Allowing more freedom in plugin development to create custom types and hook function calls to increase control over dataflow is planned for Alpha 0.4 with the Interactions System.

Last updated