Skip to main content

Integrity Action Status Publish Action Status MIT License Python Versions Package Version security: bandit Code Style: Black

DyCall

Run exported symbols from native libraries

ℹ About

DyCall is a cross platform GUI application which lets you call exported functions from platform-native libraries.

"libraries" refers to dynamic libraries (a.k.a shared objects etc.).

⚡ Features

  • 🔎 Follows platform-specific library search order.
  • 🧹 Automatic export name demangling for native libraries.
  • #️⃣ Support for ordinal-only exports.
  • ↪️ Support for out variables.
  • 💡 Find out export names for non-native libraries as well.
  • 🛠 Standalone demangler for native ABI mangled names.
  • 🔆 Light and dark themes.
  • 📜 Multi-lingual interface. Currently only Hindi and Marathi are supported.

🚲 Getting Started

DyCall requires Python 3.7+ with Tkinter installed.

Install via pip:

python -m pip install dycall

You can run it via:

python -m dycall-gui

You can also install shortcuts (Windows and Linux only):

python -m desktop-app install dycall

This will create shortcuts in Windows start menu or an equivalent place on Linux. You can then run DyCall like any other app, pin it, etc.

To uninstall, first remove any shortcuts if you installed them:

python -m desktop-app uninstall dycall

Then uninstall DyCall via pip:

python -m pip uninstall dycall

▶ Usage

The interface has changed a bit since I recorded this GIF

❔ FAQ

1️⃣ Is it non-blocking?

Yes! Function calls are executed on a separate thread. Although, you cannot close DyCall while a function is running. I don't think that's possible.

2️⃣ How do I pass nullptr or NULL as an argument?

Select Type as void

3️⃣ How do I pass Win32 data types?

Win32 data types are just typedefs to basic C data types.

Use this table below for finding out the correct type to use:

Win32 DyCall
PCSTR, LPCSTR char*
PWSTR, LPCWSTR wchar_t*
BYTE uint8_t
WORD uint16_t
DWORD uint32_t
HANDLE void*

4️⃣ How to pass out variables?

There are no special data types for out parameters, just pass them as normal types, the changed values will be reflected after execution finishes.

5️⃣ How to pass a buffer for an out string?

When using OUT Mode for strings, please ensure that none of the arguments are overwritten to a value whose size/length is greater than that before calling; i.e. input argument size must be equal to or greater than output argument size. If this is not the case, you can fill the out argument value with random data of length you know for sure is greater than what the out string will have. Since DyCall has no mechanism to preallocate string buffers, attempts to read beyond the NULL character will result in memory violation errors and crash DyCall.

6️⃣ How to find an ordinal-only export?

Ordinal-only exports have names starting with an @ followed by the ordinal number.

7️⃣ I want to add/update a translation

Check the Adding Translations section in the contributor's guide.

🚀 Roadmap

  • Automatic call convention detection.
  • Function prototype detection from header files or similar.
  • Use a child process to execute, this ensures more stability.

🤝 Contributing

Please check the contributor's guide.

You can contribute by adding translations, opening issues and filing pull requests. If that cannot be an option for you, you can directly drop an email. All contributions are welcome and acknowledged.

Contributors should also take a note of the Code of Conduct.

© License

DyCall is distributed under the MIT License. See LICENSE for more information.

📧 Contact

E-mail: demberto@protonmail.com

🙏 Acknowledgments

Additional acknowledgements have been made in the code.

Metadata

Release files for dycall 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dycall 0.0.8
File Size Uploaded Provenance
dycall-0.0.8.tar.gz 361.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dycall 0.0.8
File Interpreter ABI Platform
dycall-0.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 445.1 kB

Release files / dycall-0.0.8.tar.gz

Download URL dycall-0.0.8.tar.gz
Size 361.9 kB
Tags Source
SHA-256 checksum
How to use checksums
afe1fd1cf59bd022164f00f8c3857e222cf705568f538537578b5a79ad052864
BLAKE2b-256 checksum
How to use checksums
b2de4ee2e1e8c63bb0b53c5cf01ddb661f1cb5933241dc97e467c85593f6bf39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.11.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release files / dycall-0.0.8-py3-none-any.whl

Download URL dycall-0.0.8-py3-none-any.whl
Size 83.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d6eb66f494a14ab53447051d58a006c4e9c030a0cd40cffb13d0d96fb2c842b6
BLAKE2b-256 checksum
How to use checksums
32fd28f9bceb39927dad6d6e1e643c83f7dab805fa9ac8985ab05bf696da4e75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.11.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Security for dycall 0.0.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page