Skip to content

NevermindExpress/rundll64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rundll64

rundll64 is an arbitrary DLL procedure calling utility that is inspired by rundll32 but designed as a much more flexible and advanced alternative.

rundll64 user32.dll MessageBoxW ptr:0 wstr:"Hello From Hell!" wstr:"Called by rundll64" 0x10

Features

  • Call arbitrary exported functions by name without any signature limitations
  • Supports multiple argument types (integers and pointers, floats, wide and narrow strings)
  • No external dependencies, ready to build and run with Visual Studio

Platform Support

  • x64 Windows calling convention
  • x86 __cdecl and __stdcall.

Syntax Cheat Sheet

rundll64 <nameof.dll> [convention] <function> [type1:][value1] [type2:][value2] ...

Warning

  • No function signature verification is done by this utility. Failing to call with conformance to function's signature will cause crashes.
  • Integer and floating point arguments are native word size (i.e. 8 bytes on x64 (int64_t/double), 4 bytes on x86 (int32_t/float)

Convention

  • On x64, Microsoft x64 calling convention is always used and this parameter is ignored.
  • On x86, __cdecl is used if no convention is given. Possible options are:
    • __cdecl (used by C standard library and most external libraries)
    • __stdcall (used by Windows API)

Types

  • If no type is explicitly given:
    • 0xDEAD and 1234 will be treated as integers
    • 3.14 will be treated as a floating point number
    • "Text" and Text will be treated as narrow strings.
  • Possible types of parameters:
    • int: integers (i.e. int:1234, int:0xFFFFFFFF)
    • ptr: pointer (i.e. ptr:1234, ptr:0xFFFFFFFF)
      • Essentially same as the integer.
    • f: float (i.e. f:3.14)
    • wstr: Wide char strings (i.e. wstr:"Text with spaces", wstr:TextWithoutSpaces, wstr:öçşığü)
    • str: Narrow char strings (i.e. str:"Text with spaces", str:TextWithoutSpaces)
      • Console takes command line arguments as Unicode and converts it to UTF-8 narrow string before passing to the program
      • When using Win32 functions, prefer Unicode versions as their ANSI counterparts will not give desired results.

About

Arbitrary DLL procedure calling utility inspired by rundll32

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors