Naltu: Native DLL Executor

An interactive command-line REPL to load, inspect, and call functions from any native or managed DLL without writing any glue code.

Download Naltu v1.0.0 Get Support

Who I Am

I am an independent developer focused on building low-level engineering tools and diagnostics using C#. Believing software utility should match the clean efficiency found in natural engineering patterns, I design systems built to maximize clarity and execution speed.

What This Project Is About

This platform serves as the digital home and testing distribution hub for my utility projects. Here, you can access compiled releases, explore software technical documentation, or drop me a line directly to discuss binary inspection tooling architectures.

The Desktop App

Call Any DLL Function Live

Naltu is a standalone command-line REPL. Give it a DLL path and a function name, and it calls that function immediately — no project setup, no compilation, no import libraries. It auto-detects whether the DLL is a native binary or a managed .NET assembly and routes accordingly.

  • Auto-detection: Tries to load the file as a .NET assembly first. If that fails, it falls back to native loading via LoadLibraryW.
  • PE export table reader: The exports command parses the PE32/PE32+ export directory directly from disk and lists every exported function name.
  • Typed native calls: Use call funcName sig=int(int,int) 3 7 to call any exported C-ABI function. Supports cdecl and stdcall conventions.
  • Managed .NET reflection: Use invoke TypeName MethodName arg1 arg2 to call any public or private static or instance method.
  • Pass a path on launch: Run Naltu.exe mylib.dll to load a DLL immediately without entering the REPL first.
Download Naltu v1.0.0 (.exe)
Naltu.exe

cmd > load demo.dll

✔ Loaded native DLL → demo.dll

────────────────────────────────────

cmd > exports

1 add 2 subtract

3 greet 4 get_version

────────────────────────────────────

cmd > call add sig=int(int,int) 3 7

✔ Return : 10

────────────────────────────────────

cmd > call greet sig=ptr(str) World

✔ Return : "Hello, World! (from C)"

────────────────────────────────────

cmd > invoke MathHelper Add 3 7

✔ Return: 10

────────────────────────────────────

cmd > unload

✔ Unloaded → demo.dll

All Commands

Every command available in the Naltu REPL, exactly as shown in the built-in help output.

CommandDescription
load <path>Load a native (.dll) or managed .NET DLL. Auto-detects which kind it is. Replaces any currently loaded session.
exports / listFor native DLLs: parses the PE export table and prints every exported function name. For managed assemblies: lists all public types.
infoShows the current session: file path, kind (native or managed), handle address, and type list for managed assemblies.
call <func> [sig=<sig>] [args…]Calls an exported function from a native DLL. Specify the type signature with sig= (default is int()). Arguments follow after. See the Signatures table below for all supported forms.
invoke <Type> <Method> [args…]Invokes a method on a managed .NET assembly by type name and method name. Supports static and instance methods. Arguments are auto-converted to the correct parameter types.
unloadUnloads the current DLL, freeing the native handle or releasing the assembly reference.
clear / clsClears the terminal screen and redraws the Naltu banner.
help / ?Prints the full command reference inline.
exit / quit / qExits the REPL and frees all resources.
--guiLaunches the WinForms GUI interface. Redirects all console output to the GUI output panel. Cannot be used again once already in GUI mode.
[command] --helpShows detailed usage information for a specific command. Example: call --help prints the full signature reference for call.

Call Signatures

The sig= parameter tells Naltu how to marshal arguments and the return value when calling a native function. Format: returnType(paramType,paramType,...)

sig= valueC prototype equivalentNotes
int()int fn(void)Default. No arguments, returns an integer.
void()void fn(void)No arguments, no return value.
ptr()const char* fn(void)No arguments. Return value is read as a null-terminated ASCII string.
int(int)int fn(int a)One integer argument.
int(int,int)int fn(int a, int b)Two integer arguments.
double(double,double)double fn(double a, double b)Two double arguments, returns a double.
ptr(str)const char* fn(const char* s)One string argument (marshalled as LPStr). Return value read as a string.
int(stdcall)int __stdcall fn(void)StdCall calling convention. Used for Win32 API functions like MessageBeep.

Contact & Support

Found an unhandled edge-case exception or want to request a new call signature? Use the instant contact window to dispatch a direct message straight to the core development queue.

Direct Email

codingnatural@gmail.com