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

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors